mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-09 04:36:11 +10:00
Add spinach tests around accepting and declining invitations.
This commit is contained in:
@@ -22,6 +22,8 @@ class Member < ActiveRecord::Base
|
||||
include Notifiable
|
||||
include Gitlab::Access
|
||||
|
||||
attr_accessor :raw_invite_token
|
||||
|
||||
belongs_to :created_by, class_name: "User"
|
||||
belongs_to :user
|
||||
belongs_to :source, polymorphic: true
|
||||
|
||||
+2
-1
@@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20150411180045) do
|
||||
ActiveRecord::Schema.define(version: 20150413192223) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@@ -481,6 +481,7 @@ ActiveRecord::Schema.define(version: 20150411180045) do
|
||||
t.string "bitbucket_access_token"
|
||||
t.string "bitbucket_access_token_secret"
|
||||
t.string "location"
|
||||
t.string "public_email", default: "", null: false
|
||||
end
|
||||
|
||||
add_index "users", ["admin"], name: "index_users_on_admin", using: :btree
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
Feature: Invites
|
||||
Background:
|
||||
Given "John Doe" is owner of group "Owned"
|
||||
And "John Doe" has invited "user@example.com" to group "Owned"
|
||||
|
||||
Scenario: Viewing invitation when signed out
|
||||
When I visit the invitation page
|
||||
Then I should be redirected to the sign in page
|
||||
And I should see a notice telling me to sign in
|
||||
|
||||
Scenario: Signing in to view invitation
|
||||
When I visit the invitation page
|
||||
And I sign in as "Mary Jane"
|
||||
Then I should be redirected to the invitation page
|
||||
|
||||
Scenario: Viewing invitation when signed in
|
||||
Given I sign in as "Mary Jane"
|
||||
And I visit the invitation page
|
||||
Then I should see the invitation details
|
||||
And I should see an "Accept invitation" button
|
||||
And I should see a "Decline" button
|
||||
|
||||
Scenario: Viewing invitation as an existing member
|
||||
Given I sign in as "John Doe"
|
||||
And I visit the invitation page
|
||||
Then I should see a message telling me I'm already a member
|
||||
|
||||
Scenario: Accepting the invitation
|
||||
Given I sign in as "Mary Jane"
|
||||
And I visit the invitation page
|
||||
And I click the "Accept invitation" button
|
||||
Then I should be redirected to the group page
|
||||
And I should see a notice telling me I have access
|
||||
|
||||
Scenario: Declining the application when signed in
|
||||
Given I sign in as "Mary Jane"
|
||||
And I visit the invitation page
|
||||
And I click the "Decline" button
|
||||
Then I should be redirected to the dashboard
|
||||
And I should see a notice telling me I have declined
|
||||
|
||||
Scenario: Declining the application when signed out
|
||||
When I visit the invitation's decline page
|
||||
Then I should be redirected to the sign in page
|
||||
And I should see a notice telling me I have declined
|
||||
@@ -0,0 +1,80 @@
|
||||
class Spinach::Features::Invites < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedUser
|
||||
include SharedGroup
|
||||
|
||||
step '"John Doe" has invited "user@example.com" to group "Owned"' do
|
||||
user = User.find_by(name: "John Doe")
|
||||
group = Group.find_by(name: "Owned")
|
||||
group.add_user("user@example.com", Gitlab::Access::DEVELOPER, user)
|
||||
end
|
||||
|
||||
step 'I visit the invitation page' do
|
||||
group = Group.find_by(name: "Owned")
|
||||
invite = group.group_members.invite.last
|
||||
invite.generate_invite_token!
|
||||
@raw_invite_token = invite.raw_invite_token
|
||||
visit invite_path(@raw_invite_token)
|
||||
end
|
||||
|
||||
step 'I should be redirected to the sign in page' do
|
||||
expect(current_path).to eq(new_user_session_path)
|
||||
end
|
||||
|
||||
step 'I should see a notice telling me to sign in' do
|
||||
expect(page).to have_content "To accept this invitation, sign in"
|
||||
end
|
||||
|
||||
step 'I should be redirected to the invitation page' do
|
||||
expect(current_path).to eq(invite_path(@raw_invite_token))
|
||||
end
|
||||
|
||||
step 'I should see the invitation details' do
|
||||
expect(page).to have_content("You have been invited by John Doe to join group Owned as Developer.")
|
||||
end
|
||||
|
||||
step "I should see a message telling me I'm already a member" do
|
||||
expect(page).to have_content("However, you are already a member of this group.")
|
||||
end
|
||||
|
||||
step 'I should see an "Accept invitation" button' do
|
||||
expect(page).to have_link("Accept invitation")
|
||||
end
|
||||
|
||||
step 'I should see a "Decline" button' do
|
||||
expect(page).to have_link("Decline")
|
||||
end
|
||||
|
||||
step 'I click the "Accept invitation" button' do
|
||||
page.click_link "Accept invitation"
|
||||
end
|
||||
|
||||
step 'I should be redirected to the group page' do
|
||||
group = Group.find_by(name: "Owned")
|
||||
expect(current_path).to eq(group_path(group))
|
||||
end
|
||||
|
||||
step 'I should see a notice telling me I have access' do
|
||||
expect(page).to have_content("You have been granted Developer access to group Owned.")
|
||||
end
|
||||
|
||||
step 'I click the "Decline" button' do
|
||||
page.click_link "Decline"
|
||||
end
|
||||
|
||||
step 'I should be redirected to the dashboard' do
|
||||
expect(current_path).to eq(dashboard_path)
|
||||
end
|
||||
|
||||
step 'I should see a notice telling me I have declined' do
|
||||
expect(page).to have_content("You have declined the invitation to join group Owned.")
|
||||
end
|
||||
|
||||
step "I visit the invitation's decline page" do
|
||||
group = Group.find_by(name: "Owned")
|
||||
invite = group.group_members.invite.last
|
||||
invite.generate_invite_token!
|
||||
@raw_invite_token = invite.raw_invite_token
|
||||
visit decline_invite_path(@raw_invite_token)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user