Commit 22d6dc2b3b1392341c765932b706bd867c66c5f9
1 parent
eb00cb69
Exists in
master
and in
4 other branches
Cucumber features: Team, SSH keys
Showing
11 changed files
with
241 additions
and
87 deletions
Show diff stats
app/views/team_members/_show.html.haml
| 1 | - user = member.user | 1 | - user = member.user |
| 2 | - allow_admin = can? current_user, :admin_project, @project | 2 | - allow_admin = can? current_user, :admin_project, @project |
| 3 | -%tr{:id => dom_id(member), :class => "team_member_row"} | 3 | +%tr{:id => dom_id(member), :class => "team_member_row user_#{user.id}"} |
| 4 | %td | 4 | %td |
| 5 | .right | 5 | .right |
| 6 | - if @project.owner == user | 6 | - if @project.owner == user |
features/profile/ssh_keys.feature
| @@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
| 1 | +Feature: SSH Keys | ||
| 2 | + Background: | ||
| 3 | + Given I signin as a user | ||
| 4 | + And I have ssh keys: | ||
| 5 | + | title | | ||
| 6 | + | Work | | ||
| 7 | + | Home | | ||
| 8 | + And I visit profile keys page | ||
| 9 | + | ||
| 10 | + Scenario: I should see SSH keys | ||
| 11 | + Then I should see my ssh keys | ||
| 12 | + | ||
| 13 | + Scenario: Add new ssh key | ||
| 14 | + Given I click link "Add new" | ||
| 15 | + And I submit new ssh key "Laptop" | ||
| 16 | + Then I should see new ssh key "Laptop" | ||
| 17 | + | ||
| 18 | + Scenario: Remove ssh key | ||
| 19 | + Given I click link "Work" | ||
| 20 | + And I click link "Remove" | ||
| 21 | + Then I visit profile keys page | ||
| 22 | + And I should not see "Work" ssh key |
features/projects/team_management.feature
| @@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
| 1 | +Feature: Project Team management | ||
| 2 | + Background: | ||
| 3 | + Given I signin as a user | ||
| 4 | + And I own project "Shop" | ||
| 5 | + And gitlab user "Mike" | ||
| 6 | + And gitlab user "Sam" | ||
| 7 | + And "Sam" is "Shop" developer | ||
| 8 | + And I visit project "Shop" team page | ||
| 9 | + | ||
| 10 | + Scenario: See all team members | ||
| 11 | + Then I should be able to see myself in team | ||
| 12 | + And I should see "Sam" in team list | ||
| 13 | + | ||
| 14 | + Scenario: Add user to project | ||
| 15 | + Given I click link "New Team Member" | ||
| 16 | + And I select "Mike" as "Reporter" | ||
| 17 | + Then I should see "Mike" in team list as "Reporter" | ||
| 18 | + | ||
| 19 | + @javascript | ||
| 20 | + Scenario: Update user access | ||
| 21 | + Given I should see "Sam" in team list as "Developer" | ||
| 22 | + And I change "Sam" role to "Reporter" | ||
| 23 | + Then I visit project "Shop" team page | ||
| 24 | + And I should see "Sam" in team list as "Reporter" | ||
| 25 | + | ||
| 26 | + Scenario: View team member profile | ||
| 27 | + Given I click link "Sam" | ||
| 28 | + Then I should see "Sam" team profile | ||
| 29 | + | ||
| 30 | + Scenario: Cancel team member | ||
| 31 | + Given I click link "Sam" | ||
| 32 | + And I click link "Remove from team" | ||
| 33 | + Then I visit project "Shop" team page | ||
| 34 | + And I should not see "Sam" in team list | ||
| 35 | + |
features/step_definitions/commits_steps.rb
| @@ -1,61 +0,0 @@ | @@ -1,61 +0,0 @@ | ||
| 1 | -Given /^I visit project commits page$/ do | ||
| 2 | - visit project_commits_path(@project) | ||
| 3 | -end | ||
| 4 | - | ||
| 5 | -Then /^I see project commits$/ do | ||
| 6 | - current_path.should == project_commits_path(@project) | ||
| 7 | - | ||
| 8 | - commit = @project.commit | ||
| 9 | - page.should have_content(@project.name) | ||
| 10 | - page.should have_content(commit.message) | ||
| 11 | - page.should have_content(commit.id.to_s[0..5]) | ||
| 12 | -end | ||
| 13 | - | ||
| 14 | -Given /^I click atom feed link$/ do | ||
| 15 | - click_link "Feed" | ||
| 16 | -end | ||
| 17 | - | ||
| 18 | -Then /^I see commits atom feed$/ do | ||
| 19 | - commit = @project.commit | ||
| 20 | - page.response_headers['Content-Type'].should have_content("application/atom+xml") | ||
| 21 | - page.body.should have_selector("title", :text => "Recent commits to #{@project.name}") | ||
| 22 | - page.body.should have_selector("author email", :text => commit.author_email) | ||
| 23 | - page.body.should have_selector("entry summary", :text => commit.message) | ||
| 24 | -end | ||
| 25 | - | ||
| 26 | -Given /^I click on commit link$/ do | ||
| 27 | - visit project_commit_path(@project, ValidCommit::ID) | ||
| 28 | -end | ||
| 29 | - | ||
| 30 | -Then /^I see commit info$/ do | ||
| 31 | - page.should have_content ValidCommit::MESSAGE | ||
| 32 | - page.should have_content "Showing 1 changed file" | ||
| 33 | -end | ||
| 34 | - | ||
| 35 | -Given /^I visit compare refs page$/ do | ||
| 36 | - visit compare_project_commits_path(@project) | ||
| 37 | -end | ||
| 38 | - | ||
| 39 | -Given /^I fill compare fields with refs$/ do | ||
| 40 | - fill_in "from", :with => "master" | ||
| 41 | - fill_in "to", :with => "stable" | ||
| 42 | - click_button "Compare" | ||
| 43 | -end | ||
| 44 | - | ||
| 45 | -Given /^I see compared refs$/ do | ||
| 46 | - page.should have_content "Commits (27)" | ||
| 47 | - page.should have_content "Compare View" | ||
| 48 | - page.should have_content "Showing 73 changed files" | ||
| 49 | -end | ||
| 50 | - | ||
| 51 | -Given /^I visit project branches page$/ do | ||
| 52 | - visit branches_project_repository_path(@project) | ||
| 53 | -end | ||
| 54 | - | ||
| 55 | -Given /^I visit project commit page$/ do | ||
| 56 | - visit project_commit_path(@project, ValidCommit::ID) | ||
| 57 | -end | ||
| 58 | - | ||
| 59 | -Given /^I visit project tags page$/ do | ||
| 60 | - visit tags_project_repository_path(@project) | ||
| 61 | -end |
features/step_definitions/dashboard_steps.rb
| @@ -47,7 +47,7 @@ Then /^I should see last push widget$/ do | @@ -47,7 +47,7 @@ Then /^I should see last push widget$/ do | ||
| 47 | end | 47 | end |
| 48 | 48 | ||
| 49 | Then /^I click "(.*?)" link$/ do |arg1| | 49 | Then /^I click "(.*?)" link$/ do |arg1| |
| 50 | - click_link "Create Merge Request" | 50 | + click_link arg1 #Create Merge Request" |
| 51 | end | 51 | end |
| 52 | 52 | ||
| 53 | Then /^I see prefilled new Merge Request page$/ do | 53 | Then /^I see prefilled new Merge Request page$/ do |
| @@ -0,0 +1,34 @@ | @@ -0,0 +1,34 @@ | ||
| 1 | +Given /^I visit profile keys page$/ do | ||
| 2 | + visit keys_path | ||
| 3 | +end | ||
| 4 | + | ||
| 5 | +Then /^I should see my ssh keys$/ do | ||
| 6 | + @user.keys.each do |key| | ||
| 7 | + page.should have_content(key.title) | ||
| 8 | + end | ||
| 9 | +end | ||
| 10 | + | ||
| 11 | +Given /^I have ssh keys:$/ do |table| | ||
| 12 | + table.hashes.each do |row| | ||
| 13 | + Factory :key, :user => @user, :title => row[:title], :key => "jfKLJDFKSFJSHFJ#{row[:title]}" | ||
| 14 | + end | ||
| 15 | +end | ||
| 16 | + | ||
| 17 | +Given /^I submit new ssh key "(.*?)"$/ do |arg1| | ||
| 18 | + fill_in "key_title", :with => arg1 | ||
| 19 | + fill_in "key_key", :with => "publickey234=" | ||
| 20 | + click_button "Save" | ||
| 21 | +end | ||
| 22 | + | ||
| 23 | +Then /^I should see new ssh key "(.*?)"$/ do |arg1| | ||
| 24 | + key = Key.find_by_title(arg1) | ||
| 25 | + page.should have_content(key.title) | ||
| 26 | + page.should have_content(key.key) | ||
| 27 | + current_path.should == key_path(key) | ||
| 28 | +end | ||
| 29 | + | ||
| 30 | +Then /^I should not see "(.*?)" ssh key$/ do |arg1| | ||
| 31 | + within "#keys-table" do | ||
| 32 | + page.should_not have_content(arg1) | ||
| 33 | + end | ||
| 34 | +end |
| @@ -0,0 +1,61 @@ | @@ -0,0 +1,61 @@ | ||
| 1 | +Given /^I visit project commits page$/ do | ||
| 2 | + visit project_commits_path(@project) | ||
| 3 | +end | ||
| 4 | + | ||
| 5 | +Then /^I see project commits$/ do | ||
| 6 | + current_path.should == project_commits_path(@project) | ||
| 7 | + | ||
| 8 | + commit = @project.commit | ||
| 9 | + page.should have_content(@project.name) | ||
| 10 | + page.should have_content(commit.message) | ||
| 11 | + page.should have_content(commit.id.to_s[0..5]) | ||
| 12 | +end | ||
| 13 | + | ||
| 14 | +Given /^I click atom feed link$/ do | ||
| 15 | + click_link "Feed" | ||
| 16 | +end | ||
| 17 | + | ||
| 18 | +Then /^I see commits atom feed$/ do | ||
| 19 | + commit = @project.commit | ||
| 20 | + page.response_headers['Content-Type'].should have_content("application/atom+xml") | ||
| 21 | + page.body.should have_selector("title", :text => "Recent commits to #{@project.name}") | ||
| 22 | + page.body.should have_selector("author email", :text => commit.author_email) | ||
| 23 | + page.body.should have_selector("entry summary", :text => commit.message) | ||
| 24 | +end | ||
| 25 | + | ||
| 26 | +Given /^I click on commit link$/ do | ||
| 27 | + visit project_commit_path(@project, ValidCommit::ID) | ||
| 28 | +end | ||
| 29 | + | ||
| 30 | +Then /^I see commit info$/ do | ||
| 31 | + page.should have_content ValidCommit::MESSAGE | ||
| 32 | + page.should have_content "Showing 1 changed file" | ||
| 33 | +end | ||
| 34 | + | ||
| 35 | +Given /^I visit compare refs page$/ do | ||
| 36 | + visit compare_project_commits_path(@project) | ||
| 37 | +end | ||
| 38 | + | ||
| 39 | +Given /^I fill compare fields with refs$/ do | ||
| 40 | + fill_in "from", :with => "master" | ||
| 41 | + fill_in "to", :with => "stable" | ||
| 42 | + click_button "Compare" | ||
| 43 | +end | ||
| 44 | + | ||
| 45 | +Given /^I see compared refs$/ do | ||
| 46 | + page.should have_content "Commits (27)" | ||
| 47 | + page.should have_content "Compare View" | ||
| 48 | + page.should have_content "Showing 73 changed files" | ||
| 49 | +end | ||
| 50 | + | ||
| 51 | +Given /^I visit project branches page$/ do | ||
| 52 | + visit branches_project_repository_path(@project) | ||
| 53 | +end | ||
| 54 | + | ||
| 55 | +Given /^I visit project commit page$/ do | ||
| 56 | + visit project_commit_path(@project, ValidCommit::ID) | ||
| 57 | +end | ||
| 58 | + | ||
| 59 | +Given /^I visit project tags page$/ do | ||
| 60 | + visit tags_project_repository_path(@project) | ||
| 61 | +end |
| @@ -0,0 +1,63 @@ | @@ -0,0 +1,63 @@ | ||
| 1 | +Given /^gitlab user "(.*?)"$/ do |arg1| | ||
| 2 | + Factory :user, :name => arg1 | ||
| 3 | +end | ||
| 4 | + | ||
| 5 | +Given /^"(.*?)" is "(.*?)" developer$/ do |arg1, arg2| | ||
| 6 | + user = User.find_by_name(arg1) | ||
| 7 | + project = Project.find_by_name(arg2) | ||
| 8 | + project.add_access(user, :write) | ||
| 9 | +end | ||
| 10 | + | ||
| 11 | +Given /^I visit project "(.*?)" team page$/ do |arg1| | ||
| 12 | + visit team_project_path(Project.find_by_name(arg1)) | ||
| 13 | +end | ||
| 14 | + | ||
| 15 | +Then /^I should be able to see myself in team$/ do | ||
| 16 | + page.should have_content(@user.name) | ||
| 17 | + page.should have_content(@user.email) | ||
| 18 | +end | ||
| 19 | + | ||
| 20 | +Then /^I should see "(.*?)" in team list$/ do |arg1| | ||
| 21 | + user = User.find_by_name(arg1) | ||
| 22 | + page.should have_content(user.name) | ||
| 23 | + page.should have_content(user.email) | ||
| 24 | +end | ||
| 25 | + | ||
| 26 | +Given /^I click link "(.*?)"$/ do |arg1| | ||
| 27 | + click_link arg1 | ||
| 28 | +end | ||
| 29 | + | ||
| 30 | +Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2| | ||
| 31 | + user = User.find_by_name(arg1) | ||
| 32 | + within "#new_team_member" do | ||
| 33 | + select user.name, :from => "team_member_user_id" | ||
| 34 | + select arg2, :from => "team_member_project_access" | ||
| 35 | + end | ||
| 36 | + click_button "Save" | ||
| 37 | +end | ||
| 38 | + | ||
| 39 | +Then /^I should see "(.*?)" in team list as "(.*?)"$/ do |arg1, arg2| | ||
| 40 | + user = User.find_by_name(arg1) | ||
| 41 | + role_id = find(".user_#{user.id} #team_member_project_access").value | ||
| 42 | + role_id.should == UsersProject.access_roles[arg2].to_s | ||
| 43 | +end | ||
| 44 | + | ||
| 45 | +Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2| | ||
| 46 | + user = User.find_by_name(arg1) | ||
| 47 | + within ".user_#{user.id}" do | ||
| 48 | + select arg2, :from => "team_member_project_access" | ||
| 49 | + end | ||
| 50 | +end | ||
| 51 | + | ||
| 52 | +Then /^I should see "(.*?)" team profile$/ do |arg1| | ||
| 53 | + user = User.find_by_name(arg1) | ||
| 54 | + page.should have_content(user.name) | ||
| 55 | + page.should have_content(user.email) | ||
| 56 | + page.should have_content("To team list") | ||
| 57 | +end | ||
| 58 | + | ||
| 59 | +Then /^I should not see "(.*?)" in team list$/ do |arg1| | ||
| 60 | + user = User.find_by_name(arg1) | ||
| 61 | + page.should_not have_content(user.name) | ||
| 62 | + page.should_not have_content(user.email) | ||
| 63 | +end |
| @@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||
| 1 | +Given /^I visit project wiki page$/ do | ||
| 2 | + visit project_wiki_path(@project, :index) | ||
| 3 | +end | ||
| 4 | + | ||
| 5 | +Given /^I create Wiki page$/ do | ||
| 6 | + fill_in "Title", :with => 'Test title' | ||
| 7 | + fill_in "Content", :with => '[link test](test)' | ||
| 8 | + click_on "Save" | ||
| 9 | +end | ||
| 10 | + | ||
| 11 | +Then /^I should see newly created wiki page$/ do | ||
| 12 | + page.should have_content("Test title") | ||
| 13 | + page.should have_content("link test") | ||
| 14 | + | ||
| 15 | + click_link "link test" | ||
| 16 | + | ||
| 17 | + page.should have_content("Editing page") | ||
| 18 | +end |
features/step_definitions/projects_steps.rb
| @@ -28,7 +28,7 @@ end | @@ -28,7 +28,7 @@ end | ||
| 28 | 28 | ||
| 29 | Given /^I own project "(.*?)"$/ do |arg1| | 29 | Given /^I own project "(.*?)"$/ do |arg1| |
| 30 | @project = Factory :project, :name => arg1 | 30 | @project = Factory :project, :name => arg1 |
| 31 | - @project.add_access(@user, :read, :write) | 31 | + @project.add_access(@user, :admin) |
| 32 | end | 32 | end |
| 33 | 33 | ||
| 34 | Given /^I visit project "(.*?)" wall page$/ do |arg1| | 34 | Given /^I visit project "(.*?)" wall page$/ do |arg1| |
| @@ -60,9 +60,9 @@ Given /^show me page$/ do | @@ -60,9 +60,9 @@ Given /^show me page$/ do | ||
| 60 | end | 60 | end |
| 61 | 61 | ||
| 62 | Given /^page should have network graph$/ do | 62 | Given /^page should have network graph$/ do |
| 63 | - #page.should have_content "Project Network Graph" | ||
| 64 | - #within ".graph" do | ||
| 65 | - #page.should have_content "stable" | ||
| 66 | - #page.should have_content "notes_refacto..." | ||
| 67 | - #end | 63 | + page.should have_content "Project Network Graph" |
| 64 | + within ".graph" do | ||
| 65 | + page.should have_content "stable" | ||
| 66 | + page.should have_content "notes_refacto..." | ||
| 67 | + end | ||
| 68 | end | 68 | end |
features/step_definitions/wiki_steps.rb
| @@ -1,18 +0,0 @@ | @@ -1,18 +0,0 @@ | ||
| 1 | -Given /^I visit project wiki page$/ do | ||
| 2 | - visit project_wiki_path(@project, :index) | ||
| 3 | -end | ||
| 4 | - | ||
| 5 | -Given /^I create Wiki page$/ do | ||
| 6 | - fill_in "Title", :with => 'Test title' | ||
| 7 | - fill_in "Content", :with => '[link test](test)' | ||
| 8 | - click_on "Save" | ||
| 9 | -end | ||
| 10 | - | ||
| 11 | -Then /^I should see newly created wiki page$/ do | ||
| 12 | - page.should have_content("Test title") | ||
| 13 | - page.should have_content("link test") | ||
| 14 | - | ||
| 15 | - click_link "link test" | ||
| 16 | - | ||
| 17 | - page.should have_content("Editing page") | ||
| 18 | -end |