summaryrefslogtreecommitdiff
path: root/features/steps/profile/profile.rb
blob: 4ee6784a086f7d3831ebca4f2433437ac9cebf7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
class Spinach::Features::Profile < Spinach::FeatureSteps
  include SharedAuthentication
  include SharedPaths

  step 'I should see my profile info' do
    expect(page).to have_content "This information will appear on your profile"
  end

  step 'I change my profile info' do
    fill_in 'user_skype', with: 'testskype'
    fill_in 'user_linkedin', with: 'testlinkedin'
    fill_in 'user_twitter', with: 'testtwitter'
    fill_in 'user_website_url', with: 'testurl'
    fill_in 'user_location', with: 'Ukraine'
    fill_in 'user_bio', with: 'I <3 GitLab'
    click_button 'Update profile settings'
    @user.reload
  end

  step 'I should see new profile info' do
    expect(@user.skype).to eq 'testskype'
    expect(@user.linkedin).to eq 'testlinkedin'
    expect(@user.twitter).to eq 'testtwitter'
    expect(@user.website_url).to eq 'testurl'
    expect(@user.bio).to eq 'I <3 GitLab'
    expect(find('#user_location').value).to eq 'Ukraine'
  end

  step 'I change my avatar' do
    attach_file(:user_avatar, File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif'))
    click_button "Update profile settings"
    @user.reload
  end

  step 'I should see new avatar' do
    expect(@user.avatar).to be_instance_of AvatarUploader
    expect(@user.avatar.url).to eq "/uploads/user/avatar/#{@user.id}/banana_sample.gif"
  end

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

  step 'I have an avatar' do
    attach_file(:user_avatar, File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif'))
    click_button "Update profile settings"
    @user.reload
  end

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

  step 'I should see my gravatar' do
    expect(@user.avatar?).to eq false
  end

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

  step 'I should see the gravatar host link' do
    expect(page).to have_link("gravatar.com")
  end

  step 'I try change my password w/o old one' do
    page.within '.update-password' do
      fill_in "user_password", with: "22233344"
      fill_in "user_password_confirmation", with: "22233344"
      click_button "Save password"
    end
  end

  step 'I change my password' do
    page.within '.update-password' do
      fill_in "user_current_password", with: "12345678"
      fill_in "user_password", with: "22233344"
      fill_in "user_password_confirmation", with: "22233344"
      click_button "Save password"
    end
  end

  step 'I unsuccessfully change my password' do
    page.within '.update-password' do
      fill_in "user_current_password", with: "12345678"
      fill_in "user_password", with: "password"
      fill_in "user_password_confirmation", with: "confirmation"
      click_button "Save password"
    end
  end

  step "I should see a missing password error message" do
    page.within ".flash-container" do
      expect(page).to have_content "You must provide a valid current password"
    end
  end

  step "I should see a password error message" do
    page.within '.alert-danger' do
      expect(page).to have_content "Password confirmation doesn't match"
    end
  end

  step 'I reset my token' do
    page.within '.private-token' do
      @old_token = @user.private_token
      click_button "Reset private token"
    end
  end

  step 'I should see new token' do
    expect(find("#token").value).not_to eq @old_token
    expect(find("#token").value).to eq @user.reload.private_token
  end

  step 'I have activity' do
    create(:closed_issue_event, author: current_user)
  end

  step 'I should see my activity' do
    expect(page).to have_content "Signed in with standard authentication"
  end

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

  step "I am not an ldap user" do
    current_user.identities.delete
    expect(current_user.ldap_user?).to eq false
  end

  step 'I redirected to expired password page' do
    expect(current_path).to eq new_profile_password_path
  end

  step 'I submit new password' do
    fill_in :user_current_password, with: '12345678'
    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
    expect(current_path).to eq new_user_session_path
  end

  step 'I should be redirected to password page' do
    expect(current_path).to eq edit_profile_password_path
  end

  step 'I should be redirected to account page' do
    expect(current_path).to eq profile_account_path
  end

  step 'I click on my profile picture' do
    find(:css, '.header-user-dropdown-toggle').click

    page.within ".header-user" do
      click_link "Profile"
    end
  end

  step 'I should see my user page' do
    page.within ".cover-block" do
      expect(page).to have_content current_user.name
      expect(page).to have_content current_user.username
    end
  end

  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)

    @project.team << [current_user, :master]
  end

  step 'I should see groups I belong to' do
    page.within ".content" do
      click_link "Groups"
    end

    page.within "#groups" do
      expect(page).to have_content @group.name
    end
  end

  step 'I should see application form' do
    expect(page).to have_content "Add new application"
  end

  step 'I fill application form out and submit' do
    fill_in :doorkeeper_application_name, with: 'test'
    fill_in :doorkeeper_application_redirect_uri, with: 'https://test.com'
    click_on "Save application"
  end

  step 'I see application' do
    expect(page).to have_content "Application: test"
    expect(page).to have_content "Application Id"
    expect(page).to have_content "Secret"
  end

  step 'I click edit' do
    click_on "Edit"
  end

  step 'I see edit application form' do
    expect(page).to have_content "Edit application"
  end

  step 'I change name of application and submit' do
    expect(page).to have_content "Edit application"
    fill_in :doorkeeper_application_name, with: 'test_changed'
    click_on "Save application"
  end

  step 'I see that application was changed' do
    expect(page).to have_content "test_changed"
    expect(page).to have_content "Application Id"
    expect(page).to have_content "Secret"
  end

  step 'I click to remove application' do
    page.within '.oauth-applications' do
      click_on "Destroy"
    end
  end

  step "I see that application is removed" do
    expect(page.find(".oauth-applications")).not_to have_content "test_changed"
  end
end