Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features')
-rw-r--r--spec/features/admin/admin_hooks_spec.rb51
-rw-r--r--spec/features/admin/admin_projects_spec.rb34
-rw-r--r--spec/features/admin/admin_users_spec.rb109
-rw-r--r--spec/features/admin/security_spec.rb27
-rw-r--r--spec/features/atom/dashboard_issues_spec.rb30
-rw-r--r--spec/features/atom/dashboard_spec.rb44
-rw-r--r--spec/features/atom/issues_spec.rb37
-rw-r--r--spec/features/atom/users_spec.rb77
-rw-r--r--spec/features/gitlab_flavored_markdown_spec.rb129
-rw-r--r--spec/features/issues_spec.rb320
-rw-r--r--spec/features/notes_on_merge_requests_spec.rb230
-rw-r--r--spec/features/profile_spec.rb35
-rw-r--r--spec/features/projects_spec.rb32
-rw-r--r--spec/features/search_spec.rb20
-rw-r--r--spec/features/security/dashboard_access_spec.rb63
-rw-r--r--spec/features/security/group/group_access_spec.rb98
-rw-r--r--spec/features/security/group/internal_group_access_spec.rb82
-rw-r--r--spec/features/security/group/mixed_group_access_spec.rb83
-rw-r--r--spec/features/security/group/public_group_access_spec.rb82
-rw-r--r--spec/features/security/profile_access_spec.rb65
-rw-r--r--spec/features/security/project/internal_access_spec.rb227
-rw-r--r--spec/features/security/project/private_access_spec.rb205
-rw-r--r--spec/features/security/project/public_access_spec.rb232
-rw-r--r--spec/features/users_spec.rb37
24 files changed, 0 insertions, 2349 deletions
diff --git a/spec/features/admin/admin_hooks_spec.rb b/spec/features/admin/admin_hooks_spec.rb
deleted file mode 100644
index 25862614d28..00000000000
--- a/spec/features/admin/admin_hooks_spec.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'spec_helper'
-
-describe "Admin::Hooks", feature: true do
- before do
- @project = create(:project)
- login_as :admin
-
- @system_hook = create(:system_hook)
-
- end
-
- describe "GET /admin/hooks" do
- it "should be ok" do
- visit admin_root_path
- within ".sidebar-wrapper" do
- click_on "Hooks"
- end
- expect(current_path).to eq(admin_hooks_path)
- end
-
- it "should have hooks list" do
- visit admin_hooks_path
- expect(page).to have_content(@system_hook.url)
- end
- end
-
- describe "New Hook" do
- before do
- @url = Faker::Internet.uri("http")
- visit admin_hooks_path
- fill_in "hook_url", with: @url
- expect { click_button "Add System Hook" }.to change(SystemHook, :count).by(1)
- end
-
- it "should open new hook popup" do
- expect(current_path).to eq(admin_hooks_path)
- expect(page).to have_content(@url)
- end
- end
-
- describe "Test" do
- before do
- WebMock.stub_request(:post, @system_hook.url)
- visit admin_hooks_path
- click_link "Test Hook"
- end
-
- it { expect(current_path).to eq(admin_hooks_path) }
- end
-
-end
diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb
deleted file mode 100644
index 101d955d693..00000000000
--- a/spec/features/admin/admin_projects_spec.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-require 'spec_helper'
-
-describe "Admin::Projects", feature: true do
- before do
- @project = create(:project)
- login_as :admin
- end
-
- describe "GET /admin/projects" do
- before do
- visit admin_namespaces_projects_path
- end
-
- it "should be ok" do
- expect(current_path).to eq(admin_namespaces_projects_path)
- end
-
- it "should have projects list" do
- expect(page).to have_content(@project.name)
- end
- end
-
- describe "GET /admin/projects/:id" do
- before do
- visit admin_namespaces_projects_path
- click_link "#{@project.name}"
- end
-
- it "should have project info" do
- expect(page).to have_content(@project.path)
- expect(page).to have_content(@project.name)
- end
- end
-end
diff --git a/spec/features/admin/admin_users_spec.rb b/spec/features/admin/admin_users_spec.rb
deleted file mode 100644
index f97b69713ce..00000000000
--- a/spec/features/admin/admin_users_spec.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-require 'spec_helper'
-
-describe "Admin::Users", feature: true do
- before { login_as :admin }
-
- describe "GET /admin/users" do
- before do
- visit admin_users_path
- end
-
- it "should be ok" do
- expect(current_path).to eq(admin_users_path)
- end
-
- it "should have users list" do
- expect(page).to have_content(@user.email)
- expect(page).to have_content(@user.name)
- end
- end
-
- describe "GET /admin/users/new" do
- before do
- visit new_admin_user_path
- fill_in "user_name", with: "Big Bang"
- fill_in "user_username", with: "bang"
- fill_in "user_email", with: "bigbang@mail.com"
- end
-
- it "should create new user" do
- expect { click_button "Create user" }.to change {User.count}.by(1)
- end
-
- it "should apply defaults to user" do
- click_button "Create user"
- user = User.find_by(username: 'bang')
- expect(user.projects_limit).
- to eq(Gitlab.config.gitlab.default_projects_limit)
- expect(user.can_create_group).
- to eq(Gitlab.config.gitlab.default_can_create_group)
- end
-
- it "should create user with valid data" do
- click_button "Create user"
- user = User.find_by(username: 'bang')
- expect(user.name).to eq('Big Bang')
- expect(user.email).to eq('bigbang@mail.com')
- end
-
- it "should call send mail" do
- expect(Notify).to receive(:new_user_email)
-
- click_button "Create user"
- end
-
- it "should send valid email to user with email & password" do
- click_button "Create user"
- user = User.find_by(username: 'bang')
- email = ActionMailer::Base.deliveries.last
- expect(email.subject).to have_content('Account was created')
- expect(email.text_part.body).to have_content(user.email)
- expect(email.text_part.body).to have_content('password')
- end
- end
-
- describe "GET /admin/users/:id" do
- before do
- visit admin_users_path
- click_link "#{@user.name}"
- end
-
- it "should have user info" do
- expect(page).to have_content(@user.email)
- expect(page).to have_content(@user.name)
- end
- end
-
- describe "GET /admin/users/:id/edit" do
- before do
- @simple_user = create(:user)
- visit admin_users_path
- click_link "edit_user_#{@simple_user.id}"
- end
-
- it "should have user edit page" do
- expect(page).to have_content('Name')
- expect(page).to have_content('Password')
- end
-
- describe "Update user" do
- before do
- fill_in "user_name", with: "Big Bang"
- fill_in "user_email", with: "bigbang@mail.com"
- check "user_admin"
- click_button "Save changes"
- end
-
- it "should show page with new data" do
- expect(page).to have_content('bigbang@mail.com')
- expect(page).to have_content('Big Bang')
- end
-
- it "should change user entry" do
- @simple_user.reload
- expect(@simple_user.name).to eq('Big Bang')
- expect(@simple_user.is_admin?).to be_truthy
- end
- end
- end
-end
diff --git a/spec/features/admin/security_spec.rb b/spec/features/admin/security_spec.rb
deleted file mode 100644
index 175fa9d4647..00000000000
--- a/spec/features/admin/security_spec.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'spec_helper'
-
-describe "Admin::Projects", feature: true do
- describe "GET /admin/projects" do
- subject { admin_namespaces_projects_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /admin/users" do
- subject { admin_users_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /admin/hooks" do
- subject { admin_hooks_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-end
diff --git a/spec/features/atom/dashboard_issues_spec.rb b/spec/features/atom/dashboard_issues_spec.rb
deleted file mode 100644
index b710cb3c72f..00000000000
--- a/spec/features/atom/dashboard_issues_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'spec_helper'
-
-describe "Dashboard Issues Feed", feature: true do
- describe "GET /issues" do
- let!(:user) { create(:user) }
- let!(:project1) { create(:project) }
- let!(:project2) { create(:project) }
- let!(:issue1) { create(:issue, author: user, assignee: user, project: project1) }
- let!(:issue2) { create(:issue, author: user, assignee: user, project: project2) }
-
- before do
- project1.team << [user, :master]
- project2.team << [user, :master]
- end
-
- describe "atom feed" do
- it "should render atom feed via private token" do
- visit issues_dashboard_path(:atom, private_token: user.private_token)
-
- expect(response_headers['Content-Type']).
- to have_content('application/atom+xml')
- expect(body).to have_selector('title', text: "#{user.name} issues")
- expect(body).to have_selector('author email', text: issue1.author_email)
- expect(body).to have_selector('entry summary', text: issue1.title)
- expect(body).to have_selector('author email', text: issue2.author_email)
- expect(body).to have_selector('entry summary', text: issue2.title)
- end
- end
- end
-end
diff --git a/spec/features/atom/dashboard_spec.rb b/spec/features/atom/dashboard_spec.rb
deleted file mode 100644
index ad157d742ff..00000000000
--- a/spec/features/atom/dashboard_spec.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require 'spec_helper'
-
-describe "Dashboard Feed", feature: true do
- describe "GET /" do
- let!(:user) { create(:user, name: "Jonh") }
-
- context "projects atom feed via private token" do
- it "should render projects atom feed" do
- visit dashboard_path(:atom, private_token: user.private_token)
- expect(body).to have_selector('feed title')
- end
- end
-
- context 'feed content' do
- let(:project) { create(:project) }
- let(:issue) { create(:issue, project: project, author: user, description: '') }
- let(:note) { create(:note, noteable: issue, author: user, note: 'Bug confirmed', project: project) }
-
- before do
- project.team << [user, :master]
- issue_event(issue, user)
- note_event(note, user)
- visit dashboard_path(:atom, private_token: user.private_token)
- end
-
- it "should have issue opened event" do
- expect(body).to have_content("#{user.name} opened issue ##{issue.iid}")
- end
-
- it "should have issue comment event" do
- expect(body).
- to have_content("#{user.name} commented on issue ##{issue.iid}")
- end
- end
- end
-
- def issue_event(issue, user)
- EventCreateService.new.open_issue(issue, user)
- end
-
- def note_event(note, user)
- EventCreateService.new.leave_note(note, user)
- end
-end
diff --git a/spec/features/atom/issues_spec.rb b/spec/features/atom/issues_spec.rb
deleted file mode 100644
index baa7814e96a..00000000000
--- a/spec/features/atom/issues_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'spec_helper'
-
-describe 'Issues Feed', feature: true do
- describe 'GET /issues' do
- let!(:user) { create(:user) }
- let!(:project) { create(:project) }
- let!(:issue) { create(:issue, author: user, project: project) }
-
- before { project.team << [user, :developer] }
-
- context 'when authenticated' do
- it 'should render atom feed' do
- login_with user
- visit namespace_project_issues_path(project.namespace, project, :atom)
-
- expect(response_headers['Content-Type']).
- to have_content('application/atom+xml')
- expect(body).to have_selector('title', text: "#{project.name} issues")
- expect(body).to have_selector('author email', text: issue.author_email)
- expect(body).to have_selector('entry summary', text: issue.title)
- end
- end
-
- context 'when authenticated via private token' do
- it 'should render atom feed' do
- visit namespace_project_issues_path(project.namespace, project, :atom,
- private_token: user.private_token)
-
- expect(response_headers['Content-Type']).
- to have_content('application/atom+xml')
- expect(body).to have_selector('title', text: "#{project.name} issues")
- expect(body).to have_selector('author email', text: issue.author_email)
- expect(body).to have_selector('entry summary', text: issue.title)
- end
- end
- end
-end
diff --git a/spec/features/atom/users_spec.rb b/spec/features/atom/users_spec.rb
deleted file mode 100644
index 770ac04c2c5..00000000000
--- a/spec/features/atom/users_spec.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'spec_helper'
-
-describe "User Feed", feature: true do
- describe "GET /" do
- let!(:user) { create(:user) }
-
- context 'user atom feed via private token' do
- it "should render user atom feed" do
- visit user_path(user, :atom, private_token: user.private_token)
- expect(body).to have_selector('feed title')
- end
- end
-
- context 'feed content' do
- let(:project) { create(:project) }
- let(:issue) do
- create(:issue, project: project,
- author: user, description: "Houston, we have a bug!\n\n***\n\nI guess.")
- end
- let(:note) do
- create(:note, noteable: issue, author: user,
- note: 'Bug confirmed :+1:', project: project)
- end
- let(:merge_request) do
- create(:merge_request,
- title: 'Fix bug', author: user,
- source_project: project, target_project: project,
- description: "Here is the fix: ![an image](image.png)")
- end
-
- before do
- project.team << [user, :master]
- issue_event(issue, user)
- note_event(note, user)
- merge_request_event(merge_request, user)
- visit user_path(user, :atom, private_token: user.private_token)
- end
-
- it 'should have issue opened event' do
- expect(body).to have_content("#{safe_name} opened issue ##{issue.iid}")
- end
-
- it 'should have issue comment event' do
- expect(body).
- to have_content("#{safe_name} commented on issue ##{issue.iid}")
- end
-
- it 'should have XHTML summaries in issue descriptions' do
- expect(body).to match /we have a bug!<\/p>\n\n<hr ?\/>\n\n<p>I guess/
- end
-
- it 'should have XHTML summaries in notes' do
- expect(body).to match /Bug confirmed <img[^>]*\/>/
- end
-
- it 'should have XHTML summaries in merge request descriptions' do
- expect(body).to match /Here is the fix: <img[^>]*\/>/
- end
- end
- end
-
- def issue_event(issue, user)
- EventCreateService.new.open_issue(issue, user)
- end
-
- def note_event(note, user)
- EventCreateService.new.leave_note(note, user)
- end
-
- def merge_request_event(request, user)
- EventCreateService.new.open_mr(request, user)
- end
-
- def safe_name
- html_escape(user.name)
- end
-end
diff --git a/spec/features/gitlab_flavored_markdown_spec.rb b/spec/features/gitlab_flavored_markdown_spec.rb
deleted file mode 100644
index fca1a06eb88..00000000000
--- a/spec/features/gitlab_flavored_markdown_spec.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-require 'spec_helper'
-
-describe "GitLab Flavored Markdown", feature: true do
- let(:project) { create(:project) }
- let(:issue) { create(:issue, project: project) }
- let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
- let(:fred) do
- u = create(:user, name: "fred")
- project.team << [u, :master]
- u
- end
-
- before do
- Commit.any_instance.stub(title: "fix ##{issue.iid}\n\nask @#{fred.username} for details")
- end
-
- let(:commit) { project.repository.commit }
-
- before do
- login_as :user
- project.team << [@user, :developer]
- end
-
- describe "for commits" do
- it "should render title in commits#index" do
- visit namespace_project_commits_path(project.namespace, project, 'master', limit: 1)
-
- expect(page).to have_link("##{issue.iid}")
- end
-
- it "should render title in commits#show" do
- visit namespace_project_commit_path(project.namespace, project, commit)
-
- expect(page).to have_link("##{issue.iid}")
- end
-
- it "should render description in commits#show" do
- visit namespace_project_commit_path(project.namespace, project, commit)
-
- expect(page).to have_link("@#{fred.username}")
- end
-
- it "should render title in repositories#branches" do
- visit namespace_project_branches_path(project.namespace, project)
-
- expect(page).to have_link("##{issue.iid}")
- end
- end
-
- describe "for issues" do
- before do
- @other_issue = create(:issue,
- author: @user,
- assignee: @user,
- project: project)
- @issue = create(:issue,
- author: @user,
- assignee: @user,
- project: project,
- title: "fix ##{@other_issue.iid}",
- description: "ask @#{fred.username} for details")
- end
-
- it "should render subject in issues#index" do
- visit namespace_project_issues_path(project.namespace, project)
-
- expect(page).to have_link("##{@other_issue.iid}")
- end
-
- it "should render subject in issues#show" do
- visit namespace_project_issue_path(project.namespace, project, @issue)
-
- expect(page).to have_link("##{@other_issue.iid}")
- end
-
- it "should render details in issues#show" do
- visit namespace_project_issue_path(project.namespace, project, @issue)
-
- expect(page).to have_link("@#{fred.username}")
- end
- end
-
-
- describe "for merge requests" do
- before do
- @merge_request = create(:merge_request, source_project: project, target_project: project, title: "fix ##{issue.iid}")
- end
-
- it "should render title in merge_requests#index" do
- visit namespace_project_merge_requests_path(project.namespace, project)
-
- expect(page).to have_link("##{issue.iid}")
- end
-
- it "should render title in merge_requests#show" do
- visit namespace_project_merge_request_path(project.namespace, project, @merge_request)
-
- expect(page).to have_link("##{issue.iid}")
- end
- end
-
-
- describe "for milestones" do
- before do
- @milestone = create(:milestone,
- project: project,
- title: "fix ##{issue.iid}",
- description: "ask @#{fred.username} for details")
- end
-
- it "should render title in milestones#index" do
- visit namespace_project_milestones_path(project.namespace, project)
-
- expect(page).to have_link("##{issue.iid}")
- end
-
- it "should render title in milestones#show" do
- visit namespace_project_milestone_path(project.namespace, project, @milestone)
-
- expect(page).to have_link("##{issue.iid}")
- end
-
- it "should render description in milestones#show" do
- visit namespace_project_milestone_path(project.namespace, project, @milestone)
-
- expect(page).to have_link("@#{fred.username}")
- end
- end
-end
diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb
deleted file mode 100644
index e5f33d5a25a..00000000000
--- a/spec/features/issues_spec.rb
+++ /dev/null
@@ -1,320 +0,0 @@
-require 'spec_helper'
-
-describe 'Issues', feature: true do
- include SortingHelper
-
- let(:project) { create(:project) }
-
- before do
- login_as :user
- user2 = create(:user)
-
- project.team << [[@user, user2], :developer]
- end
-
- describe 'Edit issue' do
- let!(:issue) do
- create(:issue,
- author: @user,
- assignee: @user,
- project: project)
- end
-
- before do
- visit namespace_project_issues_path(project.namespace, project)
- click_link "Edit"
- end
-
- it 'should open new issue popup' do
- expect(page).to have_content("Issue ##{issue.iid}")
- end
-
- describe 'fill in' do
- before do
- fill_in 'issue_title', with: 'bug 345'
- fill_in 'issue_description', with: 'bug description'
- end
-
- it 'does not change issue count' do
- expect {
- click_button 'Save changes'
- }.to_not change { Issue.count }
- end
-
- it 'should update issue fields' do
- click_button 'Save changes'
-
- expect(page).to have_content @user.name
- expect(page).to have_content 'bug 345'
- expect(page).to have_content project.name
- end
- end
-
- end
-
- describe 'Editing issue assignee' do
- let!(:issue) do
- create(:issue,
- author: @user,
- assignee: @user,
- project: project)
- end
-
- it 'allows user to select unasigned', js: true do
- visit edit_namespace_project_issue_path(project.namespace, project, issue)
-
- expect(page).to have_content "Assign to #{@user.name}"
-
- first('#s2id_issue_assignee_id').click
- sleep 2 # wait for ajax stuff to complete
- first('.user-result').click
-
- click_button 'Save changes'
-
- expect(page).to have_content 'Assignee: none'
- expect(issue.reload.assignee).to be_nil
- end
- end
-
- describe 'Filter issue' do
- before do
- ['foobar', 'barbaz', 'gitlab'].each do |title|
- create(:issue,
- author: @user,
- assignee: @user,
- project: project,
- title: title)
- end
-
- @issue = Issue.find_by(title: 'foobar')
- @issue.milestone = create(:milestone, project: project)
- @issue.assignee = nil
- @issue.save
- end
-
- let(:issue) { @issue }
-
- it 'should allow filtering by issues with no specified milestone' do
- visit namespace_project_issues_path(project.namespace, project, milestone_id: IssuableFinder::NONE)
-
- expect(page).not_to have_content 'foobar'
- expect(page).to have_content 'barbaz'
- expect(page).to have_content 'gitlab'
- end
-
- it 'should allow filtering by a specified milestone' do
- visit namespace_project_issues_path(project.namespace, project, milestone_id: issue.milestone.id)
-
- expect(page).to have_content 'foobar'
- expect(page).not_to have_content 'barbaz'
- expect(page).not_to have_content 'gitlab'
- end
-
- it 'should allow filtering by issues with no specified assignee' do
- visit namespace_project_issues_path(project.namespace, project, assignee_id: IssuableFinder::NONE)
-
- expect(page).to have_content 'foobar'
- expect(page).not_to have_content 'barbaz'
- expect(page).not_to have_content 'gitlab'
- end
-
- it 'should allow filtering by a specified assignee' do
- visit namespace_project_issues_path(project.namespace, project, assignee_id: @user.id)
-
- expect(page).not_to have_content 'foobar'
- expect(page).to have_content 'barbaz'
- expect(page).to have_content 'gitlab'
- end
- end
-
- describe 'filter issue' do
- titles = ['foo','bar','baz']
- titles.each_with_index do |title, index|
- let!(title.to_sym) do
- create(:issue, title: title,
- project: project,
- created_at: Time.now - (index * 60))
- end
- end
- let(:newer_due_milestone) { create(:milestone, due_date: '2013-12-11') }
- let(:later_due_milestone) { create(:milestone, due_date: '2013-12-12') }
-
- it 'sorts by newest' do
- visit namespace_project_issues_path(project.namespace, project, sort: sort_value_recently_created)
-
- expect(first_issue).to include('foo')
- expect(last_issue).to include('baz')
- end
-
- it 'sorts by oldest' do
- visit namespace_project_issues_path(project.namespace, project, sort: sort_value_oldest_created)
-
- expect(first_issue).to include('baz')
- expect(last_issue).to include('foo')
- end
-
- it 'sorts by most recently updated' do
- baz.updated_at = Time.now + 100
- baz.save
- visit namespace_project_issues_path(project.namespace, project, sort: sort_value_recently_updated)
-
- expect(first_issue).to include('baz')
- end
-
- it 'sorts by least recently updated' do
- baz.updated_at = Time.now - 100
- baz.save
- visit namespace_project_issues_path(project.namespace, project, sort: sort_value_oldest_updated)
-
- expect(first_issue).to include('baz')
- end
-
- describe 'sorting by milestone' do
- before :each do
- foo.milestone = newer_due_milestone
- foo.save
- bar.milestone = later_due_milestone
- bar.save
- end
-
- it 'sorts by recently due milestone' do
- visit namespace_project_issues_path(project.namespace, project, sort: sort_value_milestone_soon)
-
- expect(first_issue).to include('foo')
- end
-
- it 'sorts by least recently due milestone' do
- visit namespace_project_issues_path(project.namespace, project, sort: sort_value_milestone_later)
-
- expect(first_issue).to include('bar')
- end
- end
-
- describe 'combine filter and sort' do
- let(:user2) { create(:user) }
-
- before :each do
- foo.assignee = user2
- foo.save
- bar.assignee = user2
- bar.save
- end
-
- it 'sorts with a filter applied' do
- visit namespace_project_issues_path(project.namespace, project,
- sort: sort_value_oldest_created,
- assignee_id: user2.id)
-
- expect(first_issue).to include('bar')
- expect(last_issue).to include('foo')
- expect(page).not_to have_content 'baz'
- end
- end
- end
-
- describe 'update assignee from issue#show' do
- let(:issue) { create(:issue, project: project, author: @user) }
-
- context 'by autorized user' do
-
- it 'with dropdown menu' do
- visit namespace_project_issue_path(project.namespace, project, issue)
-
- find('.edit-issue.inline-update #issue_assignee_id').
- set project.team.members.first.id
- click_button 'Update Issue'
-
- expect(page).to have_content 'Assignee:'
- has_select?('issue_assignee_id',
- selected: project.team.members.first.name)
- end
- end
-
- context 'by unauthorized user' do
-
- let(:guest) { create(:user) }
-
- before :each do
- project.team << [[guest], :guest]
- issue.assignee = @user
- issue.save
- end
-
- it 'shows assignee text', js: true do
- logout
- login_with guest
-
- visit namespace_project_issue_path(project.namespace, project, issue)
- expect(page).to have_content issue.assignee.name
- end
- end
- end
-
- describe 'update milestone from issue#show' do
- let!(:issue) { create(:issue, project: project, author: @user) }
- let!(:milestone) { create(:milestone, project: project) }
-
- context 'by authorized user' do
-
- it 'with dropdown menu' do
- visit namespace_project_issue_path(project.namespace, project, issue)
-
- find('.edit-issue.inline-update').
- select(milestone.title, from: 'issue_milestone_id')
- click_button 'Update Issue'
-
- expect(page).to have_content "Milestone changed to #{milestone.title}"
- expect(page).to have_content "Milestone: #{milestone.title}"
- has_select?('issue_assignee_id', selected: milestone.title)
- end
- end
-
- context 'by unauthorized user' do
- let(:guest) { create(:user) }
-
- before :each do
- project.team << [guest, :guest]
- issue.milestone = milestone
- issue.save
- end
-
- it 'shows milestone text', js: true do
- logout
- login_with guest
-
- visit namespace_project_issue_path(project.namespace, project, issue)
- expect(page).to have_content milestone.title
- end
- end
-
- describe 'removing assignee' do
- let(:user2) { create(:user) }
-
- before :each do
- issue.assignee = user2
- issue.save
- end
-
- it 'allows user to remove assignee', :js => true do
- visit namespace_project_issue_path(project.namespace, project, issue)
- expect(page).to have_content "Assignee: #{user2.name}"
-
- first('#s2id_issue_assignee_id').click
- sleep 2 # wait for ajax stuff to complete
- first('.user-result').click
-
- expect(page).to have_content 'Assignee: none'
- sleep 2 # wait for ajax stuff to complete
- expect(issue.reload.assignee).to be_nil
- end
- end
- end
-
- def first_issue
- all('ul.issues-list li').first.text
- end
-
- def last_issue
- all('ul.issues-list li').last.text
- end
-end
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
deleted file mode 100644
index c47368b1fda..00000000000
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ /dev/null
@@ -1,230 +0,0 @@
-require 'spec_helper'
-
-describe 'Comments' do
- include RepoHelpers
-
- describe 'On a merge request', js: true, feature: true do
- let!(:merge_request) { create(:merge_request) }
- let!(:project) { merge_request.source_project }
- let!(:note) do
- create(:note_on_merge_request, :with_attachment, project: project)
- end
-
- before do
- login_as :admin
- visit namespace_project_merge_request_path(project.namespace, project, merge_request)
- end
-
- subject { page }
-
- describe 'the note form' do
- it 'should be valid' do
- is_expected.to have_css('.js-main-target-form', visible: true, count: 1)
- expect(find('.js-main-target-form input[type=submit]').value).
- to eq('Add Comment')
- within('.js-main-target-form') do
- expect(page).not_to have_link('Cancel')
- end
- end
-
- describe 'with text' do
- before do
- within('.js-main-target-form') do
- fill_in 'note[note]', with: 'This is awesome'
- end
- end
-
- it 'should have enable submit button and preview button' do
- within('.js-main-target-form') do
- expect(page).not_to have_css('.js-comment-button[disabled]')
- expect(page).to have_css('.js-md-preview-button', visible: true)
- end
- end
- end
- end
-
- describe 'when posting a note' do
- before do
- within('.js-main-target-form') do
- fill_in 'note[note]', with: 'This is awsome!'
- find('.js-md-preview-button').click
- click_button 'Add Comment'
- end
- end
-
- it 'should be added and form reset' do
- is_expected.to have_content('This is awsome!')
- within('.js-main-target-form') do
- expect(page).to have_no_field('note[note]', with: 'This is awesome!')
- expect(page).to have_css('.js-md-preview', visible: :hidden)
- end
- within('.js-main-target-form') do
- is_expected.to have_css('.js-note-text', visible: true)
- end
- end
- end
-
- describe 'when editing a note', js: true do
- it 'should contain the hidden edit form' do
- within("#note_#{note.id}") do
- is_expected.to have_css('.note-edit-form', visible: false)
- end
- end
-
- describe 'editing the note' do
- before do
- find('.note').hover
- find(".js-note-edit").click
- end
-
- it 'should show the note edit form and hide the note body' do
- within("#note_#{note.id}") do
- expect(find('.current-note-edit-form', visible: true)).to be_visible
- expect(find('.note-edit-form', visible: true)).to be_visible
- expect(find(:css, '.note-body > .note-text', visible: false)).not_to be_visible
- end
- end
-
- # TODO: fix after 7.7 release
- #it "should reset the edit note form textarea with the original content of the note if cancelled" do
- #within(".current-note-edit-form") do
- #fill_in "note[note]", with: "Some new content"
- #find(".btn-cancel").click
- #find(".js-note-text", visible: false).text.should == note.note
- #end
- #end
-
- it 'appends the edited at time to the note' do
- within('.current-note-edit-form') do
- fill_in 'note[note]', with: 'Some new content'
- find('.btn-save').click
- end
-
- within("#note_#{note.id}") do
- is_expected.to have_css('.note_edited_ago')
- expect(find('.note_edited_ago').text).
- to match(/less than a minute ago/)
- end
- end
- end
-
- describe 'deleting an attachment' do
- before do
- find('.note').hover
- find('.js-note-edit').click
- end
-
- it 'shows the delete link' do
- within('.note-attachment') do
- is_expected.to have_css('.js-note-attachment-delete')
- end
- end
-
- it 'removes the attachment div and resets the edit form' do
- find('.js-note-attachment-delete').click
- is_expected.not_to have_css('.note-attachment')
- expect(find('.current-note-edit-form', visible: false)).
- not_to be_visible
- end
- end
- end
- end
-
- describe 'On a merge request diff', js: true, feature: true do
- let(:merge_request) { create(:merge_request) }
- let(:project) { merge_request.source_project }
-
- before do
- login_as :admin
- visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
- end
-
- subject { page }
-
- describe 'when adding a note' do
- before do
- click_diff_line
- end
-
- describe 'the notes holder' do
- it { is_expected.to have_css('.js-temp-notes-holder') }
-
- it 'has .new_note css class' do
- within('.js-temp-notes-holder') do
- expect(subject).to have_css('.new_note')
- end
- end
- end
-
- describe 'the note form' do
- it "shouldn't add a second form for same row" do
- click_diff_line
-
- is_expected.
- to have_css("tr[id='#{line_code}'] + .js-temp-notes-holder form",
- count: 1)
- end
-
- it 'should be removed when canceled' do
- within(".diff-file form[rel$='#{line_code}']") do
- find('.js-close-discussion-note-form').trigger('click')
- end
-
- is_expected.to have_no_css('.js-temp-notes-holder')
- end
- end
- end
-
- describe 'with muliple note forms' do
- before do
- click_diff_line
- click_diff_line(line_code_2)
- end
-
- it { is_expected.to have_css('.js-temp-notes-holder', count: 2) }
-
- describe 'previewing them separately' do
- before do
- # add two separate texts and trigger previews on both
- within("tr[id='#{line_code}'] + .js-temp-notes-holder") do
- fill_in 'note[note]', with: 'One comment on line 7'
- find('.js-md-preview-button').click
- end
- within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
- fill_in 'note[note]', with: 'Another comment on line 10'
- find('.js-md-preview-button').click
- end
- end
- end
-
- describe 'posting a note' do
- before do
- within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
- fill_in 'note[note]', with: 'Another comment on line 10'
- click_button('Add Comment')
- end
- end
-
- it 'should be added as discussion' do
- is_expected.to have_content('Another comment on line 10')
- is_expected.to have_css('.notes_holder')
- is_expected.to have_css('.notes_holder .note', count: 1)
- is_expected.to have_button('Reply')
- end
- end
- end
- end
-
- def line_code
- sample_compare.changes.first[:line_code]
- end
-
- def line_code_2
- sample_compare.changes.last[:line_code]
- end
-
- def click_diff_line(data = nil)
- data ||= line_code
- find("button[data-line-code=\"#{data}\"]").click
- end
-end
diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb
deleted file mode 100644
index 3d36a3c02d0..00000000000
--- a/spec/features/profile_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'spec_helper'
-
-describe 'Profile account page', feature: true do
- let(:user) { create(:user) }
-
- before do
- login_as :user
- end
-
- describe 'when signup is enabled' do
- before do
- ApplicationSetting.any_instance.stub(signup_enabled?: true)
- visit profile_account_path
- end
-
- it { expect(page).to have_content('Remove account') }
-
- it 'should delete the account' do
- expect { click_link 'Delete account' }.to change { User.count }.by(-1)
- expect(current_path).to eq(new_user_session_path)
- end
- end
-
- describe 'when signup is disabled' do
- before do
- ApplicationSetting.any_instance.stub(signup_enabled?: false)
- visit profile_account_path
- end
-
- it 'should not have option to remove account' do
- expect(page).not_to have_content('Remove account')
- expect(current_path).to eq(profile_account_path)
- end
- end
-end
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
deleted file mode 100644
index cae11be7cdd..00000000000
--- a/spec/features/projects_spec.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'spec_helper'
-
-describe "Projects", feature: true, js: true do
- before { login_as :user }
-
- describe "DELETE /projects/:id" do
- before do
- @project = create(:project, namespace: @user.namespace)
- @project.team << [@user, :master]
- visit edit_namespace_project_path(@project.namespace, @project)
- end
-
- it "should remove project" do
- expect { remove_project }.to change {Project.count}.by(-1)
- end
-
- it 'should delete the project from disk' do
- expect(GitlabShellWorker).to(
- receive(:perform_async).with(:remove_repository,
- /#{@project.path_with_namespace}/)
- ).twice
-
- remove_project
- end
- end
-
- def remove_project
- click_link "Remove project"
- fill_in 'confirm_name_input', with: @project.path
- click_button 'Confirm'
- end
-end
diff --git a/spec/features/search_spec.rb b/spec/features/search_spec.rb
deleted file mode 100644
index 73987739a7a..00000000000
--- a/spec/features/search_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'spec_helper'
-
-describe "Search", feature: true do
- before do
- login_as :user
- @project = create(:project, namespace: @user.namespace)
- @project.team << [@user, :reporter]
- visit search_path
-
- within '.search-holder' do
- fill_in "search", with: @project.name[0..3]
- click_button "Search"
- end
- end
-
- it "should show project in search results" do
- expect(page).to have_content @project.name
- end
-end
-
diff --git a/spec/features/security/dashboard_access_spec.rb b/spec/features/security/dashboard_access_spec.rb
deleted file mode 100644
index 67238e3ab76..00000000000
--- a/spec/features/security/dashboard_access_spec.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require 'spec_helper'
-
-describe "Dashboard access", feature: true do
- describe "GET /dashboard" do
- subject { dashboard_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /dashboard/issues" do
- subject { issues_dashboard_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /dashboard/merge_requests" do
- subject { merge_requests_dashboard_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /dashboard/projects/starred" do
- subject { starred_dashboard_projects_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /help" do
- subject { help_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /projects/new" do
- it { expect(new_project_path).to be_allowed_for :admin }
- it { expect(new_project_path).to be_allowed_for :user }
- it { expect(new_project_path).to be_denied_for :visitor }
- end
-
- describe "GET /groups/new" do
- it { expect(new_group_path).to be_allowed_for :admin }
- it { expect(new_group_path).to be_allowed_for :user }
- it { expect(new_group_path).to be_denied_for :visitor }
- end
-
- describe "GET /profile/groups" do
- subject { dashboard_groups_path }
-
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-end
diff --git a/spec/features/security/group/group_access_spec.rb b/spec/features/security/group/group_access_spec.rb
deleted file mode 100644
index 63793149459..00000000000
--- a/spec/features/security/group/group_access_spec.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-require 'spec_helper'
-
-describe "Group access", feature: true do
- describe "GET /projects/new" do
- it { expect(new_group_path).to be_allowed_for :admin }
- it { expect(new_group_path).to be_allowed_for :user }
- it { expect(new_group_path).to be_denied_for :visitor }
- end
-
- describe "Group" do
- let(:group) { create(:group) }
-
- let(:owner) { create(:owner) }
- let(:master) { create(:user) }
- let(:reporter) { create(:user) }
- let(:guest) { create(:user) }
- let(:nonmember) { create(:user) }
-
- before do
- group.add_user(owner, Gitlab::Access::OWNER)
- group.add_user(master, Gitlab::Access::MASTER)
- group.add_user(reporter, Gitlab::Access::REPORTER)
- group.add_user(guest, Gitlab::Access::GUEST)
- end
-
- describe "GET /groups/:path" do
- subject { group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/issues" do
- subject { issues_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/merge_requests" do
- subject { merge_requests_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/group_members" do
- subject { group_group_members_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/edit" do
- subject { edit_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_denied_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/projects" do
- subject { projects_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_denied_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
- end
-end
diff --git a/spec/features/security/group/internal_group_access_spec.rb b/spec/features/security/group/internal_group_access_spec.rb
deleted file mode 100644
index d17a7412e43..00000000000
--- a/spec/features/security/group/internal_group_access_spec.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-require 'spec_helper'
-
-describe "Group with internal project access", feature: true do
- describe "Group" do
- let(:group) { create(:group) }
-
- let(:owner) { create(:owner) }
- let(:master) { create(:user) }
- let(:reporter) { create(:user) }
- let(:guest) { create(:user) }
- let(:nonmember) { create(:user) }
-
- before do
- group.add_user(owner, Gitlab::Access::OWNER)
- group.add_user(master, Gitlab::Access::MASTER)
- group.add_user(reporter, Gitlab::Access::REPORTER)
- group.add_user(guest, Gitlab::Access::GUEST)
-
- create(:project, :internal, group: group)
- end
-
- describe "GET /groups/:path" do
- subject { group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/issues" do
- subject { issues_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/merge_requests" do
- subject { merge_requests_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/group_members" do
- subject { group_group_members_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /groups/:path/edit" do
- subject { edit_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_denied_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
- end
-end
diff --git a/spec/features/security/group/mixed_group_access_spec.rb b/spec/features/security/group/mixed_group_access_spec.rb
deleted file mode 100644
index b3db7b5dea4..00000000000
--- a/spec/features/security/group/mixed_group_access_spec.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-require 'spec_helper'
-
-describe "Group access", feature: true do
- describe "Group" do
- let(:group) { create(:group) }
-
- let(:owner) { create(:owner) }
- let(:master) { create(:user) }
- let(:reporter) { create(:user) }
- let(:guest) { create(:user) }
- let(:nonmember) { create(:user) }
-
- before do
- group.add_user(owner, Gitlab::Access::OWNER)
- group.add_user(master, Gitlab::Access::MASTER)
- group.add_user(reporter, Gitlab::Access::REPORTER)
- group.add_user(guest, Gitlab::Access::GUEST)
-
- create(:project, :internal, path: "internal_project", group: group)
- create(:project, :public, path: "public_project", group: group)
- end
-
- describe "GET /groups/:path" do
- subject { group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /groups/:path/issues" do
- subject { issues_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /groups/:path/merge_requests" do
- subject { merge_requests_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /groups/:path/group_members" do
- subject { group_group_members_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /groups/:path/edit" do
- subject { edit_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_denied_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
- end
-end
diff --git a/spec/features/security/group/public_group_access_spec.rb b/spec/features/security/group/public_group_access_spec.rb
deleted file mode 100644
index c16f0c0d1e1..00000000000
--- a/spec/features/security/group/public_group_access_spec.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-require 'spec_helper'
-
-describe "Group with public project access", feature: true do
- describe "Group" do
- let(:group) { create(:group) }
-
- let(:owner) { create(:owner) }
- let(:master) { create(:user) }
- let(:reporter) { create(:user) }
- let(:guest) { create(:user) }
- let(:nonmember) { create(:user) }
-
- before do
- group.add_user(owner, Gitlab::Access::OWNER)
- group.add_user(master, Gitlab::Access::MASTER)
- group.add_user(reporter, Gitlab::Access::REPORTER)
- group.add_user(guest, Gitlab::Access::GUEST)
-
- create(:project, :public, group: group)
- end
-
- describe "GET /groups/:path" do
- subject { group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /groups/:path/issues" do
- subject { issues_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /groups/:path/merge_requests" do
- subject { merge_requests_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /groups/:path/group_members" do
- subject { group_group_members_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /groups/:path/edit" do
- subject { edit_group_path(group) }
-
- it { is_expected.to be_allowed_for owner }
- it { is_expected.to be_denied_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
- end
-end
diff --git a/spec/features/security/profile_access_spec.rb b/spec/features/security/profile_access_spec.rb
deleted file mode 100644
index 2512a9c0e3d..00000000000
--- a/spec/features/security/profile_access_spec.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require 'spec_helper'
-
-describe "Profile access", feature: true do
- before do
- @u1 = create(:user)
- end
-
- describe "GET /login" do
- it { expect(new_user_session_path).not_to be_404_for :visitor }
- end
-
- describe "GET /profile/keys" do
- subject { profile_keys_path }
-
- it { is_expected.to be_allowed_for @u1 }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /profile" do
- subject { profile_path }
-
- it { is_expected.to be_allowed_for @u1 }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /profile/account" do
- subject { profile_account_path }
-
- it { is_expected.to be_allowed_for @u1 }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /profile/design" do
- subject { design_profile_path }
-
- it { is_expected.to be_allowed_for @u1 }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /profile/history" do
- subject { history_profile_path }
-
- it { is_expected.to be_allowed_for @u1 }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /profile/notifications" do
- subject { profile_notifications_path }
-
- it { is_expected.to be_allowed_for @u1 }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-end
diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb
deleted file mode 100644
index 8d1bfd25223..00000000000
--- a/spec/features/security/project/internal_access_spec.rb
+++ /dev/null
@@ -1,227 +0,0 @@
-require 'spec_helper'
-
-describe "Internal Project Access", feature: true do
- let(:project) { create(:project, :internal) }
-
- let(:master) { create(:user) }
- let(:guest) { create(:user) }
- let(:reporter) { create(:user) }
-
- before do
- # full access
- project.team << [master, :master]
-
- # readonly
- project.team << [reporter, :reporter]
- end
-
- describe "Project should be internal" do
- subject { project }
-
- describe '#internal?' do
- subject { super().internal? }
- it { is_expected.to be_truthy }
- end
- end
-
- describe "GET /:project_path" do
- subject { namespace_project_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/tree/master" do
- subject { namespace_project_tree_path(project.namespace, project, project.repository.root_ref) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/commits/master" do
- subject { namespace_project_commits_path(project.namespace, project, project.repository.root_ref, limit: 1) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/commit/:sha" do
- subject { namespace_project_commit_path(project.namespace, project, project.repository.commit) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/compare" do
- subject { namespace_project_compare_index_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/project_members" do
- subject { namespace_project_project_members_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/blob" do
- before do
- commit = project.repository.commit
- path = '.gitignore'
- @blob_path = namespace_project_blob_path(project.namespace, project, File.join(commit.id, path))
- end
-
- it { expect(@blob_path).to be_allowed_for master }
- it { expect(@blob_path).to be_allowed_for reporter }
- it { expect(@blob_path).to be_allowed_for :admin }
- it { expect(@blob_path).to be_allowed_for guest }
- it { expect(@blob_path).to be_allowed_for :user }
- it { expect(@blob_path).to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/edit" do
- subject { edit_namespace_project_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/deploy_keys" do
- subject { namespace_project_deploy_keys_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/issues" do
- subject { namespace_project_issues_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/snippets" do
- subject { namespace_project_snippets_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/snippets/new" do
- subject { new_namespace_project_snippet_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/merge_requests" do
- subject { namespace_project_merge_requests_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/merge_requests/new" do
- subject { new_namespace_project_merge_request_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/branches" do
- subject { namespace_project_branches_path(project.namespace, project) }
-
- before do
- # Speed increase
- allow_any_instance_of(Project).to receive(:branches).and_return([])
- end
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/tags" do
- subject { namespace_project_tags_path(project.namespace, project) }
-
- before do
- # Speed increase
- allow_any_instance_of(Project).to receive(:tags).and_return([])
- end
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/hooks" do
- subject { namespace_project_hooks_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-end
diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb
deleted file mode 100644
index 9021ff33186..00000000000
--- a/spec/features/security/project/private_access_spec.rb
+++ /dev/null
@@ -1,205 +0,0 @@
-require 'spec_helper'
-
-describe "Private Project Access", feature: true do
- let(:project) { create(:project) }
-
- let(:master) { create(:user) }
- let(:guest) { create(:user) }
- let(:reporter) { create(:user) }
-
- before do
- # full access
- project.team << [master, :master]
-
- # readonly
- project.team << [reporter, :reporter]
- end
-
- describe "Project should be private" do
- subject { project }
-
- describe '#private?' do
- subject { super().private? }
- it { is_expected.to be_truthy }
- end
- end
-
- describe "GET /:project_path" do
- subject { namespace_project_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/tree/master" do
- subject { namespace_project_tree_path(project.namespace, project, project.repository.root_ref) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/commits/master" do
- subject { namespace_project_commits_path(project.namespace, project, project.repository.root_ref, limit: 1) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/commit/:sha" do
- subject { namespace_project_commit_path(project.namespace, project, project.repository.commit) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/compare" do
- subject { namespace_project_compare_index_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/project_members" do
- subject { namespace_project_project_members_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/blob" do
- before do
- commit = project.repository.commit
- path = '.gitignore'
- @blob_path = namespace_project_blob_path(project.namespace, project, File.join(commit.id, path))
- end
-
- it { expect(@blob_path).to be_allowed_for master }
- it { expect(@blob_path).to be_allowed_for reporter }
- it { expect(@blob_path).to be_allowed_for :admin }
- it { expect(@blob_path).to be_denied_for guest }
- it { expect(@blob_path).to be_denied_for :user }
- it { expect(@blob_path).to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/edit" do
- subject { edit_namespace_project_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/deploy_keys" do
- subject { namespace_project_deploy_keys_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/issues" do
- subject { namespace_project_issues_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/snippets" do
- subject { namespace_project_snippets_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/merge_requests" do
- subject { namespace_project_merge_requests_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/branches" do
- subject { namespace_project_branches_path(project.namespace, project) }
-
- before do
- # Speed increase
- allow_any_instance_of(Project).to receive(:branches).and_return([])
- end
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/tags" do
- subject { namespace_project_tags_path(project.namespace, project) }
-
- before do
- # Speed increase
- allow_any_instance_of(Project).to receive(:tags).and_return([])
- end
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/hooks" do
- subject { namespace_project_hooks_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-end
diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb
deleted file mode 100644
index 6ec190ed777..00000000000
--- a/spec/features/security/project/public_access_spec.rb
+++ /dev/null
@@ -1,232 +0,0 @@
-require 'spec_helper'
-
-describe "Public Project Access", feature: true do
- let(:project) { create(:project) }
-
- let(:master) { create(:user) }
- let(:guest) { create(:user) }
- let(:reporter) { create(:user) }
-
- before do
- # public project
- project.visibility_level = Gitlab::VisibilityLevel::PUBLIC
- project.save!
-
- # full access
- project.team << [master, :master]
-
- # readonly
- project.team << [reporter, :reporter]
-
- end
-
- describe "Project should be public" do
- subject { project }
-
- describe '#public?' do
- subject { super().public? }
- it { is_expected.to be_truthy }
- end
- end
-
- describe "GET /:project_path" do
- subject { namespace_project_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/tree/master" do
- subject { namespace_project_tree_path(project.namespace, project, project.repository.root_ref) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/commits/master" do
- subject { namespace_project_commits_path(project.namespace, project, project.repository.root_ref, limit: 1) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/commit/:sha" do
- subject { namespace_project_commit_path(project.namespace, project, project.repository.commit) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/compare" do
- subject { namespace_project_compare_index_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/project_members" do
- subject { namespace_project_project_members_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/blob" do
- before do
- commit = project.repository.commit
- path = '.gitignore'
- @blob_path = namespace_project_blob_path(project.namespace, project, File.join(commit.id, path))
- end
-
- it { expect(@blob_path).to be_allowed_for master }
- it { expect(@blob_path).to be_allowed_for reporter }
- it { expect(@blob_path).to be_allowed_for :admin }
- it { expect(@blob_path).to be_allowed_for guest }
- it { expect(@blob_path).to be_allowed_for :user }
- it { expect(@blob_path).to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/edit" do
- subject { edit_namespace_project_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/deploy_keys" do
- subject { namespace_project_deploy_keys_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/issues" do
- subject { namespace_project_issues_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/snippets" do
- subject { namespace_project_snippets_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/snippets/new" do
- subject { new_namespace_project_snippet_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/merge_requests" do
- subject { namespace_project_merge_requests_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/merge_requests/new" do
- subject { new_namespace_project_merge_request_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-
- describe "GET /:project_path/branches" do
- subject { namespace_project_branches_path(project.namespace, project) }
-
- before do
- # Speed increase
- allow_any_instance_of(Project).to receive(:branches).and_return([])
- end
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/tags" do
- subject { namespace_project_tags_path(project.namespace, project) }
-
- before do
- # Speed increase
- allow_any_instance_of(Project).to receive(:tags).and_return([])
- end
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_allowed_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_allowed_for guest }
- it { is_expected.to be_allowed_for :user }
- it { is_expected.to be_allowed_for :visitor }
- end
-
- describe "GET /:project_path/hooks" do
- subject { namespace_project_hooks_path(project.namespace, project) }
-
- it { is_expected.to be_allowed_for master }
- it { is_expected.to be_denied_for reporter }
- it { is_expected.to be_allowed_for :admin }
- it { is_expected.to be_denied_for guest }
- it { is_expected.to be_denied_for :user }
- it { is_expected.to be_denied_for :visitor }
- end
-end
diff --git a/spec/features/users_spec.rb b/spec/features/users_spec.rb
deleted file mode 100644
index 4cfaab03caf..00000000000
--- a/spec/features/users_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'spec_helper'
-
-feature 'Users' do
- around do |ex|
- old_url_options = Rails.application.routes.default_url_options
- Rails.application.routes.default_url_options = { host: 'example.foo' }
- ex.run
- Rails.application.routes.default_url_options = old_url_options
- end
-
- scenario 'GET /users/sign_in creates a new user account' do
- visit new_user_session_path
- fill_in 'user_name', with: 'Name Surname'
- fill_in 'user_username', with: 'Great'
- fill_in 'user_email', with: 'name@mail.com'
- fill_in 'user_password_sign_up', with: 'password1234'
- expect { click_button 'Sign up' }.to change { User.count }.by(1)
- end
-
- scenario 'Successful user signin invalidates password reset token' do
- user = create(:user)
- expect(user.reset_password_token).to be_nil
-
- visit new_user_password_path
- fill_in 'user_email', with: user.email
- click_button 'Reset password'
-
- user.reload
- expect(user.reset_password_token).not_to be_nil
-
- login_with(user)
- expect(current_path).to eq root_path
-
- user.reload
- expect(user.reset_password_token).to be_nil
- end
-end