Commit b7f1cf9f491f6cefdfc5f651f724331f07cfd6f5

Authored by Dmitriy Zaporozhets
1 parent 42b86b79

Feature tests for deploy keys

features/project/deploy_keys.feature 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +Feature: Project Deploy Keys
  2 + Background:
  3 + Given I sign in as a user
  4 + And I own project "Shop"
  5 +
  6 + Scenario: I should see deploy keys list
  7 + Given project has deploy key
  8 + When I visit project deploy keys page
  9 + Then I should see project deploy keys
  10 +
  11 + Scenario: I add new deploy key
  12 + Given I visit project deploy keys page
  13 + When I click 'New Deploy Key'
  14 + And I submit new deploy key
  15 + Then I should be on deploy keys page
  16 + And I should see newly created deploy key
  17 +
  18 + Scenario: I attach deploy key to project
  19 + Given other project has deploy key
  20 + And I visit project deploy keys page
  21 + When I click attach deploy key
  22 + Then I should be on deploy keys page
  23 + And I should see newly created deploy key
features/steps/project/deploy_keys.rb 0 → 100644
@@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
  1 +class Spinach::Features::ProjectDeployKeys < Spinach::FeatureSteps
  2 + include SharedAuthentication
  3 + include SharedProject
  4 + include SharedPaths
  5 +
  6 + step 'project has deploy key' do
  7 + create(:deploy_keys_project, project: @project)
  8 + end
  9 +
  10 + step 'I should see project deploy keys' do
  11 + within '.enabled-keys' do
  12 + page.should have_content deploy_key.title
  13 + end
  14 + end
  15 +
  16 + step 'I click \'New Deploy Key\'' do
  17 + click_link 'New Deploy Key'
  18 + end
  19 +
  20 + step 'I submit new deploy key' do
  21 + fill_in "deploy_key_title", with: "laptop"
  22 + fill_in "deploy_key_key", with: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzrEJUIR6Y03TCE9rIJ+GqTBvgb8t1jI9h5UBzCLuK4VawOmkLornPqLDrGbm6tcwM/wBrrLvVOqi2HwmkKEIecVO0a64A4rIYScVsXIniHRS6w5twyn1MD3sIbN+socBDcaldECQa2u1dI3tnNVcs8wi77fiRe7RSxePsJceGoheRQgC8AZ510UdIlO+9rjIHUdVN7LLyz512auAfYsgx1OfablkQ/XJcdEwDNgi9imI6nAXhmoKUm1IPLT2yKajTIC64AjLOnE0YyCh6+7RFMpiMyu1qiOCpdjYwTgBRiciNRZCH8xIedyCoAmiUgkUT40XYHwLuwiPJICpkAzp7Q== user@laptop"
  23 + click_button "Create"
  24 + end
  25 +
  26 + step 'I should be on deploy keys page' do
  27 + current_path.should == project_deploy_keys_path(@project)
  28 + end
  29 +
  30 + step 'I should see newly created deploy key' do
  31 + within '.enabled-keys' do
  32 + page.should have_content(deploy_key.title)
  33 + end
  34 + end
  35 +
  36 + step 'other project has deploy key' do
  37 + @second_project = create :project, namespace: current_user.namespace
  38 + create(:deploy_keys_project, project: @second_project)
  39 + end
  40 +
  41 + step 'I click attach deploy key' do
  42 + within '.available-keys' do
  43 + click_link 'Enable'
  44 + end
  45 + end
  46 +
  47 + protected
  48 +
  49 + def deploy_key
  50 + @project.deploy_keys.last
  51 + end
  52 +end
features/steps/shared/paths.rb
1 module SharedPaths 1 module SharedPaths
2 include Spinach::DSL 2 include Spinach::DSL
3 3
4 - When 'I visit new project page' do 4 + step 'I visit new project page' do
5 visit new_project_path 5 visit new_project_path
6 end 6 end
7 7
@@ -9,23 +9,23 @@ module SharedPaths @@ -9,23 +9,23 @@ module SharedPaths
9 # Group 9 # Group
10 # ---------------------------------------- 10 # ----------------------------------------
11 11
12 - When 'I visit group page' do 12 + step 'I visit group page' do
13 visit group_path(current_group) 13 visit group_path(current_group)
14 end 14 end
15 15
16 - When 'I visit group issues page' do 16 + step 'I visit group issues page' do
17 visit issues_group_path(current_group) 17 visit issues_group_path(current_group)
18 end 18 end
19 19
20 - When 'I visit group merge requests page' do 20 + step 'I visit group merge requests page' do
21 visit merge_requests_group_path(current_group) 21 visit merge_requests_group_path(current_group)
22 end 22 end
23 23
24 - When 'I visit group people page' do 24 + step 'I visit group people page' do
25 visit people_group_path(current_group) 25 visit people_group_path(current_group)
26 end 26 end
27 27
28 - When 'I visit group settings page' do 28 + step 'I visit group settings page' do
29 visit edit_group_path(current_group) 29 visit edit_group_path(current_group)
30 end 30 end
31 31
@@ -33,27 +33,27 @@ module SharedPaths @@ -33,27 +33,27 @@ module SharedPaths
33 # Dashboard 33 # Dashboard
34 # ---------------------------------------- 34 # ----------------------------------------
35 35
36 - Given 'I visit dashboard page' do 36 + step 'I visit dashboard page' do
37 visit dashboard_path 37 visit dashboard_path
38 end 38 end
39 39
40 - Given 'I visit dashboard projects page' do 40 + step 'I visit dashboard projects page' do
41 visit projects_dashboard_path 41 visit projects_dashboard_path
42 end 42 end
43 43
44 - Given 'I visit dashboard issues page' do 44 + step 'I visit dashboard issues page' do
45 visit issues_dashboard_path 45 visit issues_dashboard_path
46 end 46 end
47 47
48 - Given 'I visit dashboard merge requests page' do 48 + step 'I visit dashboard merge requests page' do
49 visit merge_requests_dashboard_path 49 visit merge_requests_dashboard_path
50 end 50 end
51 51
52 - Given 'I visit dashboard search page' do 52 + step 'I visit dashboard search page' do
53 visit search_path 53 visit search_path
54 end 54 end
55 55
56 - Given 'I visit dashboard help page' do 56 + step 'I visit dashboard help page' do
57 visit help_path 57 visit help_path
58 end 58 end
59 59
@@ -61,23 +61,23 @@ module SharedPaths @@ -61,23 +61,23 @@ module SharedPaths
61 # Profile 61 # Profile
62 # ---------------------------------------- 62 # ----------------------------------------
63 63
64 - Given 'I visit profile page' do 64 + step 'I visit profile page' do
65 visit profile_path 65 visit profile_path
66 end 66 end
67 67
68 - Given 'I visit profile account page' do 68 + step 'I visit profile account page' do
69 visit account_profile_path 69 visit account_profile_path
70 end 70 end
71 71
72 - Given 'I visit profile SSH keys page' do 72 + step 'I visit profile SSH keys page' do
73 visit keys_path 73 visit keys_path
74 end 74 end
75 75
76 - Given 'I visit profile design page' do 76 + step 'I visit profile design page' do
77 visit design_profile_path 77 visit design_profile_path
78 end 78 end
79 79
80 - Given 'I visit profile history page' do 80 + step 'I visit profile history page' do
81 visit history_profile_path 81 visit history_profile_path
82 end 82 end
83 83
@@ -85,35 +85,35 @@ module SharedPaths @@ -85,35 +85,35 @@ module SharedPaths
85 # Admin 85 # Admin
86 # ---------------------------------------- 86 # ----------------------------------------
87 87
88 - Given 'I visit admin page' do 88 + step 'I visit admin page' do
89 visit admin_root_path 89 visit admin_root_path
90 end 90 end
91 91
92 - Given 'I visit admin projects page' do 92 + step 'I visit admin projects page' do
93 visit admin_projects_path 93 visit admin_projects_path
94 end 94 end
95 95
96 - Given 'I visit admin users page' do 96 + step 'I visit admin users page' do
97 visit admin_users_path 97 visit admin_users_path
98 end 98 end
99 99
100 - Given 'I visit admin logs page' do 100 + step 'I visit admin logs page' do
101 visit admin_logs_path 101 visit admin_logs_path
102 end 102 end
103 103
104 - Given 'I visit admin hooks page' do 104 + step 'I visit admin hooks page' do
105 visit admin_hooks_path 105 visit admin_hooks_path
106 end 106 end
107 107
108 - Given 'I visit admin Resque page' do 108 + step 'I visit admin Resque page' do
109 visit admin_resque_path 109 visit admin_resque_path
110 end 110 end
111 111
112 - And 'I visit admin groups page' do 112 + step 'I visit admin groups page' do
113 visit admin_groups_path 113 visit admin_groups_path
114 end 114 end
115 115
116 - When 'I visit admin teams page' do 116 + step 'I visit admin teams page' do
117 visit admin_teams_path 117 visit admin_teams_path
118 end 118 end
119 119
@@ -121,145 +121,149 @@ module SharedPaths @@ -121,145 +121,149 @@ module SharedPaths
121 # Generic Project 121 # Generic Project
122 # ---------------------------------------- 122 # ----------------------------------------
123 123
124 - Given "I visit my project's home page" do 124 + step "I visit my project's home page" do
125 visit project_path(@project) 125 visit project_path(@project)
126 end 126 end
127 127
128 - Given "I visit my project's settings page" do 128 + step "I visit my project's settings page" do
129 visit edit_project_path(@project) 129 visit edit_project_path(@project)
130 end 130 end
131 131
132 - Given "I visit my project's files page" do 132 + step "I visit my project's files page" do
133 visit project_tree_path(@project, root_ref) 133 visit project_tree_path(@project, root_ref)
134 end 134 end
135 135
136 - Given "I visit my project's commits page" do 136 + step "I visit my project's commits page" do
137 visit project_commits_path(@project, root_ref, {limit: 5}) 137 visit project_commits_path(@project, root_ref, {limit: 5})
138 end 138 end
139 139
140 - Given "I visit my project's commits page for a specific path" do 140 + step "I visit my project's commits page for a specific path" do
141 visit project_commits_path(@project, root_ref + "/app/models/project.rb", {limit: 5}) 141 visit project_commits_path(@project, root_ref + "/app/models/project.rb", {limit: 5})
142 end 142 end
143 143
144 - Given 'I visit my projects commits stats page' do 144 + step 'I visit my projects commits stats page' do
145 visit stats_project_repository_path(@project) 145 visit stats_project_repository_path(@project)
146 end 146 end
147 147
148 - Given "I visit my project's network page" do 148 + step "I visit my project's network page" do
149 # Stub Graph max_size to speed up test (10 commits vs. 650) 149 # Stub Graph max_size to speed up test (10 commits vs. 650)
150 Network::Graph.stub(max_count: 10) 150 Network::Graph.stub(max_count: 10)
151 151
152 visit project_graph_path(@project, root_ref) 152 visit project_graph_path(@project, root_ref)
153 end 153 end
154 154
155 - Given "I visit my project's issues page" do 155 + step "I visit my project's issues page" do
156 visit project_issues_path(@project) 156 visit project_issues_path(@project)
157 end 157 end
158 158
159 - Given "I visit my project's merge requests page" do 159 + step "I visit my project's merge requests page" do
160 visit project_merge_requests_path(@project) 160 visit project_merge_requests_path(@project)
161 end 161 end
162 162
163 - Given "I visit my project's wall page" do 163 + step "I visit my project's wall page" do
164 visit project_wall_path(@project) 164 visit project_wall_path(@project)
165 end 165 end
166 166
167 - Given "I visit my project's wiki page" do 167 + step "I visit my project's wiki page" do
168 visit project_wiki_path(@project, :home) 168 visit project_wiki_path(@project, :home)
169 end 169 end
170 170
171 - When 'I visit project hooks page' do 171 + step 'I visit project hooks page' do
172 visit project_hooks_path(@project) 172 visit project_hooks_path(@project)
173 end 173 end
174 174
  175 + step 'I visit project deploy keys page' do
  176 + visit project_deploy_keys_path(@project)
  177 + end
  178 +
175 # ---------------------------------------- 179 # ----------------------------------------
176 # "Shop" Project 180 # "Shop" Project
177 # ---------------------------------------- 181 # ----------------------------------------
178 182
179 - And 'I visit project "Shop" page' do 183 + step 'I visit project "Shop" page' do
180 visit project_path(project) 184 visit project_path(project)
181 end 185 end
182 186
183 - When 'I visit edit project "Shop" page' do 187 + step 'I visit edit project "Shop" page' do
184 visit edit_project_path(project) 188 visit edit_project_path(project)
185 end 189 end
186 190
187 - Given 'I visit project branches page' do 191 + step 'I visit project branches page' do
188 visit branches_project_repository_path(@project) 192 visit branches_project_repository_path(@project)
189 end 193 end
190 194
191 - Given 'I visit compare refs page' do 195 + step 'I visit compare refs page' do
192 visit project_compare_index_path(@project) 196 visit project_compare_index_path(@project)
193 end 197 end
194 198
195 - Given 'I visit project commits page' do 199 + step 'I visit project commits page' do
196 visit project_commits_path(@project, root_ref, {limit: 5}) 200 visit project_commits_path(@project, root_ref, {limit: 5})
197 end 201 end
198 202
199 - Given 'I visit project commits page for stable branch' do 203 + step 'I visit project commits page for stable branch' do
200 visit project_commits_path(@project, 'stable', {limit: 5}) 204 visit project_commits_path(@project, 'stable', {limit: 5})
201 end 205 end
202 206
203 - Given 'I visit project source page' do 207 + step 'I visit project source page' do
204 visit project_tree_path(@project, root_ref) 208 visit project_tree_path(@project, root_ref)
205 end 209 end
206 210
207 - Given 'I visit blob file from repo' do 211 + step 'I visit blob file from repo' do
208 visit project_blob_path(@project, File.join(ValidCommit::ID, ValidCommit::BLOB_FILE_PATH)) 212 visit project_blob_path(@project, File.join(ValidCommit::ID, ValidCommit::BLOB_FILE_PATH))
209 end 213 end
210 214
211 - Given 'I visit project source page for "8470d70"' do 215 + step 'I visit project source page for "8470d70"' do
212 visit project_tree_path(@project, "8470d70") 216 visit project_tree_path(@project, "8470d70")
213 end 217 end
214 218
215 - Given 'I visit project tags page' do 219 + step 'I visit project tags page' do
216 visit tags_project_repository_path(@project) 220 visit tags_project_repository_path(@project)
217 end 221 end
218 222
219 - Given 'I visit project commit page' do 223 + step 'I visit project commit page' do
220 visit project_commit_path(@project, ValidCommit::ID) 224 visit project_commit_path(@project, ValidCommit::ID)
221 end 225 end
222 226
223 - And 'I visit project "Shop" issues page' do 227 + step 'I visit project "Shop" issues page' do
224 visit project_issues_path(project) 228 visit project_issues_path(project)
225 end 229 end
226 230
227 - Given 'I visit issue page "Release 0.4"' do 231 + step 'I visit issue page "Release 0.4"' do
228 issue = Issue.find_by_title("Release 0.4") 232 issue = Issue.find_by_title("Release 0.4")
229 visit project_issue_path(issue.project, issue) 233 visit project_issue_path(issue.project, issue)
230 end 234 end
231 235
232 - Given 'I visit project "Shop" labels page' do 236 + step 'I visit project "Shop" labels page' do
233 visit project_labels_path(project) 237 visit project_labels_path(project)
234 end 238 end
235 239
236 - Given 'I visit merge request page "Bug NS-04"' do 240 + step 'I visit merge request page "Bug NS-04"' do
237 mr = MergeRequest.find_by_title("Bug NS-04") 241 mr = MergeRequest.find_by_title("Bug NS-04")
238 visit project_merge_request_path(mr.project, mr) 242 visit project_merge_request_path(mr.project, mr)
239 end 243 end
240 244
241 - Given 'I visit merge request page "Bug NS-05"' do 245 + step 'I visit merge request page "Bug NS-05"' do
242 mr = MergeRequest.find_by_title("Bug NS-05") 246 mr = MergeRequest.find_by_title("Bug NS-05")
243 visit project_merge_request_path(mr.project, mr) 247 visit project_merge_request_path(mr.project, mr)
244 end 248 end
245 249
246 - And 'I visit project "Shop" merge requests page' do 250 + step 'I visit project "Shop" merge requests page' do
247 visit project_merge_requests_path(project) 251 visit project_merge_requests_path(project)
248 end 252 end
249 253
250 - Given 'I visit project "Shop" milestones page' do 254 + step 'I visit project "Shop" milestones page' do
251 visit project_milestones_path(project) 255 visit project_milestones_path(project)
252 end 256 end
253 257
254 - Then 'I visit project "Shop" team page' do 258 + step 'I visit project "Shop" team page' do
255 visit project_team_index_path(project) 259 visit project_team_index_path(project)
256 end 260 end
257 261
258 - Then 'I visit project "Shop" wall page' do 262 + step 'I visit project "Shop" wall page' do
259 visit project_wall_path(project) 263 visit project_wall_path(project)
260 end 264 end
261 265
262 - Given 'I visit project wiki page' do 266 + step 'I visit project wiki page' do
263 visit project_wiki_path(@project, :home) 267 visit project_wiki_path(@project, :home)
264 end 268 end
265 269
@@ -267,7 +271,7 @@ module SharedPaths @@ -267,7 +271,7 @@ module SharedPaths
267 # Public Projects 271 # Public Projects
268 # ---------------------------------------- 272 # ----------------------------------------
269 273
270 - Given 'I visit the public projects area' do 274 + step 'I visit the public projects area' do
271 visit public_root_path 275 visit public_root_path
272 end 276 end
273 277