profile.rb 5.11 KB
Newer Older
1
class Spinach::Features::Profile < Spinach::FeatureSteps
Nihad Abbasov's avatar
Nihad Abbasov committed
2 3
  include SharedAuthentication
  include SharedPaths
4

5
  step 'I should see my profile info' do
6
    page.should have_content "Profile settings"
7 8
  end

Jerome Dalbert's avatar
Jerome Dalbert committed
9
  step 'I change my profile info' do
10 11 12
    fill_in "user_skype", with: "testskype"
    fill_in "user_linkedin", with: "testlinkedin"
    fill_in "user_twitter", with: "testtwitter"
Jerome Dalbert's avatar
Jerome Dalbert committed
13
    fill_in "user_website_url", with: "testurl"
14
    click_button "Save changes"
15 16 17
    @user.reload
  end

Jerome Dalbert's avatar
Jerome Dalbert committed
18
  step 'I should see new profile info' do
19 20 21
    @user.skype.should == 'testskype'
    @user.linkedin.should == 'testlinkedin'
    @user.twitter.should == 'testtwitter'
Jerome Dalbert's avatar
Jerome Dalbert committed
22
    @user.website_url.should == 'testurl'
23 24
  end

25 26 27 28 29 30 31 32 33 34 35
  step 'I change my avatar' do
    attach_file(:user_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
    click_button "Save changes"
    @user.reload
  end

  step 'I should see new avatar' do
    @user.avatar.should be_instance_of AttachmentUploader
    @user.avatar.url.should == "/uploads/user/avatar/#{ @user.id }/gitlab_logo.png"
  end

36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
  step 'I should see the "Remove avatar" button' do
    page.should have_link("Remove avatar")
  end

  step 'I have an avatar' do
    attach_file(:user_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
    click_button "Save changes"
    @user.reload
  end

  step 'I remove my avatar' do
    click_link "Remove avatar"
    @user.reload
  end

  step 'I should see my gravatar' do
    @user.avatar?.should be_false
  end

  step 'I should not see the "Remove avatar" button' do
    page.should_not have_link("Remove avatar")
  end

59 60
  step 'I try change my password w/o old one' do
    within '.update-password' do
61 62
      fill_in "user_password", with: "22233344"
      fill_in "user_password_confirmation", with: "22233344"
63 64 65 66
      click_button "Save"
    end
  end

67
  step 'I change my password' do
68
    within '.update-password' do
69 70 71
      fill_in "user_current_password", with: "12345678"
      fill_in "user_password", with: "22233344"
      fill_in "user_password_confirmation", with: "22233344"
72 73
      click_button "Save"
    end
74 75
  end

76
  step 'I unsuccessfully change my password' do
77
    within '.update-password' do
78
      fill_in "user_current_password", with: "12345678"
79 80 81 82
      fill_in "user_password", with: "password"
      fill_in "user_password_confirmation", with: "confirmation"
      click_button "Save"
    end
83 84
  end

85 86 87 88
  step "I should see a missing password error message" do
    page.should have_content "You must provide a valid current password"
  end

89
  step "I should see a password error message" do
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
90
    page.should have_content "Password confirmation doesn't match"
91 92
  end

93
  step 'I reset my token' do
94 95 96 97
    within '.update-token' do
      @old_token = @user.private_token
      click_button "Reset"
    end
98 99
  end

100
  step 'I should see new token' do
101 102 103
    find("#token").value.should_not == @old_token
    find("#token").value.should == @user.reload.private_token
  end
randx's avatar
randx committed
104

105
  step 'I have activity' do
106
    create(:closed_issue_event, author: current_user)
randx's avatar
randx committed
107 108
  end

109
  step 'I should see my activity' do
randx's avatar
randx committed
110 111
    page.should have_content "#{current_user.name} closed issue"
  end
112

113
  step "I change my application theme" do
114 115 116
    within '.application-theme' do
      choose "Violet"
    end
117 118
  end

119
  step "I change my code preview theme" do
120
    within '.code-preview-theme' do
121
      choose "Solarized dark"
122
    end
123 124
  end

125
  step "I should see the theme change immediately" do
126 127 128 129
    page.should have_selector('body.ui_color')
    page.should_not have_selector('body.ui_basic')
  end

130
  step "I should receive feedback that the changes were saved" do
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
131
    page.should have_content("saved")
132
  end
133 134 135 136 137

  step 'my password is expired' do
    current_user.update_attributes(password_expires_at: Time.now - 1.hour)
  end

138 139 140 141 142
  step "I am not an ldap user" do
    current_user.update_attributes(extern_uid: nil,  provider: '')
    current_user.ldap_user?.should be_false
  end

143 144 145 146 147
  step 'I redirected to expired password page' do
    current_path.should == new_profile_password_path
  end

  step 'I submit new password' do
148
    fill_in :user_current_password, with: '12345678'
149 150 151 152 153 154 155 156
    fill_in :user_password, with: '12345678'
    fill_in :user_password_confirmation, with: '12345678'
    click_button "Set new password"
  end

  step 'I redirected to sign in page' do
    current_path.should == new_user_session_path
  end
157

158 159 160 161
  step 'I should be redirected to password page' do
    current_path.should == edit_profile_password_path
  end

162
  step 'I should be redirected to account page' do
163
    current_path.should == profile_account_path
164 165
  end

166 167 168 169 170 171 172 173 174 175 176
  step 'I click on my profile picture' do
    click_link 'profile-pic'
  end

  step 'I should see my user page' do
    page.should have_content "User Activity"

    within '.navbar-gitlab' do
      page.should have_content current_user.name
    end
  end
177 178 179 180 181 182

  step 'I have group with projects' do
    @group   = create(:group)
    @group.add_owner(current_user)
    @project = create(:project, namespace: @group)
    @event   = create(:closed_issue_event, project: @project)
183

184 185 186 187 188 189
    @project.team << [current_user, :master]
  end

  step 'I should see groups I belong to' do
    page.should have_css('.profile-groups-avatars', visible: true)
  end
190
end