diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-26 21:09:24 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-26 21:09:24 +0300 |
commit | 619d0b6922a6cf95d291fbbf5fa3d09e772a1ea8 (patch) | |
tree | fb8f8e036cec1b32166206bb5102af6c5dca8cfe /spec | |
parent | 17ab40ca089e1aef61a83f77ab6df62a72f6ce06 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
73 files changed, 344 insertions, 236 deletions
diff --git a/spec/features/admin/admin_health_check_spec.rb b/spec/features/admin/admin_health_check_spec.rb index 97c34d55d73..9ce96fe8020 100644 --- a/spec/features/admin/admin_health_check_spec.rb +++ b/spec/features/admin/admin_health_check_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe "Admin Health Check", :feature do include StubENV - set(:admin) { create(:admin) } + let_it_be(:admin) { create(:admin) } before do stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false') diff --git a/spec/features/boards/multiple_boards_spec.rb b/spec/features/boards/multiple_boards_spec.rb index 2389707be9c..8e56be6bdd0 100644 --- a/spec/features/boards/multiple_boards_spec.rb +++ b/spec/features/boards/multiple_boards_spec.rb @@ -3,11 +3,11 @@ require 'spec_helper' describe 'Multiple Issue Boards', :js do - set(:user) { create(:user) } - set(:project) { create(:project, :public) } - set(:planning) { create(:label, project: project, name: 'Planning') } - set(:board) { create(:board, name: 'board1', project: project) } - set(:board2) { create(:board, name: 'board2', project: project) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :public) } + let_it_be(:planning) { create(:label, project: project, name: 'Planning') } + let_it_be(:board) { create(:board, name: 'board1', project: project) } + let_it_be(:board2) { create(:board, name: 'board2', project: project) } let(:parent) { project } let(:boards_path) { project_boards_path(project) } diff --git a/spec/features/boards/new_issue_spec.rb b/spec/features/boards/new_issue_spec.rb index 730887370dd..2d41b5d612d 100644 --- a/spec/features/boards/new_issue_spec.rb +++ b/spec/features/boards/new_issue_spec.rb @@ -129,10 +129,10 @@ describe 'Issue Boards new issue', :js do end context 'group boards' do - set(:group) { create(:group, :public) } - set(:project) { create(:project, namespace: group) } - set(:group_board) { create(:board, group: group) } - set(:list) { create(:list, board: group_board, position: 0) } + let_it_be(:group) { create(:group, :public) } + let_it_be(:project) { create(:project, namespace: group) } + let_it_be(:group_board) { create(:board, group: group) } + let_it_be(:list) { create(:list, board: group_board, position: 0) } context 'for unauthorized users' do before do diff --git a/spec/features/commits_spec.rb b/spec/features/commits_spec.rb index f538df89fd3..d8b886b239f 100644 --- a/spec/features/commits_spec.rb +++ b/spec/features/commits_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' describe 'Commits' do - let(:project) { create(:project, :repository) } - let(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository) } + let_it_be(:user) { create(:user) } describe 'CI' do before do @@ -183,4 +183,41 @@ describe 'Commits' do expect(find('.js-project-refs-dropdown')).to have_content branch_name end end + + context 'viewing commits for an author' do + let(:author_commit) { project.repository.commits(nil, limit: 1).first } + let(:commits) { project.repository.commits(nil, author: author, limit: 40) } + + before do + project.add_maintainer(user) + sign_in(user) + visit project_commits_path(project, nil, author: author) + end + + shared_examples 'show commits by author' do + it "includes the author's commits" do + commits.each do |commit| + expect(page).to have_content("#{author_commit.author_name} authored #{commit.authored_date.strftime("%b %d, %Y")}") + end + end + end + + context 'author is complete' do + let(:author) { "#{author_commit.author_name} <#{author_commit.author_email}>" } + + it_behaves_like 'show commits by author' + end + + context 'author is just a name' do + let(:author) { "#{author_commit.author_name}" } + + it_behaves_like 'show commits by author' + end + + context 'author is just an email' do + let(:author) { "#{author_commit.author_email}" } + + it_behaves_like 'show commits by author' + end + end end diff --git a/spec/features/dashboard/root_explore_spec.rb b/spec/features/dashboard/root_explore_spec.rb index 5b686d8b6f1..0e065dbed67 100644 --- a/spec/features/dashboard/root_explore_spec.rb +++ b/spec/features/dashboard/root_explore_spec.rb @@ -3,17 +3,17 @@ require 'spec_helper' describe 'Root explore' do - set(:public_project) { create(:project, :public) } - set(:archived_project) { create(:project, :archived) } - set(:internal_project) { create(:project, :internal) } - set(:private_project) { create(:project, :private) } + let_it_be(:public_project) { create(:project, :public) } + let_it_be(:archived_project) { create(:project, :archived) } + let_it_be(:internal_project) { create(:project, :internal) } + let_it_be(:private_project) { create(:project, :private) } before do allow(Gitlab).to receive(:com?).and_return(true) end context 'when logged in' do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } before do sign_in(user) diff --git a/spec/features/explore/user_explores_projects_spec.rb b/spec/features/explore/user_explores_projects_spec.rb index 9c3686dba2d..c64709c0b55 100644 --- a/spec/features/explore/user_explores_projects_spec.rb +++ b/spec/features/explore/user_explores_projects_spec.rb @@ -3,10 +3,10 @@ require 'spec_helper' describe 'User explores projects' do - set(:archived_project) { create(:project, :archived) } - set(:internal_project) { create(:project, :internal) } - set(:private_project) { create(:project, :private) } - set(:public_project) { create(:project, :public) } + let_it_be(:archived_project) { create(:project, :archived) } + let_it_be(:internal_project) { create(:project, :internal) } + let_it_be(:private_project) { create(:project, :private) } + let_it_be(:public_project) { create(:project, :public) } context 'when not signed in' do context 'when viewing public projects' do @@ -19,7 +19,7 @@ describe 'User explores projects' do end context 'when signed in' do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } before do sign_in(user) diff --git a/spec/features/groups/labels/user_sees_links_to_issuables_spec.rb b/spec/features/groups/labels/user_sees_links_to_issuables_spec.rb index 6199b566ebc..38561c71323 100644 --- a/spec/features/groups/labels/user_sees_links_to_issuables_spec.rb +++ b/spec/features/groups/labels/user_sees_links_to_issuables_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'Groups > Labels > User sees links to issuables' do - set(:group) { create(:group, :public) } + let_it_be(:group) { create(:group, :public) } before do create(:group_label, group: group, title: 'bug') diff --git a/spec/features/issues/user_views_issues_spec.rb b/spec/features/issues/user_views_issues_spec.rb index 8f174472f49..796e618c7c8 100644 --- a/spec/features/issues/user_views_issues_spec.rb +++ b/spec/features/issues/user_views_issues_spec.rb @@ -7,7 +7,7 @@ describe "User views issues" do let!(:open_issue1) { create(:issue, project: project) } let!(:open_issue2) { create(:issue, project: project) } - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } shared_examples "opens issue from list" do it "opens issue" do diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb index f24e7090605..b22f5a6c211 100644 --- a/spec/features/merge_request/user_posts_notes_spec.rb +++ b/spec/features/merge_request/user_posts_notes_spec.rb @@ -5,8 +5,7 @@ require 'spec_helper' describe 'Merge request > User posts notes', :js do include NoteInteractionHelpers - set(:project) { create(:project, :repository) } - + let_it_be(:project) { create(:project, :repository) } let(:user) { project.creator } let(:merge_request) do create(:merge_request, source_project: project, target_project: project) diff --git a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb index 3c217786d43..5a84bcb0c44 100644 --- a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb @@ -10,10 +10,10 @@ describe 'User sorts merge requests' do create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test') end - set(:user) { create(:user) } - set(:group) { create(:group) } - set(:group_member) { create(:group_member, :maintainer, user: user, group: group) } - set(:project) { create(:project, :public, group: group) } + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:group_member) { create(:group_member, :maintainer, user: user, group: group) } + let_it_be(:project) { create(:project, :public, group: group) } before do sign_in(user) diff --git a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb index 932090bdbce..4aaa20f0455 100644 --- a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'User views open merge requests' do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } shared_examples_for 'shows merge requests' do it 'shows merge requests' do @@ -12,7 +12,7 @@ describe 'User views open merge requests' do end context 'when project is public' do - set(:project) { create(:project, :public, :repository) } + let_it_be(:project) { create(:project, :public, :repository) } context 'when not signed in' do context "when the target branch is the project's default branch" do @@ -114,7 +114,7 @@ describe 'User views open merge requests' do context 'when project is internal' do let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } - set(:project) { create(:project, :internal, :repository) } + let_it_be(:project) { create(:project, :internal, :repository) } context 'when signed in' do before do diff --git a/spec/features/milestones/user_creates_milestone_spec.rb b/spec/features/milestones/user_creates_milestone_spec.rb index 5c93ddcf6f8..368a2ddecdf 100644 --- a/spec/features/milestones/user_creates_milestone_spec.rb +++ b/spec/features/milestones/user_creates_milestone_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' describe "User creates milestone", :js do - set(:user) { create(:user) } - set(:project) { create(:project) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project) } before do project.add_developer(user) diff --git a/spec/features/milestones/user_edits_milestone_spec.rb b/spec/features/milestones/user_edits_milestone_spec.rb index b41b8f3282f..be05685aff7 100644 --- a/spec/features/milestones/user_edits_milestone_spec.rb +++ b/spec/features/milestones/user_edits_milestone_spec.rb @@ -3,9 +3,9 @@ require 'spec_helper' describe "User edits milestone", :js do - set(:user) { create(:user) } - set(:project) { create(:project) } - set(:milestone) { create(:milestone, project: project, start_date: Date.today, due_date: 5.days.from_now) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:milestone) { create(:milestone, project: project, start_date: Date.today, due_date: 5.days.from_now) } before do project.add_developer(user) diff --git a/spec/features/milestones/user_promotes_milestone_spec.rb b/spec/features/milestones/user_promotes_milestone_spec.rb index 7678b6cbfa5..d14097e1ef4 100644 --- a/spec/features/milestones/user_promotes_milestone_spec.rb +++ b/spec/features/milestones/user_promotes_milestone_spec.rb @@ -3,10 +3,10 @@ require 'spec_helper' describe 'User promotes milestone' do - set(:group) { create(:group) } - set(:user) { create(:user) } - set(:project) { create(:project, namespace: group) } - set(:milestone) { create(:milestone, project: project) } + let_it_be(:group) { create(:group) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, namespace: group) } + let_it_be(:milestone) { create(:milestone, project: project) } context 'when user can admin group milestones' do before do diff --git a/spec/features/milestones/user_views_milestone_spec.rb b/spec/features/milestones/user_views_milestone_spec.rb index 71abb195ad1..cbc21dd02e5 100644 --- a/spec/features/milestones/user_views_milestone_spec.rb +++ b/spec/features/milestones/user_views_milestone_spec.rb @@ -3,10 +3,10 @@ require 'spec_helper' describe "User views milestone" do - set(:user) { create(:user) } - set(:project) { create(:project) } - set(:milestone) { create(:milestone, project: project) } - set(:labels) { create_list(:label, 2, project: project) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:milestone) { create(:milestone, project: project) } + let_it_be(:labels) { create_list(:label, 2, project: project) } before do project.add_developer(user) diff --git a/spec/features/milestones/user_views_milestones_spec.rb b/spec/features/milestones/user_views_milestones_spec.rb index c91fe95aa77..e17797a8165 100644 --- a/spec/features/milestones/user_views_milestones_spec.rb +++ b/spec/features/milestones/user_views_milestones_spec.rb @@ -3,9 +3,9 @@ require 'spec_helper' describe "User views milestones" do - set(:user) { create(:user) } - set(:project) { create(:project) } - set(:milestone) { create(:milestone, project: project) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:milestone) { create(:milestone, project: project) } before do project.add_developer(user) @@ -22,8 +22,8 @@ describe "User views milestones" do end context "with issues" do - set(:issue) { create(:issue, project: project, milestone: milestone) } - set(:closed_issue) { create(:closed_issue, project: project, milestone: milestone) } + let_it_be(:issue) { create(:issue, project: project, milestone: milestone) } + let_it_be(:closed_issue) { create(:closed_issue, project: project, milestone: milestone) } it "opens milestone" do click_link(milestone.title) @@ -38,7 +38,7 @@ describe "User views milestones" do end context "with associated releases" do - set(:first_release) { create(:release, project: project, name: "The first release", milestones: [milestone], released_at: Time.zone.parse('2019-10-07')) } + let_it_be(:first_release) { create(:release, project: project, name: "The first release", milestones: [milestone], released_at: Time.zone.parse('2019-10-07')) } context "with a single associated release" do it "shows the associated release" do @@ -48,10 +48,10 @@ describe "User views milestones" do end context "with lots of associated releases" do - set(:second_release) { create(:release, project: project, name: "The second release", milestones: [milestone], released_at: first_release.released_at + 1.day) } - set(:third_release) { create(:release, project: project, name: "The third release", milestones: [milestone], released_at: second_release.released_at + 1.day) } - set(:fourth_release) { create(:release, project: project, name: "The fourth release", milestones: [milestone], released_at: third_release.released_at + 1.day) } - set(:fifth_release) { create(:release, project: project, name: "The fifth release", milestones: [milestone], released_at: fourth_release.released_at + 1.day) } + let_it_be(:second_release) { create(:release, project: project, name: "The second release", milestones: [milestone], released_at: first_release.released_at + 1.day) } + let_it_be(:third_release) { create(:release, project: project, name: "The third release", milestones: [milestone], released_at: second_release.released_at + 1.day) } + let_it_be(:fourth_release) { create(:release, project: project, name: "The fourth release", milestones: [milestone], released_at: third_release.released_at + 1.day) } + let_it_be(:fifth_release) { create(:release, project: project, name: "The fifth release", milestones: [milestone], released_at: fourth_release.released_at + 1.day) } it "shows the associated releases and the truncation text" do expect(page).to have_content("Releases #{fifth_release.name} • #{fourth_release.name} • #{third_release.name} • 2 more releases") @@ -66,9 +66,9 @@ describe "User views milestones" do end describe "User views milestones with no MR" do - set(:user) { create(:user) } - set(:project) { create(:project, :merge_requests_disabled) } - set(:milestone) { create(:milestone, project: project) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :merge_requests_disabled) } + let_it_be(:milestone) { create(:milestone, project: project) } before do project.add_developer(user) diff --git a/spec/features/projects/artifacts/user_downloads_artifacts_spec.rb b/spec/features/projects/artifacts/user_downloads_artifacts_spec.rb index fb70076fcf1..3cbf276c02d 100644 --- a/spec/features/projects/artifacts/user_downloads_artifacts_spec.rb +++ b/spec/features/projects/artifacts/user_downloads_artifacts_spec.rb @@ -3,9 +3,9 @@ require "spec_helper" describe "User downloads artifacts" do - set(:project) { create(:project, :repository, :public) } - set(:pipeline) { create(:ci_empty_pipeline, status: :success, sha: project.commit.id, project: project) } - set(:job) { create(:ci_build, :artifacts, :success, pipeline: pipeline) } + let_it_be(:project) { create(:project, :repository, :public) } + let_it_be(:pipeline) { create(:ci_empty_pipeline, status: :success, sha: project.commit.id, project: project) } + let_it_be(:job) { create(:ci_build, :artifacts, :success, pipeline: pipeline) } shared_examples "downloading" do it "downloads the zip" do diff --git a/spec/features/projects/badges/pipeline_badge_spec.rb b/spec/features/projects/badges/pipeline_badge_spec.rb index 5ddaf1e1591..b2f09a9d0b7 100644 --- a/spec/features/projects/badges/pipeline_badge_spec.rb +++ b/spec/features/projects/badges/pipeline_badge_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'Pipeline Badge' do - set(:project) { create(:project, :repository, :public) } + let_it_be(:project) { create(:project, :repository, :public) } let(:ref) { project.default_branch } context 'when the project has a pipeline' do diff --git a/spec/features/projects/branches/user_deletes_branch_spec.rb b/spec/features/projects/branches/user_deletes_branch_spec.rb index ad63a75a149..184954c1c78 100644 --- a/spec/features/projects/branches/user_deletes_branch_spec.rb +++ b/spec/features/projects/branches/user_deletes_branch_spec.rb @@ -3,7 +3,7 @@ require "spec_helper" describe "User deletes branch", :js do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } let(:project) { create(:project, :repository) } before do diff --git a/spec/features/projects/branches/user_views_branches_spec.rb b/spec/features/projects/branches/user_views_branches_spec.rb index f3810611094..e127e784b94 100644 --- a/spec/features/projects/branches/user_views_branches_spec.rb +++ b/spec/features/projects/branches/user_views_branches_spec.rb @@ -3,8 +3,8 @@ require "spec_helper" describe "User views branches" do - set(:project) { create(:project, :repository) } - set(:user) { project.owner } + let_it_be(:project) { create(:project, :repository) } + let_it_be(:user) { project.owner } before do sign_in(user) @@ -23,7 +23,7 @@ describe "User views branches" do end context "protected branches" do - set(:protected_branch) { create(:protected_branch, project: project) } + let_it_be(:protected_branch) { create(:protected_branch, project: project) } before do visit(project_protected_branches_path(project)) diff --git a/spec/features/projects/commit/user_views_user_status_on_commit_spec.rb b/spec/features/projects/commit/user_views_user_status_on_commit_spec.rb index e78b7f7ae08..c07f6081d2c 100644 --- a/spec/features/projects/commit/user_views_user_status_on_commit_spec.rb +++ b/spec/features/projects/commit/user_views_user_status_on_commit_spec.rb @@ -5,8 +5,8 @@ require 'spec_helper' describe 'Project > Commit > View user status' do include RepoHelpers - set(:project) { create(:project, :repository) } - set(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository) } + let_it_be(:user) { create(:user) } let(:commit_author) { create(:user, email: sample_commit.author_email) } before do diff --git a/spec/features/projects/labels/user_creates_labels_spec.rb b/spec/features/projects/labels/user_creates_labels_spec.rb index 257e064ae3d..180cd8eff14 100644 --- a/spec/features/projects/labels/user_creates_labels_spec.rb +++ b/spec/features/projects/labels/user_creates_labels_spec.rb @@ -3,8 +3,8 @@ require "spec_helper" describe "User creates labels" do - set(:project) { create(:project_empty_repo, :public) } - set(:user) { create(:user) } + let_it_be(:project) { create(:project_empty_repo, :public) } + let_it_be(:user) { create(:user) } shared_examples_for "label creation" do it "creates new label" do @@ -66,7 +66,7 @@ describe "User creates labels" do end context "in another project" do - set(:another_project) { create(:project_empty_repo, :public) } + let_it_be(:another_project) { create(:project_empty_repo, :public) } before do create(:label, project: project, title: "bug") # Create label for `project` (not `another_project`) project. diff --git a/spec/features/projects/labels/user_edits_labels_spec.rb b/spec/features/projects/labels/user_edits_labels_spec.rb index da33ae3af3a..add959ccda6 100644 --- a/spec/features/projects/labels/user_edits_labels_spec.rb +++ b/spec/features/projects/labels/user_edits_labels_spec.rb @@ -3,9 +3,9 @@ require "spec_helper" describe "User edits labels" do - set(:project) { create(:project_empty_repo, :public) } - set(:label) { create(:label, project: project) } - set(:user) { create(:user) } + let_it_be(:project) { create(:project_empty_repo, :public) } + let_it_be(:label) { create(:label, project: project) } + let_it_be(:user) { create(:user) } before do project.add_maintainer(user) diff --git a/spec/features/projects/labels/user_promotes_label_spec.rb b/spec/features/projects/labels/user_promotes_label_spec.rb index fdecafd4c50..cf7320d3cf9 100644 --- a/spec/features/projects/labels/user_promotes_label_spec.rb +++ b/spec/features/projects/labels/user_promotes_label_spec.rb @@ -3,10 +3,10 @@ require 'spec_helper' describe 'User promotes label' do - set(:group) { create(:group) } - set(:user) { create(:user) } - set(:project) { create(:project, namespace: group) } - set(:label) { create(:label, project: project) } + let_it_be(:group) { create(:group) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, namespace: group) } + let_it_be(:label) { create(:label, project: project) } context 'when user can admin group labels' do before do diff --git a/spec/features/projects/labels/user_sees_links_to_issuables_spec.rb b/spec/features/projects/labels/user_sees_links_to_issuables_spec.rb index 7a9b9e6eac2..f60e7e9703f 100644 --- a/spec/features/projects/labels/user_sees_links_to_issuables_spec.rb +++ b/spec/features/projects/labels/user_sees_links_to_issuables_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'Projects > Labels > User sees links to issuables' do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } before do label # creates the label @@ -50,7 +50,7 @@ describe 'Projects > Labels > User sees links to issuables' do end context 'with a group label' do - set(:group) { create(:group) } + let_it_be(:group) { create(:group) } let(:label) { create(:group_label, group: group, title: 'bug') } context 'when merge requests and issues are enabled for the project' do diff --git a/spec/features/projects/labels/user_views_labels_spec.rb b/spec/features/projects/labels/user_views_labels_spec.rb index a6f7968c535..7f70ac903d6 100644 --- a/spec/features/projects/labels/user_views_labels_spec.rb +++ b/spec/features/projects/labels/user_views_labels_spec.rb @@ -3,9 +3,8 @@ require "spec_helper" describe "User views labels" do - set(:project) { create(:project_empty_repo, :public) } - set(:user) { create(:user) } - + let_it_be(:project) { create(:project_empty_repo, :public) } + let_it_be(:user) { create(:user) } let(:label_titles) { %w[bug enhancement feature] } let!(:prioritized_label) { create(:label, project: project, title: 'prioritized-label-name', priority: 1) } diff --git a/spec/features/projects/settings/project_settings_spec.rb b/spec/features/projects/settings/project_settings_spec.rb index b601866c96b..9fc91550667 100644 --- a/spec/features/projects/settings/project_settings_spec.rb +++ b/spec/features/projects/settings/project_settings_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'Projects settings' do - set(:project) { create(:project) } + let_it_be(:project) { create(:project) } let(:user) { project.owner } let(:panel) { find('.general-settings', match: :first) } let(:button) { panel.find('.btn.js-settings-toggle') } diff --git a/spec/features/projects/show/user_sees_git_instructions_spec.rb b/spec/features/projects/show/user_sees_git_instructions_spec.rb index dde9490a5e1..0c486056329 100644 --- a/spec/features/projects/show/user_sees_git_instructions_spec.rb +++ b/spec/features/projects/show/user_sees_git_instructions_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'Projects > Show > User sees Git instructions' do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } shared_examples_for 'redirects to the sign in page' do it 'redirects to the sign in page' do @@ -49,7 +49,7 @@ describe 'Projects > Show > User sees Git instructions' do context 'when project is public' do context 'when project has no repo' do - set(:project) { create(:project, :public) } + let_it_be(:project) { create(:project, :public) } before do sign_in(project.owner) @@ -60,7 +60,7 @@ describe 'Projects > Show > User sees Git instructions' do end context 'when project is empty' do - set(:project) { create(:project_empty_repo, :public) } + let_it_be(:project) { create(:project_empty_repo, :public) } context 'when not signed in' do before do @@ -98,7 +98,7 @@ describe 'Projects > Show > User sees Git instructions' do end context 'when project is not empty' do - set(:project) { create(:project, :public, :repository) } + let_it_be(:project) { create(:project, :public, :repository) } before do visit(project_path(project)) @@ -141,7 +141,7 @@ describe 'Projects > Show > User sees Git instructions' do end context 'when project is internal' do - set(:project) { create(:project, :internal, :repository) } + let_it_be(:project) { create(:project, :internal, :repository) } context 'when not signed in' do before do @@ -163,7 +163,7 @@ describe 'Projects > Show > User sees Git instructions' do end context 'when project is private' do - set(:project) { create(:project, :private) } + let_it_be(:project) { create(:project, :private) } before do visit(project_path(project)) diff --git a/spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb b/spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb index cf1a679102c..5aba16597b8 100644 --- a/spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb +++ b/spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'Projects > Show > User sees last commit CI status' do - set(:project) { create(:project, :repository, :public) } + let_it_be(:project) { create(:project, :repository, :public) } it 'shows the project README', :js do project.enable_ci diff --git a/spec/features/projects/show/user_sees_readme_spec.rb b/spec/features/projects/show/user_sees_readme_spec.rb index 98906de4620..52745b06cd3 100644 --- a/spec/features/projects/show/user_sees_readme_spec.rb +++ b/spec/features/projects/show/user_sees_readme_spec.rb @@ -3,9 +3,8 @@ require 'spec_helper' describe 'Projects > Show > User sees README' do - set(:user) { create(:user) } - - set(:project) { create(:project, :repository, :public) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository, :public) } it 'shows the project README', :js do visit project_path(project) diff --git a/spec/features/projects/user_sees_user_popover_spec.rb b/spec/features/projects/user_sees_user_popover_spec.rb index adbf9073d59..fafb3773866 100644 --- a/spec/features/projects/user_sees_user_popover_spec.rb +++ b/spec/features/projects/user_sees_user_popover_spec.rb @@ -3,8 +3,7 @@ require 'spec_helper' describe 'User sees user popover', :js do - set(:project) { create(:project, :repository) } - + let_it_be(:project) { create(:project, :repository) } let(:user) { project.creator } let(:merge_request) do create(:merge_request, source_project: project, target_project: project) diff --git a/spec/features/projects/wiki/markdown_preview_spec.rb b/spec/features/projects/wiki/markdown_preview_spec.rb index 331ba58d067..7d18c0f7a14 100644 --- a/spec/features/projects/wiki/markdown_preview_spec.rb +++ b/spec/features/projects/wiki/markdown_preview_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'Projects > Wiki > User previews markdown changes', :js do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } let(:project) { create(:project, :wiki_repo, namespace: user.namespace) } let(:wiki_page) { create(:wiki_page, wiki: project.wiki, attrs: { title: 'home', content: '[some link](other-page)' }) } let(:wiki_content) do diff --git a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb index 7503c8aa52e..e67982bbd31 100644 --- a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb @@ -3,6 +3,8 @@ require "spec_helper" describe "User creates wiki page" do + include WikiHelpers + let(:user) { create(:user) } let(:wiki) { ProjectWiki.new(project, user) } let(:project) { create(:project) } @@ -14,9 +16,11 @@ describe "User creates wiki page" do end context "when wiki is empty" do - before do + before do |example| visit(project_wikis_path(project)) + wait_for_svg_to_be_loaded(example) + click_link "Create your first page" end @@ -45,7 +49,7 @@ describe "User creates wiki page" do expect(page).to have_content("Create New Page") end - it "shows non-escaped link in the pages list", :quarantine do + it "shows non-escaped link in the pages list" do fill_in(:wiki_title, with: "one/two/three-test") page.within(".wiki-form") do @@ -163,7 +167,7 @@ describe "User creates wiki page" do expect(page).to have_link('Link to Home', href: "/#{project.full_path}/-/wikis/home") end - it_behaves_like 'wiki file attachments', :quarantine + it_behaves_like 'wiki file attachments' end context "in a group namespace", :js do @@ -175,7 +179,7 @@ describe "User creates wiki page" do expect(page).to have_field("wiki[message]", with: "Create home") end - it "creates a page from the home page", :quarantine do + it "creates a page from the home page" do page.within(".wiki-form") do fill_in(:wiki_content, with: "My awesome wiki!") diff --git a/spec/features/projects/wiki/user_views_wiki_page_spec.rb b/spec/features/projects/wiki/user_views_wiki_page_spec.rb index c7856342fb2..1a9cde4571e 100644 --- a/spec/features/projects/wiki/user_views_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_views_wiki_page_spec.rb @@ -19,9 +19,12 @@ describe 'User views a wiki page' do sign_in(user) end - context 'when wiki is empty' do + context 'when wiki is empty', :js do before do - visit(project_wikis_path(project)) + visit project_wikis_path(project) + + wait_for_svg_to_be_loaded + click_link "Create your first page" fill_in(:wiki_title, with: 'one/two/three-test') @@ -32,7 +35,7 @@ describe 'User views a wiki page' do end end - it 'shows the history of a page that has a path', :js do + it 'shows the history of a page that has a path' do expect(current_path).to include('one/two/three-test') first(:link, text: 'three').click @@ -45,7 +48,7 @@ describe 'User views a wiki page' do end end - it 'shows an old version of a page', :js do + it 'shows an old version of a page' do expect(current_path).to include('one/two/three-test') expect(find('.wiki-pages')).to have_content('three') @@ -162,9 +165,12 @@ describe 'User views a wiki page' do end it 'opens a default wiki page', :js do - visit(project_path(project)) + visit project_path(project) find('.shortcuts-wiki').click + + wait_for_svg_to_be_loaded + click_link "Create your first page" expect(page).to have_content('Create New Page') diff --git a/spec/features/read_only_spec.rb b/spec/features/read_only_spec.rb index 619d34ebed4..a33535a7b0b 100644 --- a/spec/features/read_only_spec.rb +++ b/spec/features/read_only_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'read-only message' do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } before do sign_in(user) diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb index ed1dbe15d65..45b57b5cb1b 100644 --- a/spec/features/security/project/internal_access_spec.rb +++ b/spec/features/security/project/internal_access_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe "Internal Project Access" do include AccessMatchers - set(:project) { create(:project, :internal, :repository) } + let_it_be(:project, reload: true) { create(:project, :internal, :repository) } describe "Project should be internal" do describe '#internal?' do diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb index 97e6b3bd4ff..9aeb3ffbd43 100644 --- a/spec/features/security/project/private_access_spec.rb +++ b/spec/features/security/project/private_access_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe "Private Project Access" do include AccessMatchers - set(:project) { create(:project, :private, :repository, public_builds: false) } + let_it_be(:project, reload: true) { create(:project, :private, :repository, public_builds: false) } describe "Project should be private" do describe '#private?' do diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb index 24bbb8d9b9e..4d8c2c7822c 100644 --- a/spec/features/security/project/public_access_spec.rb +++ b/spec/features/security/project/public_access_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe "Public Project Access" do include AccessMatchers - set(:project) { create(:project, :public, :repository) } + let_it_be(:project, reload: true) { create(:project, :public, :repository) } describe "Project should be public" do describe '#public?' do diff --git a/spec/features/user_sorts_things_spec.rb b/spec/features/user_sorts_things_spec.rb index 41f8f3761e8..8397854df27 100644 --- a/spec/features/user_sorts_things_spec.rb +++ b/spec/features/user_sorts_things_spec.rb @@ -10,10 +10,10 @@ describe "User sorts things" do include Spec::Support::Helpers::Features::SortingHelpers include DashboardHelper - set(:project) { create(:project_empty_repo, :public) } - set(:current_user) { create(:user) } # Using `current_user` instead of just `user` because of the hardoced call in `assigned_mrs_dashboard_path` which is used below. - set(:issue) { create(:issue, project: project, author: current_user) } - set(:merge_request) { create(:merge_request, target_project: project, source_project: project, author: current_user) } + let_it_be(:project) { create(:project_empty_repo, :public) } + let_it_be(:current_user) { create(:user) } # Using `current_user` instead of just `user` because of the hardoced call in `assigned_mrs_dashboard_path` which is used below. + let_it_be(:issue) { create(:issue, project: project, author: current_user) } + let_it_be(:merge_request) { create(:merge_request, target_project: project, source_project: project, author: current_user) } before do project.add_developer(current_user) diff --git a/spec/fixtures/trace/sample_trace b/spec/fixtures/trace/sample_trace index d774d154496..f768c038f9e 100644 --- a/spec/fixtures/trace/sample_trace +++ b/spec/fixtures/trace/sample_trace @@ -1442,7 +1442,7 @@ TodoService marks a single todo id as done caches the number of todos of a user -Gitlab::ImportExport::ProjectTreeSaver +Gitlab::ImportExport::Project::TreeSaver saves the project tree into a json object saves project successfully JSON diff --git a/spec/lib/gitlab/checks/branch_check_spec.rb b/spec/lib/gitlab/checks/branch_check_spec.rb index 7cc1722dfd4..fd7eaa1603f 100644 --- a/spec/lib/gitlab/checks/branch_check_spec.rb +++ b/spec/lib/gitlab/checks/branch_check_spec.rb @@ -15,7 +15,7 @@ describe Gitlab::Checks::BranchCheck do let(:ref) { 'refs/heads/master' } it 'raises an error' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'The default branch of a project cannot be deleted.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'The default branch of a project cannot be deleted.') end end @@ -28,7 +28,7 @@ describe Gitlab::Checks::BranchCheck do it 'raises an error if the user is not allowed to do forced pushes to protected branches' do expect(Gitlab::Checks::ForcePush).to receive(:force_push?).and_return(true) - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to force push code to a protected branch on this project.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You are not allowed to force push code to a protected branch on this project.') end it 'raises an error if the user is not allowed to merge to protected branches' do @@ -38,13 +38,13 @@ describe Gitlab::Checks::BranchCheck do expect(user_access).to receive(:can_merge_to_branch?).and_return(false) expect(user_access).to receive(:can_push_to_branch?).and_return(false) - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to merge code into protected branches on this project.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You are not allowed to merge code into protected branches on this project.') end it 'raises an error if the user is not allowed to push to protected branches' do expect(user_access).to receive(:can_push_to_branch?).and_return(false) - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to push code to protected branches on this project.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You are not allowed to push code to protected branches on this project.') end context 'when project repository is empty' do @@ -58,7 +58,7 @@ describe Gitlab::Checks::BranchCheck do end it 'raises an error' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, /Ask a project Owner or Maintainer to create a default branch/) + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, /Ask a project Owner or Maintainer to create a default branch/) end end @@ -109,7 +109,7 @@ describe Gitlab::Checks::BranchCheck do end it 'raises an error' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to create protected branches on this project.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You are not allowed to create protected branches on this project.') end end @@ -135,7 +135,7 @@ describe Gitlab::Checks::BranchCheck do end it 'raises an error' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You can only use an existing protected branch ref as the basis of a new protected branch.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You can only use an existing protected branch ref as the basis of a new protected branch.') end end @@ -157,7 +157,7 @@ describe Gitlab::Checks::BranchCheck do context 'via SSH' do it 'raises an error' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You can only create protected branches using the web interface and API.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You can only create protected branches using the web interface and API.') end end end @@ -171,7 +171,7 @@ describe Gitlab::Checks::BranchCheck do context 'if the user is not allowed to delete protected branches' do it 'raises an error' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to delete protected branches from this project. Only a project maintainer or owner can delete a protected branch.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You are not allowed to delete protected branches from this project. Only a project maintainer or owner can delete a protected branch.') end end @@ -190,7 +190,7 @@ describe Gitlab::Checks::BranchCheck do context 'over SSH or HTTP' do it 'raises an error' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You can only delete protected branches using the web interface.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You can only delete protected branches using the web interface.') end end end diff --git a/spec/lib/gitlab/checks/diff_check_spec.rb b/spec/lib/gitlab/checks/diff_check_spec.rb index b9134b8d6ab..467b4ed3a21 100644 --- a/spec/lib/gitlab/checks/diff_check_spec.rb +++ b/spec/lib/gitlab/checks/diff_check_spec.rb @@ -34,7 +34,7 @@ describe Gitlab::Checks::DiffCheck do context 'when change is sent by a different user' do it 'raises an error if the user is not allowed to update the file' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, "The path 'README' is locked in Git LFS by #{lock.user.name}") + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, "The path 'README' is locked in Git LFS by #{lock.user.name}") end end diff --git a/spec/lib/gitlab/checks/lfs_check_spec.rb b/spec/lib/gitlab/checks/lfs_check_spec.rb index dad14e100a7..c86481d1abe 100644 --- a/spec/lib/gitlab/checks/lfs_check_spec.rb +++ b/spec/lib/gitlab/checks/lfs_check_spec.rb @@ -50,7 +50,7 @@ describe Gitlab::Checks::LfsCheck do end it 'fails if any LFS blobs are missing' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, /LFS objects are missing/) + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, /LFS objects are missing/) end it 'succeeds if LFS objects have already been uploaded' do diff --git a/spec/lib/gitlab/checks/push_check_spec.rb b/spec/lib/gitlab/checks/push_check_spec.rb index e1bd52d6c0b..857d71732fe 100644 --- a/spec/lib/gitlab/checks/push_check_spec.rb +++ b/spec/lib/gitlab/checks/push_check_spec.rb @@ -15,7 +15,7 @@ describe Gitlab::Checks::PushCheck do expect(user_access).to receive(:can_do_action?).with(:push_code).and_return(false) expect(project).to receive(:branch_allows_collaboration?).with(user_access.user, 'master').and_return(false) - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to push code to this project.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You are not allowed to push code to this project.') end end end diff --git a/spec/lib/gitlab/checks/tag_check_spec.rb b/spec/lib/gitlab/checks/tag_check_spec.rb index 80e9eb504ad..0c94171646e 100644 --- a/spec/lib/gitlab/checks/tag_check_spec.rb +++ b/spec/lib/gitlab/checks/tag_check_spec.rb @@ -11,7 +11,7 @@ describe Gitlab::Checks::TagCheck do it 'raises an error when user does not have access' do allow(user_access).to receive(:can_do_action?).with(:admin_tag).and_return(false) - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to change existing tags on this project.') + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You are not allowed to change existing tags on this project.') end context 'with protected tag' do @@ -27,7 +27,7 @@ describe Gitlab::Checks::TagCheck do let(:newrev) { '0000000000000000000000000000000000000000' } it 'is prevented' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, /cannot be deleted/) + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, /cannot be deleted/) end end @@ -36,7 +36,7 @@ describe Gitlab::Checks::TagCheck do let(:newrev) { '54fcc214b94e78d7a41a9a8fe6d87a5e59500e51' } it 'is prevented' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, /cannot be updated/) + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, /cannot be updated/) end end end @@ -47,7 +47,7 @@ describe Gitlab::Checks::TagCheck do let(:ref) { 'refs/tags/v9.1.0' } it 'prevents creation below access level' do - expect { subject.validate! }.to raise_error(Gitlab::GitAccess::UnauthorizedError, /allowed to create this tag as it is protected/) + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, /allowed to create this tag as it is protected/) end context 'when user has access' do diff --git a/spec/lib/gitlab/git_access_spec.rb b/spec/lib/gitlab/git_access_spec.rb index 0831021b22b..f95349a2125 100644 --- a/spec/lib/gitlab/git_access_spec.rb +++ b/spec/lib/gitlab/git_access_spec.rb @@ -32,8 +32,8 @@ describe Gitlab::GitAccess do it 'blocks ssh git push and pull' do aggregate_failures do - expect { push_access_check }.to raise_unauthorized('Git access over SSH is not allowed') - expect { pull_access_check }.to raise_unauthorized('Git access over SSH is not allowed') + expect { push_access_check }.to raise_forbidden('Git access over SSH is not allowed') + expect { pull_access_check }.to raise_forbidden('Git access over SSH is not allowed') end end end @@ -48,8 +48,8 @@ describe Gitlab::GitAccess do it 'blocks http push and pull' do aggregate_failures do - expect { push_access_check }.to raise_unauthorized('Git access over HTTP is not allowed') - expect { pull_access_check }.to raise_unauthorized('Git access over HTTP is not allowed') + expect { push_access_check }.to raise_forbidden('Git access over HTTP is not allowed') + expect { pull_access_check }.to raise_forbidden('Git access over HTTP is not allowed') end end @@ -58,7 +58,7 @@ describe Gitlab::GitAccess do it "doesn't block http pull" do aggregate_failures do - expect { pull_access_check }.not_to raise_unauthorized('Git access over HTTP is not allowed') + expect { pull_access_check }.not_to raise_forbidden('Git access over HTTP is not allowed') end end @@ -67,7 +67,7 @@ describe Gitlab::GitAccess do it "doesn't block http pull" do aggregate_failures do - expect { pull_access_check }.not_to raise_unauthorized('Git access over HTTP is not allowed') + expect { pull_access_check }.not_to raise_forbidden('Git access over HTTP is not allowed') end end end @@ -165,7 +165,7 @@ describe Gitlab::GitAccess do end it 'does not block pushes with "not found"' do - expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:auth_upload]) + expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:auth_upload]) end end @@ -178,7 +178,7 @@ describe Gitlab::GitAccess do end it 'blocks the push' do - expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:upload]) + expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:upload]) end end @@ -208,7 +208,7 @@ describe Gitlab::GitAccess do end it 'does not block pushes with "not found"' do - expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:upload]) + expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:upload]) end end @@ -285,8 +285,8 @@ describe Gitlab::GitAccess do it 'does not allow keys which are too small', :aggregate_failures do expect(actor).not_to be_valid - expect { pull_access_check }.to raise_unauthorized('Your SSH key must be at least 4096 bits.') - expect { push_access_check }.to raise_unauthorized('Your SSH key must be at least 4096 bits.') + expect { pull_access_check }.to raise_forbidden('Your SSH key must be at least 4096 bits.') + expect { push_access_check }.to raise_forbidden('Your SSH key must be at least 4096 bits.') end end @@ -297,8 +297,8 @@ describe Gitlab::GitAccess do it 'does not allow keys which are too small', :aggregate_failures do expect(actor).not_to be_valid - expect { pull_access_check }.to raise_unauthorized(/Your SSH key type is forbidden/) - expect { push_access_check }.to raise_unauthorized(/Your SSH key type is forbidden/) + expect { pull_access_check }.to raise_forbidden(/Your SSH key type is forbidden/) + expect { push_access_check }.to raise_forbidden(/Your SSH key type is forbidden/) end end end @@ -363,7 +363,7 @@ describe Gitlab::GitAccess do let(:authentication_abilities) { [] } it 'raises unauthorized with download error' do - expect { pull_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:auth_download]) + expect { pull_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:auth_download]) end context 'when authentication abilities include download code' do @@ -387,7 +387,7 @@ describe Gitlab::GitAccess do let(:authentication_abilities) { [] } it 'raises unauthorized with push error' do - expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:auth_upload]) + expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:auth_upload]) end context 'when authentication abilities include push code' do @@ -414,7 +414,7 @@ describe Gitlab::GitAccess do end context 'when calling git-upload-pack' do - it { expect { pull_access_check }.to raise_unauthorized('Pulling over HTTP is not allowed.') } + it { expect { pull_access_check }.to raise_forbidden('Pulling over HTTP is not allowed.') } end context 'when calling git-receive-pack' do @@ -428,7 +428,7 @@ describe Gitlab::GitAccess do end context 'when calling git-receive-pack' do - it { expect { push_access_check }.to raise_unauthorized('Pushing over HTTP is not allowed.') } + it { expect { push_access_check }.to raise_forbidden('Pushing over HTTP is not allowed.') } end context 'when calling git-upload-pack' do @@ -445,7 +445,7 @@ describe Gitlab::GitAccess do allow(Gitlab::Database).to receive(:read_only?) { true } end - it { expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:cannot_push_to_read_only]) } + it { expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:cannot_push_to_read_only]) } end end @@ -559,21 +559,21 @@ describe Gitlab::GitAccess do it 'disallows guests to pull' do project.add_guest(user) - expect { pull_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:download]) + expect { pull_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:download]) end it 'disallows blocked users to pull' do project.add_maintainer(user) user.block - expect { pull_access_check }.to raise_unauthorized('Your account has been blocked.') + expect { pull_access_check }.to raise_forbidden('Your account has been blocked.') end it 'disallows deactivated users to pull' do project.add_maintainer(user) user.deactivate! - expect { pull_access_check }.to raise_unauthorized("Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at #{Gitlab.config.gitlab.url}") + expect { pull_access_check }.to raise_forbidden("Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at #{Gitlab.config.gitlab.url}") end context 'when the project repository does not exist' do @@ -610,7 +610,7 @@ describe Gitlab::GitAccess do it 'does not give access to download code' do public_project.project_feature.update_attribute(:repository_access_level, ProjectFeature::DISABLED) - expect { pull_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:download]) + expect { pull_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:download]) end end end @@ -722,7 +722,7 @@ describe Gitlab::GitAccess do context 'when is not member of the project' do context 'pull code' do - it { expect { pull_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:download]) } + it { expect { pull_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:download]) } end end end @@ -828,7 +828,7 @@ describe Gitlab::GitAccess do expect(&check).not_to raise_error, -> { "expected #{action} to be allowed" } else - expect(&check).to raise_error(Gitlab::GitAccess::UnauthorizedError), + expect(&check).to raise_error(Gitlab::GitAccess::ForbiddenError), -> { "expected #{action} to be disallowed" } end end @@ -965,7 +965,7 @@ describe Gitlab::GitAccess do it 'does not allow deactivated users to push' do user.deactivate! - expect { push_access_check }.to raise_unauthorized("Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at #{Gitlab.config.gitlab.url}") + expect { push_access_check }.to raise_forbidden("Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at #{Gitlab.config.gitlab.url}") end it 'cleans up the files' do @@ -1009,26 +1009,26 @@ describe Gitlab::GitAccess do project.add_reporter(user) end - it { expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:auth_upload]) } + it { expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:auth_upload]) } end context 'when unauthorized' do context 'to public project' do let(:project) { create(:project, :public, :repository) } - it { expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:auth_upload]) } + it { expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:auth_upload]) } end context 'to internal project' do let(:project) { create(:project, :internal, :repository) } - it { expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:auth_upload]) } + it { expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:auth_upload]) } end context 'to private project' do let(:project) { create(:project, :private, :repository) } - it { expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:auth_upload]) } + it { expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:auth_upload]) } end end end @@ -1039,7 +1039,7 @@ describe Gitlab::GitAccess do it 'denies push access' do project.add_maintainer(user) - expect { push_access_check }.to raise_unauthorized('The repository is temporarily read-only. Please try again later.') + expect { push_access_check }.to raise_forbidden('The repository is temporarily read-only. Please try again later.') end end @@ -1060,7 +1060,7 @@ describe Gitlab::GitAccess do context 'to public project' do let(:project) { create(:project, :public, :repository) } - it { expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:deploy_key_upload]) } + it { expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:deploy_key_upload]) } end context 'to internal project' do @@ -1083,14 +1083,14 @@ describe Gitlab::GitAccess do key.deploy_keys_projects.create(project: project, can_push: false) end - it { expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:deploy_key_upload]) } + it { expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:deploy_key_upload]) } end context 'when unauthorized' do context 'to public project' do let(:project) { create(:project, :public, :repository) } - it { expect { push_access_check }.to raise_unauthorized(described_class::ERROR_MESSAGES[:deploy_key_upload]) } + it { expect { push_access_check }.to raise_forbidden(described_class::ERROR_MESSAGES[:deploy_key_upload]) } end context 'to internal project' do @@ -1121,7 +1121,7 @@ describe Gitlab::GitAccess do it 'blocks access when the user did not accept terms', :aggregate_failures do actions.each do |action| - expect { action.call }.to raise_unauthorized(/must accept the Terms of Service in order to perform this action/) + expect { action.call }.to raise_forbidden(/must accept the Terms of Service in order to perform this action/) end end @@ -1211,8 +1211,8 @@ describe Gitlab::GitAccess do access.check('git-receive-pack', changes) end - def raise_unauthorized(message) - raise_error(Gitlab::GitAccess::UnauthorizedError, message) + def raise_forbidden(message) + raise_error(Gitlab::GitAccess::ForbiddenError, message) end def raise_not_found diff --git a/spec/lib/gitlab/git_access_wiki_spec.rb b/spec/lib/gitlab/git_access_wiki_spec.rb index 99c9369a2b9..b5e673c9e79 100644 --- a/spec/lib/gitlab/git_access_wiki_spec.rb +++ b/spec/lib/gitlab/git_access_wiki_spec.rb @@ -33,7 +33,7 @@ describe Gitlab::GitAccessWiki do end it 'does not give access to upload wiki code' do - expect { subject }.to raise_error(Gitlab::GitAccess::UnauthorizedError, "You can't push code to a read-only GitLab instance.") + expect { subject }.to raise_error(Gitlab::GitAccess::ForbiddenError, "You can't push code to a read-only GitLab instance.") end end end @@ -70,7 +70,7 @@ describe Gitlab::GitAccessWiki do it 'does not give access to download wiki code' do project.project_feature.update_attribute(:wiki_access_level, ProjectFeature::DISABLED) - expect { subject }.to raise_error(Gitlab::GitAccess::UnauthorizedError, 'You are not allowed to download code from this project.') + expect { subject }.to raise_error(Gitlab::GitAccess::ForbiddenError, 'You are not allowed to download code from this project.') end end end diff --git a/spec/lib/gitlab/gitaly_client/commit_service_spec.rb b/spec/lib/gitlab/gitaly_client/commit_service_spec.rb index 5c36d6d35af..00182983418 100644 --- a/spec/lib/gitlab/gitaly_client/commit_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/commit_service_spec.rb @@ -306,5 +306,19 @@ describe Gitlab::GitalyClient::CommitService do client.find_commits(order: 'topo') end + + it 'sends an RPC request with an author' do + request = Gitaly::FindCommitsRequest.new( + repository: repository_message, + disable_walk: true, + order: 'NONE', + author: "Billy Baggins <bilbo@shire.com>" + ) + + expect_any_instance_of(Gitaly::CommitService::Stub).to receive(:find_commits) + .with(request, kind_of(Hash)).and_return([]) + + client.find_commits(order: 'default', author: "Billy Baggins <bilbo@shire.com>") + end end end diff --git a/spec/lib/gitlab/import_export/base_object_builder_spec.rb b/spec/lib/gitlab/import_export/base/object_builder_spec.rb index fbb3b08cf56..e5242ae0bfc 100644 --- a/spec/lib/gitlab/import_export/base_object_builder_spec.rb +++ b/spec/lib/gitlab/import_export/base/object_builder_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::BaseObjectBuilder do +describe Gitlab::ImportExport::Base::ObjectBuilder do let(:project) do create(:project, :repository, :builds_disabled, @@ -11,7 +11,7 @@ describe Gitlab::ImportExport::BaseObjectBuilder do path: 'project') end let(:klass) { Milestone } - let(:attributes) { { 'title' => 'Test BaseObjectBuilder Milestone', 'project' => project } } + let(:attributes) { { 'title' => 'Test Base::ObjectBuilder Milestone', 'project' => project } } subject { described_class.build(klass, attributes) } diff --git a/spec/lib/gitlab/import_export/base_relation_factory_spec.rb b/spec/lib/gitlab/import_export/base/relation_factory_spec.rb index e02d8f3d2e6..1011de83c95 100644 --- a/spec/lib/gitlab/import_export/base_relation_factory_spec.rb +++ b/spec/lib/gitlab/import_export/base/relation_factory_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::BaseRelationFactory do +describe Gitlab::ImportExport::Base::RelationFactory do let(:user) { create(:admin) } let(:project) { create(:project) } let(:members_mapper) { double('members_mapper').as_null_object } @@ -13,7 +13,7 @@ describe Gitlab::ImportExport::BaseRelationFactory do subject do described_class.create(relation_sym: relation_sym, relation_hash: relation_hash, - object_builder: Gitlab::ImportExport::GroupProjectObjectBuilder, + object_builder: Gitlab::ImportExport::Project::ObjectBuilder, members_mapper: members_mapper, user: user, importable: project, diff --git a/spec/lib/gitlab/import_export/fork_spec.rb b/spec/lib/gitlab/import_export/fork_spec.rb index 09e4f62c686..8aa28353c04 100644 --- a/spec/lib/gitlab/import_export/fork_spec.rb +++ b/spec/lib/gitlab/import_export/fork_spec.rb @@ -24,11 +24,11 @@ describe 'forked project import' do end let(:saver) do - Gitlab::ImportExport::ProjectTreeSaver.new(project: project_with_repo, current_user: user, shared: shared) + Gitlab::ImportExport::Project::TreeSaver.new(project: project_with_repo, current_user: user, shared: shared) end let(:restorer) do - Gitlab::ImportExport::ProjectTreeRestorer.new(user: user, shared: shared, project: project) + Gitlab::ImportExport::Project::TreeRestorer.new(user: user, shared: shared, project: project) end before do diff --git a/spec/lib/gitlab/import_export/group_object_builder_spec.rb b/spec/lib/gitlab/import_export/group/object_builder_spec.rb index 08b2dae1147..781670b0aa5 100644 --- a/spec/lib/gitlab/import_export/group_object_builder_spec.rb +++ b/spec/lib/gitlab/import_export/group/object_builder_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::GroupObjectBuilder do +describe Gitlab::ImportExport::Group::ObjectBuilder do let(:group) { create(:group) } let(:base_attributes) do { diff --git a/spec/lib/gitlab/import_export/group_relation_factory_spec.rb b/spec/lib/gitlab/import_export/group/relation_factory_spec.rb index 9208b2ad203..332648d5c89 100644 --- a/spec/lib/gitlab/import_export/group_relation_factory_spec.rb +++ b/spec/lib/gitlab/import_export/group/relation_factory_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::GroupRelationFactory do +describe Gitlab::ImportExport::Group::RelationFactory do let(:group) { create(:group) } let(:members_mapper) { double('members_mapper').as_null_object } let(:user) { create(:admin) } @@ -11,7 +11,7 @@ describe Gitlab::ImportExport::GroupRelationFactory do described_class.create(relation_sym: relation_sym, relation_hash: relation_hash, members_mapper: members_mapper, - object_builder: Gitlab::ImportExport::GroupObjectBuilder, + object_builder: Gitlab::ImportExport::Group::ObjectBuilder, user: user, importable: group, excluded_keys: excluded_keys) diff --git a/spec/lib/gitlab/import_export/group_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/group/tree_restorer_spec.rb index b2c8398d358..5584f1503f7 100644 --- a/spec/lib/gitlab/import_export/group_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/group/tree_restorer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::GroupTreeRestorer do +describe Gitlab::ImportExport::Group::TreeRestorer do include ImportExport::CommonUtil let(:shared) { Gitlab::ImportExport::Shared.new(group) } diff --git a/spec/lib/gitlab/import_export/group_tree_saver_spec.rb b/spec/lib/gitlab/import_export/group/tree_saver_spec.rb index 7f49c7af8fa..845eb8e308b 100644 --- a/spec/lib/gitlab/import_export/group_tree_saver_spec.rb +++ b/spec/lib/gitlab/import_export/group/tree_saver_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::GroupTreeSaver do +describe Gitlab::ImportExport::Group::TreeSaver do describe 'saves the group tree into a json object' do let(:shared) { Gitlab::ImportExport::Shared.new(group) } let(:group_tree_saver) { described_class.new(group: group, current_user: user, shared: shared) } @@ -72,7 +72,7 @@ describe Gitlab::ImportExport::GroupTreeSaver do # except: # context 'with description override' do # context 'group members' do - # ^ These are specific for the groupTreeSaver + # ^ These are specific for the Group::TreeSaver context 'JSON' do let(:saved_group_json) do group_tree_saver.save diff --git a/spec/lib/gitlab/import_export/importer_spec.rb b/spec/lib/gitlab/import_export/importer_spec.rb index 942af4084e5..07857269004 100644 --- a/spec/lib/gitlab/import_export/importer_spec.rb +++ b/spec/lib/gitlab/import_export/importer_spec.rb @@ -63,7 +63,7 @@ describe Gitlab::ImportExport::Importer do end it 'restores the ProjectTree' do - expect(Gitlab::ImportExport::ProjectTreeRestorer).to receive(:new).and_call_original + expect(Gitlab::ImportExport::Project::TreeRestorer).to receive(:new).and_call_original importer.execute end diff --git a/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb b/spec/lib/gitlab/import_export/project/object_builder_spec.rb index 34049cbf570..c9d1410400a 100644 --- a/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb +++ b/spec/lib/gitlab/import_export/project/object_builder_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::GroupProjectObjectBuilder do +describe Gitlab::ImportExport::Project::ObjectBuilder do let!(:group) { create(:group, :private) } let!(:subgroup) { create(:group, :private, parent: group) } let!(:project) do diff --git a/spec/lib/gitlab/import_export/project_relation_factory_spec.rb b/spec/lib/gitlab/import_export/project/relation_factory_spec.rb index d0e89b2e57b..73ae6810706 100644 --- a/spec/lib/gitlab/import_export/project_relation_factory_spec.rb +++ b/spec/lib/gitlab/import_export/project/relation_factory_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::ProjectRelationFactory do +describe Gitlab::ImportExport::Project::RelationFactory do let(:group) { create(:group) } let(:project) { create(:project, :repository, group: group) } let(:members_mapper) { double('members_mapper').as_null_object } @@ -11,7 +11,7 @@ describe Gitlab::ImportExport::ProjectRelationFactory do let(:created_object) do described_class.create(relation_sym: relation_sym, relation_hash: relation_hash, - object_builder: Gitlab::ImportExport::GroupProjectObjectBuilder, + object_builder: Gitlab::ImportExport::Project::ObjectBuilder, members_mapper: members_mapper, user: user, importable: project, @@ -243,11 +243,11 @@ describe Gitlab::ImportExport::ProjectRelationFactory do context 'Project references' do let(:relation_sym) { :project_foo_model } let(:relation_hash) do - Gitlab::ImportExport::ProjectRelationFactory::PROJECT_REFERENCES.map { |ref| { ref => 99 } }.inject(:merge) + Gitlab::ImportExport::Project::RelationFactory::PROJECT_REFERENCES.map { |ref| { ref => 99 } }.inject(:merge) end class ProjectFooModel < FooModel - attr_accessor(*Gitlab::ImportExport::ProjectRelationFactory::PROJECT_REFERENCES) + attr_accessor(*Gitlab::ImportExport::Project::RelationFactory::PROJECT_REFERENCES) end before do diff --git a/spec/lib/gitlab/import_export/project_tree_loader_spec.rb b/spec/lib/gitlab/import_export/project/tree_loader_spec.rb index b22de5a3f7b..e683eefa7c0 100644 --- a/spec/lib/gitlab/import_export/project_tree_loader_spec.rb +++ b/spec/lib/gitlab/import_export/project/tree_loader_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::ProjectTreeLoader do +describe Gitlab::ImportExport::Project::TreeLoader do let(:fixture) { 'spec/fixtures/lib/gitlab/import_export/with_duplicates.json' } let(:project_tree) { JSON.parse(File.read(fixture)) } diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project/tree_restorer_spec.rb index c899217d164..312bbb58a28 100644 --- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project/tree_restorer_spec.rb @@ -1,9 +1,8 @@ # frozen_string_literal: true require 'spec_helper' -include ImportExport::CommonUtil -describe Gitlab::ImportExport::ProjectTreeRestorer do +describe Gitlab::ImportExport::Project::TreeRestorer do include ImportExport::CommonUtil let(:shared) { project.import_export_shared } diff --git a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb b/spec/lib/gitlab/import_export/project/tree_saver_spec.rb index 126ac289a56..151fdf8810f 100644 --- a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb +++ b/spec/lib/gitlab/import_export/project/tree_saver_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::ProjectTreeSaver do +describe Gitlab::ImportExport::Project::TreeSaver do describe 'saves the project tree into a json object' do let(:shared) { project.import_export_shared } let(:project_tree_saver) { described_class.new(project: project, current_user: user, shared: shared) } @@ -75,7 +75,7 @@ describe Gitlab::ImportExport::ProjectTreeSaver do # except: # context 'with description override' do # context 'group members' do - # ^ These are specific for the ProjectTreeSaver + # ^ These are specific for the Project::TreeSaver context 'JSON' do let(:saved_project_json) do project_tree_saver.save diff --git a/spec/lib/gitlab/import_export/relation_rename_service_spec.rb b/spec/lib/gitlab/import_export/relation_rename_service_spec.rb index d62f5725f9e..2e251154e9f 100644 --- a/spec/lib/gitlab/import_export/relation_rename_service_spec.rb +++ b/spec/lib/gitlab/import_export/relation_rename_service_spec.rb @@ -22,7 +22,7 @@ describe Gitlab::ImportExport::RelationRenameService do end context 'when importing' do - let(:project_tree_restorer) { Gitlab::ImportExport::ProjectTreeRestorer.new(user: user, shared: shared, project: project) } + let(:project_tree_restorer) { Gitlab::ImportExport::Project::TreeRestorer.new(user: user, shared: shared, project: project) } let(:file_content) { IO.read(File.join(shared.export_path, 'project.json')) } let(:json_file) { ActiveSupport::JSON.decode(file_content) } @@ -99,7 +99,7 @@ describe Gitlab::ImportExport::RelationRenameService do let(:relation_tree_saver) { Gitlab::ImportExport::RelationTreeSaver.new } let(:project_tree_saver) do - Gitlab::ImportExport::ProjectTreeSaver.new( + Gitlab::ImportExport::Project::TreeSaver.new( project: project, current_user: user, shared: shared) end diff --git a/spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb index edb2c0a131a..80901feb893 100644 --- a/spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/relation_tree_restorer_spec.rb @@ -39,8 +39,8 @@ describe Gitlab::ImportExport::RelationTreeRestorer do context 'when restoring a project' do let(:path) { 'spec/fixtures/lib/gitlab/import_export/complex/project.json' } let(:importable) { create(:project, :builds_enabled, :issues_disabled, name: 'project', path: 'project') } - let(:object_builder) { Gitlab::ImportExport::GroupProjectObjectBuilder } - let(:relation_factory) { Gitlab::ImportExport::ProjectRelationFactory } + let(:object_builder) { Gitlab::ImportExport::Project::ObjectBuilder } + let(:relation_factory) { Gitlab::ImportExport::Project::RelationFactory } let(:reader) { Gitlab::ImportExport::Reader.new(shared: shared) } let(:tree_hash) { importable_hash } diff --git a/spec/lib/gitlab_danger_spec.rb b/spec/lib/gitlab_danger_spec.rb index 26bf5d76756..18321541221 100644 --- a/spec/lib/gitlab_danger_spec.rb +++ b/spec/lib/gitlab_danger_spec.rb @@ -9,7 +9,7 @@ describe GitlabDanger do describe '.local_warning_message' do it 'returns an informational message with rules that can run' do - expect(described_class.local_warning_message).to eq('==> Only the following Danger rules can be run locally: changes_size, gemfile, documentation, frozen_string, duplicate_yarn_dependencies, prettier, eslint, database, commit_messages') + expect(described_class.local_warning_message).to eq('==> Only the following Danger rules can be run locally: changes_size, documentation, frozen_string, duplicate_yarn_dependencies, prettier, eslint, database, commit_messages') end end diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 00ffc3cae54..076897e6312 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -320,6 +320,21 @@ describe Repository do end end + context "when 'author' is set" do + it "returns commits from that author" do + commit = repository.commits(nil, limit: 1).first + known_author = "#{commit.author_name} <#{commit.author_email}>" + + expect(repository.commits(nil, author: known_author, limit: 1)).not_to be_empty + end + + it "doesn't returns commits from an unknown author" do + unknown_author = "The Man With No Name <zapp@brannigan.com>" + + expect(repository.commits(nil, author: unknown_author, limit: 1)).to be_empty + end + end + context "when 'all' flag is set" do it 'returns every commit from the repository' do expect(repository.commits(nil, all: true, limit: 60).size).to eq(60) diff --git a/spec/requests/api/internal/base_spec.rb b/spec/requests/api/internal/base_spec.rb index c3b5f9ded21..4249ce105c9 100644 --- a/spec/requests/api/internal/base_spec.rb +++ b/spec/requests/api/internal/base_spec.rb @@ -409,7 +409,7 @@ describe API::Internal::Base do it do pull(key, project) - expect(response).to have_gitlab_http_status(:unauthorized) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response["status"]).to be_falsey expect(user.reload.last_activity_on).to be_nil end @@ -419,7 +419,7 @@ describe API::Internal::Base do it do push(key, project) - expect(response).to have_gitlab_http_status(:unauthorized) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response["status"]).to be_falsey expect(user.reload.last_activity_on).to be_nil end @@ -518,7 +518,7 @@ describe API::Internal::Base do it do pull(key, personal_project) - expect(response).to have_gitlab_http_status(:unauthorized) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response["status"]).to be_falsey expect(user.reload.last_activity_on).to be_nil end @@ -528,7 +528,7 @@ describe API::Internal::Base do it do push(key, personal_project) - expect(response).to have_gitlab_http_status(:unauthorized) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response["status"]).to be_falsey expect(user.reload.last_activity_on).to be_nil end @@ -572,7 +572,7 @@ describe API::Internal::Base do it do push(key, project) - expect(response).to have_gitlab_http_status(:unauthorized) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response["status"]).to be_falsey end end @@ -654,7 +654,7 @@ describe API::Internal::Base do it 'rejects the SSH push' do push(key, project) - expect(response.status).to eq(401) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response['status']).to be_falsey expect(json_response['message']).to eq 'Git access over SSH is not allowed' end @@ -662,7 +662,7 @@ describe API::Internal::Base do it 'rejects the SSH pull' do pull(key, project) - expect(response.status).to eq(401) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response['status']).to be_falsey expect(json_response['message']).to eq 'Git access over SSH is not allowed' end @@ -676,7 +676,7 @@ describe API::Internal::Base do it 'rejects the HTTP push' do push(key, project, 'http') - expect(response.status).to eq(401) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response['status']).to be_falsey expect(json_response['message']).to eq 'Git access over HTTP is not allowed' end @@ -684,7 +684,7 @@ describe API::Internal::Base do it 'rejects the HTTP pull' do pull(key, project, 'http') - expect(response.status).to eq(401) + expect(response).to have_gitlab_http_status(:forbidden) expect(json_response['status']).to be_falsey expect(json_response['message']).to eq 'Git access over HTTP is not allowed' end diff --git a/spec/services/groups/import_export/export_service_spec.rb b/spec/services/groups/import_export/export_service_spec.rb index b1f76964722..5eebf08892a 100644 --- a/spec/services/groups/import_export/export_service_spec.rb +++ b/spec/services/groups/import_export/export_service_spec.rb @@ -7,7 +7,7 @@ describe Groups::ImportExport::ExportService do let!(:user) { create(:user) } let(:group) { create(:group) } let(:shared) { Gitlab::ImportExport::Shared.new(group) } - let(:export_path) { shared.export_path } + let(:archive_path) { shared.archive_path } let(:service) { described_class.new(group: group, user: user, params: { shared: shared }) } before do @@ -15,11 +15,11 @@ describe Groups::ImportExport::ExportService do end after do - FileUtils.rm_rf(export_path) + FileUtils.rm_rf(archive_path) end it 'saves the models' do - expect(Gitlab::ImportExport::GroupTreeSaver).to receive(:new).and_call_original + expect(Gitlab::ImportExport::Group::TreeSaver).to receive(:new).and_call_original service.execute end @@ -29,7 +29,7 @@ describe Groups::ImportExport::ExportService do service.execute expect(group.import_export_upload.export_file.file).not_to be_nil - expect(File.directory?(export_path)).to eq(false) + expect(File.directory?(archive_path)).to eq(false) expect(File.exist?(shared.archive_path)).to eq(false) end end @@ -46,25 +46,42 @@ describe Groups::ImportExport::ExportService do end end - context 'when saving services fail' do - before do - allow(service).to receive_message_chain(:tree_exporter, :save).and_return(false) + context 'when export fails' do + context 'when file saver fails' do + it 'removes the remaining exported data' do + allow_next_instance_of(Gitlab::ImportExport::Saver) do |saver| + allow(saver).to receive(:save).and_return(false) + end + + expect { service.execute }.to raise_error(Gitlab::ImportExport::Error) + + expect(group.import_export_upload).to be_nil + expect(File.exist?(shared.archive_path)).to eq(false) + end end - it 'removes the remaining exported data' do - allow_any_instance_of(Gitlab::ImportExport::Saver).to receive(:compress_and_save).and_return(false) + context 'when file compression fails' do + before do + allow(service).to receive_message_chain(:tree_exporter, :save).and_return(false) + end - expect { service.execute }.to raise_error(Gitlab::ImportExport::Error) + it 'removes the remaining exported data' do + allow_next_instance_of(Gitlab::ImportExport::Saver) do |saver| + allow(saver).to receive(:compress_and_save).and_return(false) + end - expect(group.import_export_upload).to be_nil - expect(File.directory?(export_path)).to eq(false) - expect(File.exist?(shared.archive_path)).to eq(false) - end + expect { service.execute }.to raise_error(Gitlab::ImportExport::Error) + + expect(group.import_export_upload).to be_nil + expect(File.exist?(shared.archive_path)).to eq(false) + end - it 'notifies logger' do - expect_any_instance_of(Gitlab::Import::Logger).to receive(:error) + it 'notifies logger' do + allow(service).to receive_message_chain(:tree_exporter, :save).and_return(false) + expect(shared.logger).to receive(:error) - expect { service.execute }.to raise_error(Gitlab::ImportExport::Error) + expect { service.execute }.to raise_error(Gitlab::ImportExport::Error) + end end end end diff --git a/spec/services/projects/import_export/export_service_spec.rb b/spec/services/projects/import_export/export_service_spec.rb index 906fef6edf5..ec1771e64c2 100644 --- a/spec/services/projects/import_export/export_service_spec.rb +++ b/spec/services/projects/import_export/export_service_spec.rb @@ -27,7 +27,7 @@ describe Projects::ImportExport::ExportService do end it 'saves the models' do - expect(Gitlab::ImportExport::ProjectTreeSaver).to receive(:new).and_call_original + expect(Gitlab::ImportExport::Project::TreeSaver).to receive(:new).and_call_original service.execute end @@ -91,10 +91,10 @@ describe Projects::ImportExport::ExportService do end it 'removes the remaining exported data' do - allow(shared).to receive(:export_path).and_return('whatever') + allow(shared).to receive(:archive_path).and_return('whatever') allow(FileUtils).to receive(:rm_rf) - expect(FileUtils).to receive(:rm_rf).with(shared.export_path) + expect(FileUtils).to receive(:rm_rf).with(shared.archive_path) end it 'notifies the user' do @@ -121,10 +121,10 @@ describe Projects::ImportExport::ExportService do end it 'removes the remaining exported data' do - allow(shared).to receive(:export_path).and_return('whatever') + allow(shared).to receive(:archive_path).and_return('whatever') allow(FileUtils).to receive(:rm_rf) - expect(FileUtils).to receive(:rm_rf).with(shared.export_path) + expect(FileUtils).to receive(:rm_rf).with(shared.archive_path) end it 'notifies the user' do @@ -142,6 +142,21 @@ describe Projects::ImportExport::ExportService do end end + context 'when one of the savers fail unexpectedly' do + let(:archive_path) { shared.archive_path } + + before do + allow(service).to receive_message_chain(:uploads_saver, :save).and_return(false) + end + + it 'removes the remaining exported data' do + expect { service.execute }.to raise_error(Gitlab::ImportExport::Error) + + expect(project.import_export_upload).to be_nil + expect(File.exist?(shared.archive_path)).to eq(false) + end + end + context 'when user does not have admin_project permission' do let!(:another_user) { create(:user) } diff --git a/spec/support/helpers/wiki_helpers.rb b/spec/support/helpers/wiki_helpers.rb index 06cea728b42..86eb1793707 100644 --- a/spec/support/helpers/wiki_helpers.rb +++ b/spec/support/helpers/wiki_helpers.rb @@ -3,6 +3,11 @@ module WikiHelpers extend self + def wait_for_svg_to_be_loaded(example = nil) + # Ensure the SVG is loaded first before clicking the button + find('.svg-content .js-lazy-loaded') if example.nil? || example.metadata.key?(:js) + end + def upload_file_to_wiki(project, user, file_name) opts = { file_name: file_name, diff --git a/spec/support/import_export/common_util.rb b/spec/support/import_export/common_util.rb index 912a8e0a2ab..9281937e4ba 100644 --- a/spec/support/import_export/common_util.rb +++ b/spec/support/import_export/common_util.rb @@ -34,13 +34,13 @@ module ImportExport end def get_project_restorer(project, import_path) - Gitlab::ImportExport::ProjectTreeRestorer.new( + Gitlab::ImportExport::Project::TreeRestorer.new( user: project.creator, shared: get_shared_env(path: import_path), project: project ) end def get_project_saver(project, export_path) - Gitlab::ImportExport::ProjectTreeSaver.new( + Gitlab::ImportExport::Project::TreeSaver.new( project: project, current_user: project.creator, shared: get_shared_env(path: export_path) ) end diff --git a/spec/support/import_export/configuration_helper.rb b/spec/support/import_export/configuration_helper.rb index 27819b5201a..4fe619225bb 100644 --- a/spec/support/import_export/configuration_helper.rb +++ b/spec/support/import_export/configuration_helper.rb @@ -36,8 +36,8 @@ module ConfigurationHelper end def relation_class_for_name(relation_name) - relation_name = Gitlab::ImportExport::ProjectRelationFactory.overrides[relation_name.to_sym] || relation_name - Gitlab::ImportExport::ProjectRelationFactory.relation_class(relation_name) + relation_name = Gitlab::ImportExport::Project::RelationFactory.overrides[relation_name.to_sym] || relation_name + Gitlab::ImportExport::Project::RelationFactory.relation_class(relation_name) end def parsed_attributes(relation_name, attributes, config: Gitlab::ImportExport.config_file) diff --git a/spec/support/shared_examples/features/wiki_file_attachments_shared_examples.rb b/spec/support/shared_examples/features/wiki_file_attachments_shared_examples.rb index 36d91d323b5..867290fb2d6 100644 --- a/spec/support/shared_examples/features/wiki_file_attachments_shared_examples.rb +++ b/spec/support/shared_examples/features/wiki_file_attachments_shared_examples.rb @@ -42,7 +42,7 @@ RSpec.shared_examples 'wiki file attachments' do end end - context 'uploading is complete', :quarantine do + context 'uploading is complete' do it 'shows "Attach a file" button on uploading complete' do attach_with_dropzone wait_for_requests diff --git a/spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb index 968423176f1..14af98285fc 100644 --- a/spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb +++ b/spec/support/shared_examples/lib/gitlab/import_export/project_tree_restorer_shared_examples.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# Shared examples for ProjectTreeRestorer (shared to allow the testing +# Shared examples for Project::TreeRestorer (shared to allow the testing # of EE-specific features) RSpec.shared_examples 'restores project successfully' do |**results| it 'restores the project' do |