Cucumber features: Team, SSH keys

This commit is contained in:
randx 2012-06-18 19:34:09 +03:00
parent eb00cb69dd
commit 22d6dc2b3b
9 changed files with 162 additions and 8 deletions

View file

@ -1,6 +1,6 @@
- user = member.user
- allow_admin = can? current_user, :admin_project, @project
%tr{:id => dom_id(member), :class => "team_member_row"}
%tr{:id => dom_id(member), :class => "team_member_row user_#{user.id}"}
%td
.right
- if @project.owner == user

View file

@ -0,0 +1,22 @@
Feature: SSH Keys
Background:
Given I signin as a user
And I have ssh keys:
| title |
| Work |
| Home |
And I visit profile keys page
Scenario: I should see SSH keys
Then I should see my ssh keys
Scenario: Add new ssh key
Given I click link "Add new"
And I submit new ssh key "Laptop"
Then I should see new ssh key "Laptop"
Scenario: Remove ssh key
Given I click link "Work"
And I click link "Remove"
Then I visit profile keys page
And I should not see "Work" ssh key

View file

@ -0,0 +1,35 @@
Feature: Project Team management
Background:
Given I signin as a user
And I own project "Shop"
And gitlab user "Mike"
And gitlab user "Sam"
And "Sam" is "Shop" developer
And I visit project "Shop" team page
Scenario: See all team members
Then I should be able to see myself in team
And I should see "Sam" in team list
Scenario: Add user to project
Given I click link "New Team Member"
And I select "Mike" as "Reporter"
Then I should see "Mike" in team list as "Reporter"
@javascript
Scenario: Update user access
Given I should see "Sam" in team list as "Developer"
And I change "Sam" role to "Reporter"
Then I visit project "Shop" team page
And I should see "Sam" in team list as "Reporter"
Scenario: View team member profile
Given I click link "Sam"
Then I should see "Sam" team profile
Scenario: Cancel team member
Given I click link "Sam"
And I click link "Remove from team"
Then I visit project "Shop" team page
And I should not see "Sam" in team list

View file

@ -47,7 +47,7 @@ Then /^I should see last push widget$/ do
end
Then /^I click "(.*?)" link$/ do |arg1|
click_link "Create Merge Request"
click_link arg1 #Create Merge Request"
end
Then /^I see prefilled new Merge Request page$/ do

View file

@ -0,0 +1,34 @@
Given /^I visit profile keys page$/ do
visit keys_path
end
Then /^I should see my ssh keys$/ do
@user.keys.each do |key|
page.should have_content(key.title)
end
end
Given /^I have ssh keys:$/ do |table|
table.hashes.each do |row|
Factory :key, :user => @user, :title => row[:title], :key => "jfKLJDFKSFJSHFJ#{row[:title]}"
end
end
Given /^I submit new ssh key "(.*?)"$/ do |arg1|
fill_in "key_title", :with => arg1
fill_in "key_key", :with => "publickey234="
click_button "Save"
end
Then /^I should see new ssh key "(.*?)"$/ do |arg1|
key = Key.find_by_title(arg1)
page.should have_content(key.title)
page.should have_content(key.key)
current_path.should == key_path(key)
end
Then /^I should not see "(.*?)" ssh key$/ do |arg1|
within "#keys-table" do
page.should_not have_content(arg1)
end
end

View file

@ -0,0 +1,63 @@
Given /^gitlab user "(.*?)"$/ do |arg1|
Factory :user, :name => arg1
end
Given /^"(.*?)" is "(.*?)" developer$/ do |arg1, arg2|
user = User.find_by_name(arg1)
project = Project.find_by_name(arg2)
project.add_access(user, :write)
end
Given /^I visit project "(.*?)" team page$/ do |arg1|
visit team_project_path(Project.find_by_name(arg1))
end
Then /^I should be able to see myself in team$/ do
page.should have_content(@user.name)
page.should have_content(@user.email)
end
Then /^I should see "(.*?)" in team list$/ do |arg1|
user = User.find_by_name(arg1)
page.should have_content(user.name)
page.should have_content(user.email)
end
Given /^I click link "(.*?)"$/ do |arg1|
click_link arg1
end
Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2|
user = User.find_by_name(arg1)
within "#new_team_member" do
select user.name, :from => "team_member_user_id"
select arg2, :from => "team_member_project_access"
end
click_button "Save"
end
Then /^I should see "(.*?)" in team list as "(.*?)"$/ do |arg1, arg2|
user = User.find_by_name(arg1)
role_id = find(".user_#{user.id} #team_member_project_access").value
role_id.should == UsersProject.access_roles[arg2].to_s
end
Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2|
user = User.find_by_name(arg1)
within ".user_#{user.id}" do
select arg2, :from => "team_member_project_access"
end
end
Then /^I should see "(.*?)" team profile$/ do |arg1|
user = User.find_by_name(arg1)
page.should have_content(user.name)
page.should have_content(user.email)
page.should have_content("To team list")
end
Then /^I should not see "(.*?)" in team list$/ do |arg1|
user = User.find_by_name(arg1)
page.should_not have_content(user.name)
page.should_not have_content(user.email)
end

View file

@ -28,7 +28,7 @@ end
Given /^I own project "(.*?)"$/ do |arg1|
@project = Factory :project, :name => arg1
@project.add_access(@user, :read, :write)
@project.add_access(@user, :admin)
end
Given /^I visit project "(.*?)" wall page$/ do |arg1|
@ -60,9 +60,9 @@ Given /^show me page$/ do
end
Given /^page should have network graph$/ do
#page.should have_content "Project Network Graph"
#within ".graph" do
#page.should have_content "stable"
#page.should have_content "notes_refacto..."
#end
page.should have_content "Project Network Graph"
within ".graph" do
page.should have_content "stable"
page.should have_content "notes_refacto..."
end
end