diff --git a/.rubocop.yml b/.rubocop.yml index 2e8a7d57bca..46419e69e7e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -347,6 +347,8 @@ RSpec/HaveGitlabHttpStatus: - 'ee/spec/features/**/*' - 'spec/controllers/*.rb' - 'ee/spec/controllers/*.rb' + - 'spec/controllers/projects/*.rb' + - 'ee/spec/controllers/projects/*.rb' - 'spec/requests/*.rb' - 'ee/spec/requests/*.rb' diff --git a/app/assets/javascripts/pages/projects/init_blob.js b/app/assets/javascripts/pages/projects/init_blob.js index e862456f429..5eb0d323266 100644 --- a/app/assets/javascripts/pages/projects/init_blob.js +++ b/app/assets/javascripts/pages/projects/init_blob.js @@ -11,7 +11,7 @@ export default () => { // eslint-disable-next-line no-new new BlobLinePermalinkUpdater( document.querySelector('#blob-content-holder'), - '.diff-line-num[data-line-number]', + '.diff-line-num[data-line-number], .diff-line-num[data-line-number] *', document.querySelectorAll('.js-data-file-blob-permalink-url, .js-blob-blame-link'), ); diff --git a/app/controllers/sent_notifications_controller.rb b/app/controllers/sent_notifications_controller.rb index 893f5145e99..20134de81a0 100644 --- a/app/controllers/sent_notifications_controller.rb +++ b/app/controllers/sent_notifications_controller.rb @@ -6,14 +6,24 @@ class SentNotificationsController < ApplicationController def unsubscribe @sent_notification = SentNotification.for(params[:id]) - return render_404 unless @sent_notification && @sent_notification.unsubscribable? + return render_404 unless unsubscribe_prerequisites_met? + return unsubscribe_and_redirect if current_user || params[:force] end private + def unsubscribe_prerequisites_met? + @sent_notification.present? && + @sent_notification.unsubscribable? && + noteable.present? + end + + def noteable + @sent_notification.noteable + end + def unsubscribe_and_redirect - noteable = @sent_notification.noteable noteable.unsubscribe(@sent_notification.recipient, @sent_notification.project) flash[:notice] = _("You have been unsubscribed from this thread.") diff --git a/changelogs/unreleased/199034-nomethoderror-undefined-method-unsubscribe-for-nil-nilclass.yml b/changelogs/unreleased/199034-nomethoderror-undefined-method-unsubscribe-for-nil-nilclass.yml new file mode 100644 index 00000000000..a63be414b84 --- /dev/null +++ b/changelogs/unreleased/199034-nomethoderror-undefined-method-unsubscribe-for-nil-nilclass.yml @@ -0,0 +1,5 @@ +--- +title: Fix 500 error when trying to unsubscribe from an already deleted entity +merge_request: 23747 +author: +type: fixed diff --git a/changelogs/unreleased/nfriend-31374-fix-permalink-button.yml b/changelogs/unreleased/nfriend-31374-fix-permalink-button.yml new file mode 100644 index 00000000000..1f10a066a9a --- /dev/null +++ b/changelogs/unreleased/nfriend-31374-fix-permalink-button.yml @@ -0,0 +1,5 @@ +--- +title: Fix hash parameter of Permalink and Blame button +merge_request: 23713 +author: +type: fixed diff --git a/doc/administration/packages/index.md b/doc/administration/packages/index.md index 432e72e03e3..2d2a6f3de3a 100644 --- a/doc/administration/packages/index.md +++ b/doc/administration/packages/index.md @@ -15,7 +15,7 @@ The Packages feature allows GitLab to act as a repository for the following: Don't you see your package management system supported yet? Please consider contributing -to GitLab. This [development documentation](../../development/packages.md) will guide you through the process, it includes a list of [suggested contributions](../../development/packages.md#suggested-contributions). +to GitLab. This [development documentation](../../development/packages.md) will guide you through the process. ## Enabling the Packages feature diff --git a/doc/development/documentation/styleguide.md b/doc/development/documentation/styleguide.md index 5dddb47a033..063f2b74ce2 100644 --- a/doc/development/documentation/styleguide.md +++ b/doc/development/documentation/styleguide.md @@ -77,7 +77,7 @@ and cross-link between any related content. We employ a **docs-first methodology** to help ensure that the docs remain a complete and trusted resource, and to make communicating about the use of GitLab more efficient. - If the answer to a question exists in documentation, share the link to the docs instead of rephrasing the information. -- When you encounter new information not available in GitLab’s documentation (for example, when working on a support case or testing a feature), your first step should be to create a merge request to add this information to the docs. You can then share the MR in order to communicate this information. +- When you encounter new information not available in GitLab’s documentation (for example, when working on a support case or testing a feature), your first step should be to create a merge request (MR) to add this information to the docs. You can then share the MR in order to communicate this information. New information that would be useful toward the future usage or troubleshooting of GitLab should not be written directly in a forum or other messaging system, but added to a docs MR and then referenced, as described above. Note that among any other doc changes, you can always add a Troubleshooting section to a doc if none exists, or un-comment and use the placeholder Troubleshooting section included as part of our [doc template](structure.md#template-for-new-docs), if present. @@ -525,6 +525,35 @@ For other punctuation rules, please refer to the - Use sentence case in headings. Do not capitalize the words of the title, unless it refers to a product feature. For example, capitalizing "issues" is acceptable in `## What you can do with GitLab Issues`, but not in `## Closing multiple issues`. +- Our docs site search engine prioritizes headings, therefore, make sure to write + headings that contextualize the subject and help to take the user to the right + document. For example, `## Examples` is a bad heading; `## GitLab Pages examples` + is a better one. It's not an exact science, but please consider this carefully. + +### Anchor links + +Headings generate anchor links automatically when rendered. `## This is an example` +generates the anchor `#this-is-an-example`. + +Keep in mind that the GitLab UI links to a large number of docs and respective +anchor links to take the user to the right spot. Therefore, when you change a +heading, search `doc/*`, `app/views/*`, and `ee/app/views/*` for the old anchor +to make sure you're not breaking an anchor linked from other docs nor from the +GitLab UI. If you find the old anchor, make sure to replace it with the new one. + +Important: + +- Avoid crosslinking docs to headings unless you need to link to a specific section + of the document. This will avoid breaking anchors in the future in case the heading + is changed. +- If possible, avoid changing headings since they're not only linked internally. + There are various links to GitLab documentation on the internet, such as tutorials, + presentations, StackOverflow posts, and other sources. +- Do not link to `h1` headings. + +Note that, with Kramdown, it is possible to add a custom ID to an HTML element +with Markdown markup, but they **do not** work in GitLab's `/help`. Therefore, +do not use this option until further notice. ## Links @@ -953,6 +982,24 @@ Which renders to: To maintain consistency through GitLab documentation, the following guides documentation authors on agreed styles and usage of terms. +### Merge Requests (MRs) + +Merge requests allow you to exchange changes you made to source code and collaborate +with other people on the same project. You'll see this term used in the following ways: + +- If you're referring to the feature, use **Merge Request**. +- In any other context, use **merge request**. + +As noted in our corporate [Writing Style Guidelines](https://about.gitlab.com/handbook/communication/#writing-style-guidelines), +if you use the **MR** acronym, expand it at least once per document page. +For example, the first time you specify a MR, specify either _Merge Request (MR)_ or _merge request (MR)_. + +Examples: + +- "We prefer GitLab Merge Requests". +- "Open a merge request to fix a broken link". +- "After you open a merge request (MR), submit your MR for review and approval". + ### Describing UI elements The following are styles to follow when describing UI elements on a screen: diff --git a/doc/development/packages.md b/doc/development/packages.md index 980c1869a0a..8722bb1e710 100644 --- a/doc/development/packages.md +++ b/doc/development/packages.md @@ -14,29 +14,6 @@ by looking at existing merge requests with Maven and NPM support: - [Maven repository](https://gitlab.com/gitlab-org/gitlab/merge_requests/6607). - [Instance level endpoint for Maven repository](https://gitlab.com/gitlab-org/gitlab/merge_requests/8757) -## Suggested contributions - -The goal of the Package group is to build a set of features that, within three years, will allow ninety percent of our customers to store all of their packages in GitLab. To do that we need to ensure that we support the below package manager formats. - -| Format | Use case | -| ------ | ------ | -| [Bower](https://gitlab.com/gitlab-org/gitlab/issues/36888) | Boost your front end development by hosting your own Bower components. | -| [Cargo](https://gitlab.com/gitlab-org/gitlab/issues/33060) | Cargo is the Rust package manager. Build, publish and share Rust packages | -| [Chef](https://gitlab.com/gitlab-org/gitlab/issues/36889) | Configuration management with Chef using all the benefits of a repository manager. | -| [CocoaPods](https://gitlab.com/gitlab-org/gitlab/issues/36890) | Speed up development with Xcode and CocoaPods. | -| [Conda](https://gitlab.com/gitlab-org/gitlab/issues/36891) | Secure and private local Conda repositories. | -| [CRAN](https://gitlab.com/gitlab-org/gitlab/issues/36892) | Deploy and resolve CRAN packages for the R language. | -| [Debian](https://gitlab.com/gitlab-org/gitlab/issues/5835) | Host and provision Debian packages. | -| [Go](https://gitlab.com/gitlab-org/gitlab/issues/9773) | Resolve Go dependencies from and publish your Go packages to GitLab. | -| [Opkg](https://gitlab.com/gitlab-org/gitlab/issues/36894) | Optimize your work with OpenWrt using Opkg repositories. | -| [P2](https://gitlab.com/gitlab-org/gitlab/issues/36895) | Host all your Eclipse plugins in your own GitLab P2 repository. | -| [Puppet](https://gitlab.com/gitlab-org/gitlab/issues/36897) | Configuration management meets repository management with Puppet repositories. | -| [PyPi](https://gitlab.com/gitlab-org/gitlab/issues/10483) | Host PyPi distributions. | -| [RPM](https://gitlab.com/gitlab-org/gitlab/issues/5932) | Distribute RPMs directly from GitLab. | -| [RubyGems](https://gitlab.com/gitlab-org/gitlab/issues/803) | Use GitLab to host your own gems. | -| [SBT](https://gitlab.com/gitlab-org/gitlab/issues/36898) | Resolve dependencies from and deploy build output to SBT repositories when running SBT builds. | -| [Vagrant](https://gitlab.com/gitlab-org/gitlab/issues/36899) | Securely host your Vagrant boxes in local repositories. | - ## General information The existing database model requires the following: diff --git a/doc/user/packages/index.md b/doc/user/packages/index.md index 80a3b1e1392..07bcba53e96 100644 --- a/doc/user/packages/index.md +++ b/doc/user/packages/index.md @@ -15,13 +15,29 @@ The Packages feature allows GitLab to act as a repository for the following: | [NPM Registry](npm_registry/index.md) **(PREMIUM)** | The GitLab NPM Registry enables every project in GitLab to have its own space to store [NPM](https://www.npmjs.com/) packages. | 11.7+ | | [NuGet Repository](nuget_repository/index.md) **(PREMIUM)** | *PLANNED* The GitLab NuGet Repository will enable every project in GitLab to have its own space to store [NuGet](https://www.nuget.org/) packages. | 12.8+ | -TIP: **Tip:** -Don't you see your package management system supported yet? Consider contributing -to GitLab. This [development documentation](../../development/packages.md) will +## Suggested contributions + +Consider contributing to GitLab. This [development documentation](../../development/packages.md) will guide you through the process. Or check out how other members of the community are adding support for [PHP](https://gitlab.com/gitlab-org/gitlab/merge_requests/17417) or [Terraform](https://gitlab.com/gitlab-org/gitlab/merge_requests/18834). -NOTE: **Note** We are especially interested in adding support for [PyPi](https://gitlab.com/gitlab-org/gitlab/issues/10483), [RubyGems](https://gitlab.com/gitlab-org/gitlab/issues/803), [Debian](https://gitlab.com/gitlab-org/gitlab/issues/5835), and [RPM](https://gitlab.com/gitlab-org/gitlab/issues/5932). +| Format | Use case | +| ------ | ------ | +| [Cargo](https://gitlab.com/gitlab-org/gitlab/issues/33060) | Cargo is the Rust package manager. Build, publish and share Rust packages | +| [Chef](https://gitlab.com/gitlab-org/gitlab/issues/36889) | Configuration management with Chef using all the benefits of a repository manager. | +| [CocoaPods](https://gitlab.com/gitlab-org/gitlab/issues/36890) | Speed up development with Xcode and CocoaPods. | +| [Conda](https://gitlab.com/gitlab-org/gitlab/issues/36891) | Secure and private local Conda repositories. | +| [CRAN](https://gitlab.com/gitlab-org/gitlab/issues/36892) | Deploy and resolve CRAN packages for the R language. | +| [Debian](https://gitlab.com/gitlab-org/gitlab/issues/5835) | Host and provision Debian packages. | +| [Go](https://gitlab.com/gitlab-org/gitlab/issues/9773) | Resolve Go dependencies from and publish your Go packages to GitLab. | +| [Opkg](https://gitlab.com/gitlab-org/gitlab/issues/36894) | Optimize your work with OpenWrt using Opkg repositories. | +| [P2](https://gitlab.com/gitlab-org/gitlab/issues/36895) | Host all your Eclipse plugins in your own GitLab P2 repository. | +| [Puppet](https://gitlab.com/gitlab-org/gitlab/issues/36897) | Configuration management meets repository management with Puppet repositories. | +| [PyPi](https://gitlab.com/gitlab-org/gitlab/issues/10483) | Host PyPi distributions. | +| [RPM](https://gitlab.com/gitlab-org/gitlab/issues/5932) | Distribute RPMs directly from GitLab. | +| [RubyGems](https://gitlab.com/gitlab-org/gitlab/issues/803) | Use GitLab to host your own gems. | +| [SBT](https://gitlab.com/gitlab-org/gitlab/issues/36898) | Resolve dependencies from and deploy build output to SBT repositories when running SBT builds. | +| [Vagrant](https://gitlab.com/gitlab-org/gitlab/issues/36899) | Securely host your Vagrant boxes in local repositories. | ## Package workflows diff --git a/lib/api/group_export.rb b/lib/api/group_export.rb index 8025a16e191..4d32212b8eb 100644 --- a/lib/api/group_export.rb +++ b/lib/api/group_export.rb @@ -3,6 +3,8 @@ module API class GroupExport < Grape::API before do + not_found! unless Feature.enabled?(:group_import_export, user_group, default_enabled: true) + authorize! :admin_group, user_group end diff --git a/lib/api/search.rb b/lib/api/search.rb index 50f930c7c7c..6b74158930a 100644 --- a/lib/api/search.rb +++ b/lib/api/search.rb @@ -47,7 +47,7 @@ module API SCOPE_ENTITY[params[:scope].to_sym] end - def verify_search_scope! + def verify_search_scope!(resource:) # In EE we have additional validation requirements for searches. # Defining this method here as a noop allows us to easily extend it in # EE, without having to modify this file directly. @@ -73,7 +73,7 @@ module API use :pagination end get do - verify_search_scope! + verify_search_scope!(resource: nil) check_users_search_allowed! present search, with: entity @@ -94,7 +94,7 @@ module API use :pagination end get ':id/(-/)search' do - verify_search_scope! + verify_search_scope!(resource: user_group) check_users_search_allowed! present search(group_id: user_group.id), with: entity diff --git a/qa/qa/flow/login.rb b/qa/qa/flow/login.rb index 30137571dbd..5505fabd4ae 100644 --- a/qa/qa/flow/login.rb +++ b/qa/qa/flow/login.rb @@ -12,12 +12,6 @@ module QA yield - # Workaround for a bug preventing sign out from secondary nodes - # See https://gitlab.com/gitlab-org/gitlab/issues/198289 - if address == :geo_secondary - Runtime::Browser.visit(:geo_primary, Page::Dashboard::Projects) - end - Page::Main::Menu.perform(&:sign_out) end diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb index 70b571a316a..7c9db5ee496 100644 --- a/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module QA - context 'Create', quarantine: 'https://gitlab.com/gitlab-org/gitlab/issues/196034' do + context 'Create' do describe 'Web IDE file templates' do include Runtime::Fixtures diff --git a/spec/controllers/projects/artifacts_controller_spec.rb b/spec/controllers/projects/artifacts_controller_spec.rb index 126bb1c9822..7aaaa363faa 100644 --- a/spec/controllers/projects/artifacts_controller_spec.rb +++ b/spec/controllers/projects/artifacts_controller_spec.rb @@ -156,7 +156,7 @@ describe Projects::ArtifactsController do it 'returns 404' do download_artifact(file_type: file_type) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -236,7 +236,7 @@ describe Projects::ArtifactsController do it 'renders the file view' do get :file, params: { namespace_id: project.namespace, project_id: project, job_id: job, path: 'ci_artifacts.txt' } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -302,7 +302,7 @@ describe Projects::ArtifactsController do it 'renders the file view' do get :file, params: { namespace_id: private_project.namespace, project_id: private_project, job_id: job, path: 'ci_artifacts.txt' } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end @@ -317,7 +317,7 @@ describe Projects::ArtifactsController do it 'serves the file using workhorse' do subject - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(send_data).to start_with('artifacts-entry:') expect(params.keys).to eq(%w(Archive Entry)) diff --git a/spec/controllers/projects/autocomplete_sources_controller_spec.rb b/spec/controllers/projects/autocomplete_sources_controller_spec.rb index fc8fe1ac4f6..d35192b2ccb 100644 --- a/spec/controllers/projects/autocomplete_sources_controller_spec.rb +++ b/spec/controllers/projects/autocomplete_sources_controller_spec.rb @@ -65,7 +65,7 @@ describe Projects::AutocompleteSourcesController do get :milestones, format: :json, params: { namespace_id: group.path, project_id: project.path } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/avatars_controller_spec.rb b/spec/controllers/projects/avatars_controller_spec.rb index d463619ad0b..1d844c847d6 100644 --- a/spec/controllers/projects/avatars_controller_spec.rb +++ b/spec/controllers/projects/avatars_controller_spec.rb @@ -16,7 +16,7 @@ describe Projects::AvatarsController do it 'shows 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -31,7 +31,7 @@ describe Projects::AvatarsController do it 'sends the avatar' do subject - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.header['Content-Disposition']).to eq('inline') expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with('git-blob:') expect(response.header[Gitlab::Workhorse::DETECT_HEADER]).to eq "true" diff --git a/spec/controllers/projects/blob_controller_spec.rb b/spec/controllers/projects/blob_controller_spec.rb index aa1dcdd9f1d..225538dcc45 100644 --- a/spec/controllers/projects/blob_controller_spec.rb +++ b/spec/controllers/projects/blob_controller_spec.rb @@ -232,7 +232,7 @@ describe Projects::BlobController do end it 'redirects to blob show' do - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -246,7 +246,7 @@ describe Projects::BlobController do end it 'redirects to blob show' do - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end diff --git a/spec/controllers/projects/boards_controller_spec.rb b/spec/controllers/projects/boards_controller_spec.rb index 543479d8dd5..ebfdb997974 100644 --- a/spec/controllers/projects/boards_controller_spec.rb +++ b/spec/controllers/projects/boards_controller_spec.rb @@ -39,7 +39,7 @@ describe Projects::BoardsController do it 'returns a not found 404 response' do list_boards - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'text/html' end end @@ -82,7 +82,7 @@ describe Projects::BoardsController do it 'returns a not found 404 response' do list_boards format: :json - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'application/json' end end @@ -94,7 +94,7 @@ describe Projects::BoardsController do it 'returns a not found 404 response' do list_boards - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -137,7 +137,7 @@ describe Projects::BoardsController do it 'returns a not found 404 response' do read_board board: board - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'text/html' end end @@ -174,7 +174,7 @@ describe Projects::BoardsController do it 'returns a not found 404 response' do read_board board: board, format: :json - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'application/json' end end @@ -186,7 +186,7 @@ describe Projects::BoardsController do read_board board: another_board - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end diff --git a/spec/controllers/projects/branches_controller_spec.rb b/spec/controllers/projects/branches_controller_spec.rb index 5b59534cb49..85d3044993e 100644 --- a/spec/controllers/projects/branches_controller_spec.rb +++ b/spec/controllers/projects/branches_controller_spec.rb @@ -217,7 +217,7 @@ describe Projects::BranchesController do } expect(response.location).to include(project_new_blob_path(project, branch)) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -238,7 +238,7 @@ describe Projects::BranchesController do } expect(response.location).to include(project_new_blob_path(project, branch)) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -289,7 +289,7 @@ describe Projects::BranchesController do it 'returns a successful 200 response' do create_branch name: 'my-branch', ref: 'master' - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'returns the created branch' do @@ -303,7 +303,7 @@ describe Projects::BranchesController do it 'returns an unprocessable entity 422 response' do create_branch name: "", ref: "" - expect(response).to have_gitlab_http_status(422) + expect(response).to have_gitlab_http_status(:unprocessable_entity) end end @@ -335,7 +335,7 @@ describe Projects::BranchesController do project_id: project } - expect(response).to have_gitlab_http_status(303) + expect(response).to have_gitlab_http_status(:see_other) end end @@ -361,28 +361,28 @@ describe Projects::BranchesController do context "valid branch name, valid source" do let(:branch) { "feature" } - it { expect(response).to have_gitlab_http_status(200) } + it { expect(response).to have_gitlab_http_status(:ok) } it { expect(response.body).to be_blank } end context "valid branch name with unencoded slashes" do let(:branch) { "improve/awesome" } - it { expect(response).to have_gitlab_http_status(200) } + it { expect(response).to have_gitlab_http_status(:ok) } it { expect(response.body).to be_blank } end context "valid branch name with encoded slashes" do let(:branch) { "improve%2Fawesome" } - it { expect(response).to have_gitlab_http_status(200) } + it { expect(response).to have_gitlab_http_status(:ok) } it { expect(response.body).to be_blank } end context "invalid branch name, valid ref" do let(:branch) { "no-branch" } - it { expect(response).to have_gitlab_http_status(404) } + it { expect(response).to have_gitlab_http_status(:not_found) } it { expect(response.body).to be_blank } end end @@ -398,7 +398,7 @@ describe Projects::BranchesController do expect(json_response).to eql("message" => 'Branch was deleted') end - it { expect(response).to have_gitlab_http_status(200) } + it { expect(response).to have_gitlab_http_status(:ok) } end context 'valid branch name with unencoded slashes' do @@ -408,7 +408,7 @@ describe Projects::BranchesController do expect(json_response).to eql('message' => 'Branch was deleted') end - it { expect(response).to have_gitlab_http_status(200) } + it { expect(response).to have_gitlab_http_status(:ok) } end context "valid branch name with encoded slashes" do @@ -418,7 +418,7 @@ describe Projects::BranchesController do expect(json_response).to eql('message' => 'Branch was deleted') end - it { expect(response).to have_gitlab_http_status(200) } + it { expect(response).to have_gitlab_http_status(:ok) } end context 'invalid branch name, valid ref' do @@ -428,7 +428,7 @@ describe Projects::BranchesController do expect(json_response).to eql('message' => 'No such branch') end - it { expect(response).to have_gitlab_http_status(404) } + it { expect(response).to have_gitlab_http_status(:not_found) } end end @@ -478,7 +478,7 @@ describe Projects::BranchesController do it 'responds with status 404' do destroy_all_merged - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -519,7 +519,7 @@ describe Projects::BranchesController do state: 'all' } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -537,7 +537,7 @@ describe Projects::BranchesController do state: 'all' } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -594,7 +594,7 @@ describe Projects::BranchesController do names: %w[fix add-pdf-file branch-merged] } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response).to eq( "fix" => { "behind" => 29, "ahead" => 2 }, "branch-merged" => { "behind" => 1, "ahead" => 0 }, @@ -612,7 +612,7 @@ describe Projects::BranchesController do project_id: project } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response.count).to be > 1 end @@ -629,7 +629,7 @@ describe Projects::BranchesController do project_id: project } - expect(response).to have_gitlab_http_status(422) + expect(response).to have_gitlab_http_status(:unprocessable_entity) expect(json_response['error']).to eq("Specify at least one and at most #{Kaminari.config.default_per_page} branch names") end @@ -642,7 +642,7 @@ describe Projects::BranchesController do names: %w[fix add-pdf-file branch-merged] } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response.count).to be > 1 end end diff --git a/spec/controllers/projects/clusters_controller_spec.rb b/spec/controllers/projects/clusters_controller_spec.rb index 642932e2935..c6345a2153c 100644 --- a/spec/controllers/projects/clusters_controller_spec.rb +++ b/spec/controllers/projects/clusters_controller_spec.rb @@ -648,7 +648,7 @@ describe Projects::ClustersController do go(format: :json) cluster.reload - expect(response).to have_http_status(:no_content) + expect(response).to have_gitlab_http_status(:no_content) expect(cluster.enabled).to be_falsey expect(cluster.name).to eq('my-new-cluster-name') expect(cluster).not_to be_managed @@ -671,7 +671,7 @@ describe Projects::ClustersController do it "rejects changes" do go(format: :json) - expect(response).to have_http_status(:bad_request) + expect(response).to have_gitlab_http_status(:bad_request) end end end diff --git a/spec/controllers/projects/commit_controller_spec.rb b/spec/controllers/projects/commit_controller_spec.rb index 95112cfeabe..c8ddd181d10 100644 --- a/spec/controllers/projects/commit_controller_spec.rb +++ b/spec/controllers/projects/commit_controller_spec.rb @@ -179,7 +179,7 @@ describe Projects::CommitController do }) expect(response).not_to be_successful - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -236,7 +236,7 @@ describe Projects::CommitController do }) expect(response).not_to be_successful - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -322,7 +322,7 @@ describe Projects::CommitController do end it 'returns a 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -334,7 +334,7 @@ describe Projects::CommitController do end it 'returns a 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -345,7 +345,7 @@ describe Projects::CommitController do end it 'returns a 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -393,7 +393,7 @@ describe Projects::CommitController do end it 'returns a 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/compare_controller_spec.rb b/spec/controllers/projects/compare_controller_spec.rb index 9afc46c4be9..bd50811726a 100644 --- a/spec/controllers/projects/compare_controller_spec.rb +++ b/spec/controllers/projects/compare_controller_spec.rb @@ -108,7 +108,7 @@ describe Projects::CompareController do show_request expect(flash[:alert]).to eq('Invalid branch name') - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -120,7 +120,7 @@ describe Projects::CompareController do show_request expect(flash[:alert]).to eq('Invalid branch name') - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end @@ -164,7 +164,7 @@ describe Projects::CompareController do end it 'returns a 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -176,7 +176,7 @@ describe Projects::CompareController do end it 'returns a 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -187,7 +187,7 @@ describe Projects::CompareController do end it 'returns a 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -197,7 +197,7 @@ describe Projects::CompareController do end it 'returns a 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -301,7 +301,7 @@ describe Projects::CompareController do it 'returns only the commit with a signature' do signatures_request - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) signatures = json_response['signatures'] expect(signatures.size).to eq(1) @@ -318,7 +318,7 @@ describe Projects::CompareController do it 'returns a 404' do signatures_request - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -330,7 +330,7 @@ describe Projects::CompareController do it 'returns no signatures' do signatures_request - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response['signatures']).to be_empty end end @@ -342,7 +342,7 @@ describe Projects::CompareController do it 'returns no signatures' do signatures_request - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response['signatures']).to be_empty end end diff --git a/spec/controllers/projects/deploy_keys_controller_spec.rb b/spec/controllers/projects/deploy_keys_controller_spec.rb index 2c7c99eabf6..25e3e8e37a9 100644 --- a/spec/controllers/projects/deploy_keys_controller_spec.rb +++ b/spec/controllers/projects/deploy_keys_controller_spec.rb @@ -122,7 +122,7 @@ describe Projects::DeployKeysController do put :enable, params: { id: deploy_key.id, namespace_id: project.namespace, project_id: project } end.not_to change { DeployKeysProject.count } - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response).to redirect_to(new_user_session_path) end end @@ -137,7 +137,7 @@ describe Projects::DeployKeysController do put :enable, params: { id: deploy_key.id, namespace_id: project.namespace, project_id: project } end.not_to change { DeployKeysProject.count } - expect(response).to have_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -152,14 +152,14 @@ describe Projects::DeployKeysController do end.to change { DeployKeysProject.count }.by(1) expect(DeployKeysProject.where(project_id: project.id, deploy_key_id: deploy_key.id).count).to eq(1) - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response).to redirect_to(namespace_project_settings_repository_path(anchor: 'js-deploy-keys-settings')) end it 'returns 404' do put :enable, params: { id: 0, namespace_id: project.namespace, project_id: project } - expect(response).to have_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -174,7 +174,7 @@ describe Projects::DeployKeysController do end.to change { DeployKeysProject.count }.by(1) expect(DeployKeysProject.where(project_id: project.id, deploy_key_id: deploy_key.id).count).to eq(1) - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response).to redirect_to(namespace_project_settings_repository_path(anchor: 'js-deploy-keys-settings')) end end @@ -192,7 +192,7 @@ describe Projects::DeployKeysController do it 'redirects to login' do put :disable, params: { id: deploy_key.id, namespace_id: project.namespace, project_id: project } - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response).to redirect_to(new_user_session_path) expect(DeployKey.find(deploy_key.id)).to eq(deploy_key) end @@ -206,7 +206,7 @@ describe Projects::DeployKeysController do it 'returns 404' do put :disable, params: { id: deploy_key.id, namespace_id: project.namespace, project_id: project } - expect(response).to have_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(DeployKey.find(deploy_key.id)).to eq(deploy_key) end end @@ -215,7 +215,7 @@ describe Projects::DeployKeysController do it 'returns 302' do put :disable, params: { id: deploy_key.id, namespace_id: project.namespace, project_id: project } - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response).to redirect_to(namespace_project_settings_repository_path(anchor: 'js-deploy-keys-settings')) expect { DeployKey.find(deploy_key.id) }.to raise_error(ActiveRecord::RecordNotFound) @@ -224,7 +224,7 @@ describe Projects::DeployKeysController do it 'returns 404' do put :disable, params: { id: 0, namespace_id: project.namespace, project_id: project } - expect(response).to have_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -238,7 +238,7 @@ describe Projects::DeployKeysController do put :disable, params: { id: deploy_key.id, namespace_id: project.namespace, project_id: project } end.to change { DeployKey.count }.by(-1) - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response).to redirect_to(namespace_project_settings_repository_path(anchor: 'js-deploy-keys-settings')) expect { DeployKey.find(deploy_key.id) }.to raise_error(ActiveRecord::RecordNotFound) diff --git a/spec/controllers/projects/deployments_controller_spec.rb b/spec/controllers/projects/deployments_controller_spec.rb index b360319c6b1..bf80346c63a 100644 --- a/spec/controllers/projects/deployments_controller_spec.rb +++ b/spec/controllers/projects/deployments_controller_spec.rb @@ -61,7 +61,7 @@ describe Projects::DeploymentsController do it 'returns a empty response 204 resposne' do get :metrics, params: deployment_params(id: deployment.to_param) - expect(response).to have_gitlab_http_status(204) + expect(response).to have_gitlab_http_status(:no_content) expect(response.body).to eq('') end end @@ -100,7 +100,7 @@ describe Projects::DeploymentsController do get :metrics, params: deployment_params(id: failed_deployment.to_param) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -129,7 +129,7 @@ describe Projects::DeploymentsController do it 'returns a empty response 204 response' do get :additional_metrics, params: deployment_params(id: deployment.to_param, format: :json) - expect(response).to have_gitlab_http_status(204) + expect(response).to have_gitlab_http_status(:no_content) expect(response.body).to eq('') end end diff --git a/spec/controllers/projects/discussions_controller_spec.rb b/spec/controllers/projects/discussions_controller_spec.rb index d59f76c1b32..b2e4a3b7b0d 100644 --- a/spec/controllers/projects/discussions_controller_spec.rb +++ b/spec/controllers/projects/discussions_controller_spec.rb @@ -27,7 +27,7 @@ describe Projects::DiscussionsController do it 'returns 404' do get :show, params: request_params, session: { format: :json } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -39,7 +39,7 @@ describe Projects::DiscussionsController do it 'returns status 200' do get :show, params: request_params, session: { format: :json } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'returns status 404 if MR does not exists' do @@ -47,7 +47,7 @@ describe Projects::DiscussionsController do get :show, params: request_params, session: { format: :json } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -60,7 +60,7 @@ describe Projects::DiscussionsController do it 'returns status 200' do get :show, params: request_params, session: { format: :json } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -74,7 +74,7 @@ describe Projects::DiscussionsController do it "returns status 404" do post :resolve, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -91,7 +91,7 @@ describe Projects::DiscussionsController do it "returns status 404" do post :resolve, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -120,7 +120,7 @@ describe Projects::DiscussionsController do it "returns status 200" do post :resolve, params: request_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it "renders discussion with serializer" do @@ -157,7 +157,7 @@ describe Projects::DiscussionsController do it "returns status 404" do delete :unresolve, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -174,7 +174,7 @@ describe Projects::DiscussionsController do it "returns status 404" do delete :unresolve, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -188,7 +188,7 @@ describe Projects::DiscussionsController do it "returns status 200" do delete :unresolve, params: request_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end context "when vue_mr_discussions cookie is present" do diff --git a/spec/controllers/projects/environments_controller_spec.rb b/spec/controllers/projects/environments_controller_spec.rb index e7ce2cb0c2e..7f0f8e36564 100644 --- a/spec/controllers/projects/environments_controller_spec.rb +++ b/spec/controllers/projects/environments_controller_spec.rb @@ -179,7 +179,7 @@ describe Projects::EnvironmentsController do params[:id] = 12345 get :show, params: params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -197,7 +197,7 @@ describe Projects::EnvironmentsController do patch_params = environment_params.merge(environment: { external_url: 'https://git.gitlab.com' }) patch :update, params: patch_params - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -208,7 +208,7 @@ describe Projects::EnvironmentsController do patch :stop, params: environment_params(format: :json) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -221,7 +221,7 @@ describe Projects::EnvironmentsController do patch :stop, params: environment_params(format: :json) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response).to eq( { 'redirect_url' => project_job_url(project, action) }) @@ -235,7 +235,7 @@ describe Projects::EnvironmentsController do patch :stop, params: environment_params(format: :json) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response).to eq( { 'redirect_url' => project_environment_url(project, environment) }) @@ -278,7 +278,7 @@ describe Projects::EnvironmentsController do it 'responds with a status code 200' do get :terminal, params: environment_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'loads the terminals for the environment' do @@ -295,7 +295,7 @@ describe Projects::EnvironmentsController do it 'responds with a status code 404' do get :terminal, params: environment_params(id: 666) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -321,7 +321,7 @@ describe Projects::EnvironmentsController do get :terminal_websocket_authorize, params: environment_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.headers["Content-Type"]).to eq(Gitlab::Workhorse::INTERNAL_API_CONTENT_TYPE) expect(response.body).to eq('{"workhorse":"response"}') end @@ -331,7 +331,7 @@ describe Projects::EnvironmentsController do it 'returns 404' do get :terminal_websocket_authorize, params: environment_params(id: 666) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -386,7 +386,7 @@ describe Projects::EnvironmentsController do get :metrics, params: environment_params(format: :json) - expect(response).to have_gitlab_http_status(204) + expect(response).to have_gitlab_http_status(:no_content) expect(json_response).to eq({}) end end @@ -428,7 +428,7 @@ describe Projects::EnvironmentsController do it 'returns a metrics JSON document' do additional_metrics(window_params) - expect(response).to have_gitlab_http_status(204) + expect(response).to have_gitlab_http_status(:no_content) expect(json_response).to eq({}) end end diff --git a/spec/controllers/projects/forks_controller_spec.rb b/spec/controllers/projects/forks_controller_spec.rb index e351fb2b1f6..e6a68459a84 100644 --- a/spec/controllers/projects/forks_controller_spec.rb +++ b/spec/controllers/projects/forks_controller_spec.rb @@ -23,7 +23,7 @@ describe Projects::ForksController do it 'returns with 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -167,7 +167,7 @@ describe Projects::ForksController do subject - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -205,7 +205,7 @@ describe Projects::ForksController do it 'responds with status 302' do subject - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response).to redirect_to(namespace_project_import_path(user.namespace, project)) end @@ -228,7 +228,7 @@ describe Projects::ForksController do it 'passes continue params to the redirect' do subject - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response).to redirect_to(namespace_project_import_path(user.namespace, project, continue: continue_params)) end end diff --git a/spec/controllers/projects/group_links_controller_spec.rb b/spec/controllers/projects/group_links_controller_spec.rb index d0cb3a74b78..c775b77ce1c 100644 --- a/spec/controllers/projects/group_links_controller_spec.rb +++ b/spec/controllers/projects/group_links_controller_spec.rb @@ -33,7 +33,7 @@ describe Projects::GroupLinksController do include_context 'link project to group' it 'responds with status 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end diff --git a/spec/controllers/projects/hooks_controller_spec.rb b/spec/controllers/projects/hooks_controller_spec.rb index 137296b4f19..f50ef2d804c 100644 --- a/spec/controllers/projects/hooks_controller_spec.rb +++ b/spec/controllers/projects/hooks_controller_spec.rb @@ -42,7 +42,7 @@ describe Projects::HooksController do post :create, params: { namespace_id: project.namespace, project_id: project, hook: hook_params } - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(ProjectHook.all.size).to eq(1) expect(ProjectHook.first).to have_attributes(hook_params) end diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb index 945a56365c8..7cdb8989692 100644 --- a/spec/controllers/projects/issues_controller_spec.rb +++ b/spec/controllers/projects/issues_controller_spec.rb @@ -24,7 +24,7 @@ describe Projects::IssuesController do get :index, params: { namespace_id: project.namespace, project_id: project } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -32,7 +32,7 @@ describe Projects::IssuesController do it 'renders the "index" template' do get :index, params: { namespace_id: project.namespace, project_id: project } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template(:index) end end @@ -51,14 +51,14 @@ describe Projects::IssuesController do get :index, params: { namespace_id: project.namespace, project_id: project } expect(response).to redirect_to(project_issues_path(new_project)) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end it 'redirects from an old issue correctly' do get :show, params: { namespace_id: project.namespace, project_id: project, id: issue } expect(response).to redirect_to(project_issue_path(new_project, issue)) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end @@ -78,7 +78,7 @@ describe Projects::IssuesController do it "returns index" do get :index, params: { namespace_id: project.namespace, project_id: project } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it "returns 301 if request path doesn't match project path" do @@ -92,7 +92,7 @@ describe Projects::IssuesController do project.save! get :index, params: { namespace_id: project.namespace, project_id: project } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -118,7 +118,7 @@ describe Projects::IssuesController do get :index, params: params.merge(page: last_page + 1) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(assigns(:issues).size).to eq(2) end end @@ -227,7 +227,7 @@ describe Projects::IssuesController do get :new, params: { namespace_id: project.namespace, project_id: project } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -235,7 +235,7 @@ describe Projects::IssuesController do it 'renders the "new" template' do get :new, params: { namespace_id: project.namespace, project_id: project } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template(:new) end end @@ -330,7 +330,7 @@ describe Projects::IssuesController do [issue1, issue2, issue3].map(&:reload) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(issue1.relative_position) .to be_between(issue2.relative_position, issue3.relative_position) end @@ -340,7 +340,7 @@ describe Projects::IssuesController do it 'returns a unprocessable entity 422 response for invalid move ids' do reorder_issue(issue1, move_after_id: 99, move_before_id: 999) - expect(response).to have_gitlab_http_status(422) + expect(response).to have_gitlab_http_status(:unprocessable_entity) end it 'returns a not found 404 response for invalid issue id' do @@ -348,7 +348,7 @@ describe Projects::IssuesController do move_after_id: issue2.id, move_before_id: issue3.id) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end it 'returns a unprocessable entity 422 response for issues not in group' do @@ -359,7 +359,7 @@ describe Projects::IssuesController do move_before_id: issue3.id, group_full_path: another_group.full_path) - expect(response).to have_gitlab_http_status(422) + expect(response).to have_gitlab_http_status(:unprocessable_entity) end end end @@ -415,7 +415,7 @@ describe Projects::IssuesController do it 'updates the issue' do subject - expect(response).to have_http_status(:ok) + expect(response).to have_gitlab_http_status(:ok) expect(issue.reload.title).to eq('New title') end @@ -443,7 +443,7 @@ describe Projects::IssuesController do it 'updates the issue' do subject - expect(response).to have_http_status(:ok) + expect(response).to have_gitlab_http_status(:ok) expect(issue.reload.title).to eq('New title') end end @@ -458,7 +458,7 @@ describe Projects::IssuesController do it 'responds with 404' do subject - expect(response).to have_http_status(:not_found) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -505,7 +505,7 @@ describe Projects::IssuesController do it 'returns 200' do go(id: issue.iid) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -749,7 +749,7 @@ describe Projects::IssuesController do it 'returns 200 status' do update_issue - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -769,7 +769,7 @@ describe Projects::IssuesController do it 'returns 200 status' do update_issue - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -785,7 +785,7 @@ describe Projects::IssuesController do end it 'returns 200 status' do - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'accepts an issue after recaptcha is verified' do @@ -1131,7 +1131,7 @@ describe Projects::IssuesController do it "rejects a developer to destroy an issue" do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: issue.iid } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -1147,14 +1147,14 @@ describe Projects::IssuesController do it "deletes the issue" do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: issue.iid, destroy_confirm: true } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(controller).to set_flash[:notice].to(/The issue was successfully deleted\./) end it "deletes the issue" do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: issue.iid, destroy_confirm: true } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(controller).to set_flash[:notice].to(/The issue was successfully deleted\./) end @@ -1163,7 +1163,7 @@ describe Projects::IssuesController do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: issue.iid } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(controller).to set_flash[:notice].to('Destroy confirmation not provided for issue') end @@ -1172,7 +1172,7 @@ describe Projects::IssuesController do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: issue.iid, format: 'json' } - expect(response).to have_gitlab_http_status(422) + expect(response).to have_gitlab_http_status(:unprocessable_entity) expect(json_response).to eq({ 'errors' => 'Destroy confirmation not provided for issue' }) end @@ -1206,7 +1206,7 @@ describe Projects::IssuesController do subject end.to change { issue.award_emoji.count }.by(1) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it "removes the already awarded emoji" do @@ -1214,7 +1214,7 @@ describe Projects::IssuesController do expect { subject }.to change { AwardEmoji.count }.by(-1) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'marks Todos on the Issue as done' do @@ -1250,7 +1250,7 @@ describe Projects::IssuesController do create_merge_request - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end it 'is not available for users who cannot create merge requests' do @@ -1258,7 +1258,7 @@ describe Projects::IssuesController do create_merge_request - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end context 'target_project_id is set' do diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb index 53c40683a5b..65f57deff1b 100644 --- a/spec/controllers/projects/jobs_controller_spec.rb +++ b/spec/controllers/projects/jobs_controller_spec.rb @@ -1183,7 +1183,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do get_terminal_websocket(id: job.id) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.headers["Content-Type"]).to eq(Gitlab::Workhorse::INTERNAL_API_CONTENT_TYPE) expect(response.body).to eq('{"workhorse":"response"}') end @@ -1193,7 +1193,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do it 'returns 404' do get_terminal_websocket(id: 1234) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/labels_controller_spec.rb b/spec/controllers/projects/labels_controller_spec.rb index aee017b211a..c6098f5934d 100644 --- a/spec/controllers/projects/labels_controller_spec.rb +++ b/spec/controllers/projects/labels_controller_spec.rb @@ -80,7 +80,7 @@ describe Projects::LabelsController do it 'creates labels' do post :generate, params: { namespace_id: personal_project.namespace.to_param, project_id: personal_project } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -88,7 +88,7 @@ describe Projects::LabelsController do it 'creates labels' do post :generate, params: { namespace_id: project.namespace.to_param, project_id: project } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end @@ -99,7 +99,7 @@ describe Projects::LabelsController do toggle_subscription(label) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'allows user to toggle subscription on group labels' do @@ -107,7 +107,7 @@ describe Projects::LabelsController do toggle_subscription(group_label) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end def toggle_subscription(label) @@ -123,7 +123,7 @@ describe Projects::LabelsController do it 'denies access' do post :promote, params: { namespace_id: project.namespace.to_param, project_id: project, id: label_1.to_param } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -180,7 +180,7 @@ describe Projects::LabelsController do it 'does not redirect' do get :index, params: { namespace_id: project.namespace, project_id: project.to_param } - expect(response).not_to have_gitlab_http_status(301) + expect(response).not_to have_gitlab_http_status(:moved_permanently) end end @@ -231,13 +231,13 @@ describe Projects::LabelsController do it 'does not 404' do post :generate, params: { namespace_id: project.namespace, project_id: project } - expect(response).not_to have_gitlab_http_status(404) + expect(response).not_to have_gitlab_http_status(:not_found) end it 'does not redirect to the correct casing' do post :generate, params: { namespace_id: project.namespace, project_id: project } - expect(response).not_to have_gitlab_http_status(301) + expect(response).not_to have_gitlab_http_status(:moved_permanently) end end @@ -247,7 +247,7 @@ describe Projects::LabelsController do it 'returns not found' do post :generate, params: { namespace_id: project.namespace, project_id: project.to_param + 'old' } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/mattermosts_controller_spec.rb b/spec/controllers/projects/mattermosts_controller_spec.rb index 64440ed585d..693176d0cfc 100644 --- a/spec/controllers/projects/mattermosts_controller_spec.rb +++ b/spec/controllers/projects/mattermosts_controller_spec.rb @@ -25,7 +25,7 @@ describe Projects::MattermostsController do project_id: project }) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index df2727d13cf..826c69ee5f0 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -113,7 +113,7 @@ describe Projects::MergeRequestsController do } expect(response).to redirect_to(project_merge_request_path(new_project, merge_request)) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end it 'redirects from an old merge request commits correctly' do @@ -125,7 +125,7 @@ describe Projects::MergeRequestsController do } expect(response).to redirect_to(commits_project_merge_request_path(new_project, merge_request)) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end @@ -229,7 +229,7 @@ describe Projects::MergeRequestsController do get_merge_requests(last_page) expect(assigns(:merge_requests).current_page).to eq(last_page) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'does not redirect to external sites when provided a host field' do @@ -306,7 +306,7 @@ describe Projects::MergeRequestsController do it 'responds with 404' do update_merge_request(title: 'New title') - expect(response).to have_http_status(:not_found) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -381,7 +381,7 @@ describe Projects::MergeRequestsController do end it 'returns 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -615,7 +615,7 @@ describe Projects::MergeRequestsController do it "denies access to users unless they're admin or project owner" do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: merge_request.iid } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end context "when the user is owner" do @@ -630,7 +630,7 @@ describe Projects::MergeRequestsController do it "deletes the merge request" do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: merge_request.iid, destroy_confirm: true } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(controller).to set_flash[:notice].to(/The merge request was successfully deleted\./) end @@ -639,7 +639,7 @@ describe Projects::MergeRequestsController do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: merge_request.iid } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(controller).to set_flash[:notice].to('Destroy confirmation not provided for merge request') end @@ -648,7 +648,7 @@ describe Projects::MergeRequestsController do delete :destroy, params: { namespace_id: project.namespace, project_id: project, id: merge_request.iid, format: 'json' } - expect(response).to have_gitlab_http_status(422) + expect(response).to have_gitlab_http_status(:unprocessable_entity) expect(json_response).to eq({ 'errors' => 'Destroy confirmation not provided for merge request' }) end @@ -842,7 +842,7 @@ describe Projects::MergeRequestsController do it 'responds with a 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.body).to be_blank end end @@ -855,7 +855,7 @@ describe Projects::MergeRequestsController do it 'responds with a 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.body).to be_blank end end @@ -898,7 +898,7 @@ describe Projects::MergeRequestsController do it 'returns exposed artifacts' do subject - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response['status']).to eq('parsed') expect(json_response['data']).to eq([{ 'job_name' => 'test', @@ -951,7 +951,7 @@ describe Projects::MergeRequestsController do it 'returns no content' do subject - expect(response).to have_gitlab_http_status(204) + expect(response).to have_gitlab_http_status(:no_content) expect(response.body).to be_empty end end @@ -998,7 +998,7 @@ describe Projects::MergeRequestsController do it 'responds with a 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.body).to be_blank end end @@ -1011,7 +1011,7 @@ describe Projects::MergeRequestsController do it 'responds with a 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.body).to be_blank end end diff --git a/spec/controllers/projects/milestones_controller_spec.rb b/spec/controllers/projects/milestones_controller_spec.rb index a3f55c1eed0..3efdeda6171 100644 --- a/spec/controllers/projects/milestones_controller_spec.rb +++ b/spec/controllers/projects/milestones_controller_spec.rb @@ -30,14 +30,14 @@ describe Projects::MilestonesController do it 'shows milestone page' do view_milestone - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.content_type).to eq 'text/html' end it 'returns milestone json' do view_milestone format: :json - expect(response).to have_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'application/json' end end @@ -171,7 +171,7 @@ describe Projects::MilestonesController do it 'renders 404' do post :promote, params: { namespace_id: project.namespace.id, project_id: project.id, id: milestone.iid } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -190,7 +190,7 @@ describe Projects::MilestonesController do get :labels, params: { namespace_id: group.id, project_id: project.id, id: milestone.iid }, format: :json - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.content_type).to eq 'application/json' expect(json_response['html']).not_to include(label.title) @@ -201,7 +201,7 @@ describe Projects::MilestonesController do get :labels, params: { namespace_id: group.id, project_id: project.id, id: milestone.iid }, format: :json - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.content_type).to eq 'application/json' expect(json_response['html']).to include(label.title) @@ -240,7 +240,7 @@ describe Projects::MilestonesController do post :promote, params: { namespace_id: project.namespace.id, project_id: project.id, id: milestone.iid } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -263,7 +263,7 @@ describe Projects::MilestonesController do params = { namespace_id: project.namespace.id, project_id: project.id, id: milestone.iid, format: :json } get :participants, params: params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.content_type).to eq 'application/json' expect(json_response['html']).to include(issue_assignee.name) end @@ -278,7 +278,7 @@ describe Projects::MilestonesController do params = { namespace_id: project.namespace.id, project_id: project.id, id: milestone.iid, format: :json } get :participants, params: params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.content_type).to eq 'application/json' expect(json_response['html']).not_to include(issue_assignee.name) end diff --git a/spec/controllers/projects/mirrors_controller_spec.rb b/spec/controllers/projects/mirrors_controller_spec.rb index e14686970a1..4362febda5c 100644 --- a/spec/controllers/projects/mirrors_controller_spec.rb +++ b/spec/controllers/projects/mirrors_controller_spec.rb @@ -103,7 +103,7 @@ describe Projects::MirrorsController do it "returns an error with a 400 response for URL #{url.inspect}" do do_get(project, url) - expect(response).to have_gitlab_http_status(400) + expect(response).to have_gitlab_http_status(:bad_request) expect(json_response).to eq('message' => 'Invalid URL') end end @@ -115,7 +115,7 @@ describe Projects::MirrorsController do do_get(project) - expect(response).to have_gitlab_http_status(204) + expect(response).to have_gitlab_http_status(:no_content) end end @@ -125,7 +125,7 @@ describe Projects::MirrorsController do do_get(project) - expect(response).to have_gitlab_http_status(400) + expect(response).to have_gitlab_http_status(:bad_request) expect(json_response).to eq('message' => 'An error') end end @@ -139,7 +139,7 @@ describe Projects::MirrorsController do do_get(project) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response).to eq('known_hosts' => ssh_key, 'fingerprints' => [ssh_fp.stringify_keys], 'host_keys_changed' => true) end end diff --git a/spec/controllers/projects/notes_controller_spec.rb b/spec/controllers/projects/notes_controller_spec.rb index abc9e728cb3..7c00af7b945 100644 --- a/spec/controllers/projects/notes_controller_spec.rb +++ b/spec/controllers/projects/notes_controller_spec.rb @@ -152,7 +152,7 @@ describe Projects::NotesController do it 'renders 404' do get :index, params: params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -246,7 +246,7 @@ describe Projects::NotesController do context 'the project is publically available' do context 'for HTML' do it "returns status 302" do - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -254,7 +254,7 @@ describe Projects::NotesController do let(:extra_request_params) { { format: :json } } it "returns status 200 for json" do - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -265,7 +265,7 @@ describe Projects::NotesController do let(:extra_request_params) { { format: :json } } it "returns status 422 for json" do - expect(response).to have_gitlab_http_status(422) + expect(response).to have_gitlab_http_status(:unprocessable_entity) end end end @@ -278,7 +278,7 @@ describe Projects::NotesController do let(:extra_request_params) { extra } it "returns status 404" do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -296,7 +296,7 @@ describe Projects::NotesController do it "returns status 302 (redirect)" do create! - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -306,7 +306,7 @@ describe Projects::NotesController do it "returns status 200" do create! - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -316,7 +316,7 @@ describe Projects::NotesController do it 'returns discussion JSON when the return_discussion param is set' do create! - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response).to have_key 'discussion' expect(json_response.dig('discussion', 'notes', 0, 'note')).to eq(request_params[:note][:note]) end @@ -330,7 +330,7 @@ describe Projects::NotesController do it 'includes changes in commands_changes ' do create! - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response['commands_changes']).to include('emoji_award', 'time_estimate', 'spend_time') expect(json_response['commands_changes']).not_to include('target_project', 'title') end @@ -349,7 +349,7 @@ describe Projects::NotesController do it 'does not include changes in commands_changes' do create! - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response['commands_changes']).not_to include('target_project', 'title') end end @@ -363,7 +363,7 @@ describe Projects::NotesController do it "prevents a non-member user from creating a note on one of the project's merge requests" do create! - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end context 'when the user is a team member' do @@ -424,7 +424,7 @@ describe Projects::NotesController do it 'returns an error to the user' do create! - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -436,7 +436,7 @@ describe Projects::NotesController do it "prevents a non-member user from creating a note on one of the project's merge requests" do create! - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end context 'when the user is a team member' do @@ -467,7 +467,7 @@ describe Projects::NotesController do it "returns status 302 for html" do create! - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -531,7 +531,7 @@ describe Projects::NotesController do it 'returns a 404', :sidekiq_might_not_need_inline do create! - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -540,7 +540,7 @@ describe Projects::NotesController do it 'returns a 404', :sidekiq_might_not_need_inline do create! - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -550,7 +550,7 @@ describe Projects::NotesController do it 'is successful' do create! - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end it 'creates the note' do @@ -574,7 +574,7 @@ describe Projects::NotesController do expect { post :create, params: request_params }.to change { issue.notes.count }.by(1) .and change { locked_issue.notes.count }.by(0) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -588,7 +588,7 @@ describe Projects::NotesController do request_params[:target_id] = 9999 post :create, params: request_params.merge(format: :json) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -600,13 +600,13 @@ describe Projects::NotesController do it 'returns 302 status for html' do post :create, params: request_params - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end it 'returns 200 status for json' do post :create, params: request_params.merge(format: :json) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'creates a new note' do @@ -618,7 +618,7 @@ describe Projects::NotesController do it 'returns 404 status' do post :create, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end it 'does not create a new note' do @@ -671,7 +671,7 @@ describe Projects::NotesController do } } expect { put :update, params: request_params }.not_to change { note.reload.note } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -695,7 +695,7 @@ describe Projects::NotesController do it "returns status 200 for html" do delete :destroy, params: request_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it "deletes the note" do @@ -712,7 +712,7 @@ describe Projects::NotesController do it "returns status 404" do delete :destroy, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -732,7 +732,7 @@ describe Projects::NotesController do subject end.to change { note.award_emoji.count }.by(1) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it "removes the already awarded emoji" do @@ -740,7 +740,7 @@ describe Projects::NotesController do expect { subject }.to change { AwardEmoji.count }.by(-1) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'marks Todos on the Noteable as done' do @@ -766,7 +766,7 @@ describe Projects::NotesController do it "returns status 404" do post :resolve, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -783,7 +783,7 @@ describe Projects::NotesController do it "returns status 404" do post :resolve, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -812,7 +812,7 @@ describe Projects::NotesController do it "returns status 200" do post :resolve, params: request_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -829,7 +829,7 @@ describe Projects::NotesController do it "returns status 404" do delete :unresolve, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -846,7 +846,7 @@ describe Projects::NotesController do it "returns status 404" do delete :unresolve, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -860,7 +860,7 @@ describe Projects::NotesController do it "returns status 200" do delete :unresolve, params: request_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end diff --git a/spec/controllers/projects/pages_controller_spec.rb b/spec/controllers/projects/pages_controller_spec.rb index c07619465bf..102c0b6b048 100644 --- a/spec/controllers/projects/pages_controller_spec.rb +++ b/spec/controllers/projects/pages_controller_spec.rb @@ -23,7 +23,7 @@ describe Projects::PagesController do it 'returns 200 status' do get :show, params: request_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end context 'when the project is in a subgroup' do @@ -33,7 +33,7 @@ describe Projects::PagesController do it 'returns a 200 status code' do get :show, params: request_params - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -42,7 +42,7 @@ describe Projects::PagesController do it 'returns 302 status' do delete :destroy, params: request_params - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end context 'when user is developer' do @@ -53,7 +53,7 @@ describe Projects::PagesController do it 'returns 404 status' do delete :destroy, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -67,7 +67,7 @@ describe Projects::PagesController do it 'returns 404 status' do get :show, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -75,7 +75,7 @@ describe Projects::PagesController do it 'returns 404 status' do delete :destroy, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/pages_domains_controller_spec.rb b/spec/controllers/projects/pages_domains_controller_spec.rb index ef6a193e677..ef5e831d26c 100644 --- a/spec/controllers/projects/pages_domains_controller_spec.rb +++ b/spec/controllers/projects/pages_domains_controller_spec.rb @@ -35,7 +35,7 @@ describe Projects::PagesDomainsController do it "displays to the 'show' page" do make_request - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template('show') end @@ -47,7 +47,7 @@ describe Projects::PagesDomainsController do it 'renders 404 page' do make_request - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -56,7 +56,7 @@ describe Projects::PagesDomainsController do it "displays the 'new' page" do get(:new, params: request_params) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template('new') end end @@ -78,7 +78,7 @@ describe Projects::PagesDomainsController do it "displays the 'show' page" do get(:show, params: request_params.merge(id: pages_domain.domain)) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template('show') end end @@ -177,7 +177,7 @@ describe Projects::PagesDomainsController do it 'returns a 404 response for an unknown domain' do post :verify, params: request_params.merge(id: 'unknown-domain') - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -250,7 +250,7 @@ describe Projects::PagesDomainsController do it 'returns 404 status' do get(:show, params: request_params.merge(id: pages_domain.domain)) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -258,7 +258,7 @@ describe Projects::PagesDomainsController do it 'returns 404 status' do get :new, params: request_params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -266,7 +266,7 @@ describe Projects::PagesDomainsController do it "returns 404 status" do post(:create, params: request_params.merge(pages_domain: pages_domain_params)) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -274,7 +274,7 @@ describe Projects::PagesDomainsController do it "deletes the pages domain" do delete(:destroy, params: request_params.merge(id: pages_domain.domain)) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/pipeline_schedules_controller_spec.rb b/spec/controllers/projects/pipeline_schedules_controller_spec.rb index 60b802f1cab..72b282429e9 100644 --- a/spec/controllers/projects/pipeline_schedules_controller_spec.rb +++ b/spec/controllers/projects/pipeline_schedules_controller_spec.rb @@ -396,7 +396,7 @@ describe Projects::PipelineSchedulesController do post :play, params: { namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -407,7 +407,7 @@ describe Projects::PipelineSchedulesController do post :play, params: { namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id } expect(flash[:notice]).to start_with 'Successfully scheduled a pipeline to run' - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end it 'prevents users from scheduling the same pipeline repeatedly' do @@ -417,7 +417,7 @@ describe Projects::PipelineSchedulesController do expect(flash.to_a.size).to eq(2) expect(flash[:alert]).to eq _('You cannot play this scheduled pipeline at the moment. Please wait a minute.') - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -430,7 +430,7 @@ describe Projects::PipelineSchedulesController do post :play, params: { namespace_id: project.namespace.to_param, project_id: project, id: protected_schedule.id } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -460,7 +460,7 @@ describe Projects::PipelineSchedulesController do delete :destroy, params: { namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id } end.to change { project.pipeline_schedules.count }.by(-1) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end diff --git a/spec/controllers/projects/pipelines_controller_spec.rb b/spec/controllers/projects/pipelines_controller_spec.rb index 4cc5b3cba7c..74d7e056737 100644 --- a/spec/controllers/projects/pipelines_controller_spec.rb +++ b/spec/controllers/projects/pipelines_controller_spec.rb @@ -703,7 +703,7 @@ describe Projects::PipelinesController do it 'shows latest pipeline for the default project branch' do get :show, params: { namespace_id: project.namespace, project_id: project, latest: true, ref: nil } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(assigns(:pipeline)).to have_attributes(id: pipeline_master.id) end end @@ -716,7 +716,7 @@ describe Projects::PipelinesController do it 'shows the latest pipeline for the provided ref' do get :show, params: { namespace_id: project.namespace, project_id: project, latest: true, ref: branch_secondary.name } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(assigns(:pipeline)).to have_attributes(id: pipeline_secondary.id) end @@ -728,7 +728,7 @@ describe Projects::PipelinesController do it 'shows the provided ref with the last sha/pipeline combo' do get :show, params: { namespace_id: project.namespace, project_id: project, latest: true, ref: branch_secondary.name } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(assigns(:pipeline)).to have_attributes(id: pipeline_secondary.id) end end @@ -737,7 +737,7 @@ describe Projects::PipelinesController do it 'renders a 404 if no pipeline is found for the ref' do get :show, params: { namespace_id: project.namespace, project_id: project, ref: 'no-branch' } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -754,7 +754,7 @@ describe Projects::PipelinesController do it 'deletes pipeline and redirects' do delete_pipeline - expect(response).to have_gitlab_http_status(303) + expect(response).to have_gitlab_http_status(:see_other) expect(Ci::Build.exists?(build.id)).to be_falsy expect(Ci::Pipeline.exists?(pipeline.id)).to be_falsy @@ -766,7 +766,7 @@ describe Projects::PipelinesController do it 'fails to delete pipeline' do delete_pipeline - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -775,7 +775,7 @@ describe Projects::PipelinesController do it 'fails to delete pipeline' do delete_pipeline - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(:forbidden) end end diff --git a/spec/controllers/projects/pipelines_settings_controller_spec.rb b/spec/controllers/projects/pipelines_settings_controller_spec.rb index 16a43f62bd5..789b2104d3c 100644 --- a/spec/controllers/projects/pipelines_settings_controller_spec.rb +++ b/spec/controllers/projects/pipelines_settings_controller_spec.rb @@ -17,7 +17,7 @@ describe Projects::PipelinesSettingsController do it 'redirects with 302 status code' do get :show, params: { namespace_id: project.namespace, project_id: project } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end diff --git a/spec/controllers/projects/project_members_controller_spec.rb b/spec/controllers/projects/project_members_controller_spec.rb index 0df19aa6e44..09420cc8556 100644 --- a/spec/controllers/projects/project_members_controller_spec.rb +++ b/spec/controllers/projects/project_members_controller_spec.rb @@ -11,7 +11,7 @@ describe Projects::ProjectMembersController do it 'has the project_members address with a 200 status code' do get :index, params: { namespace_id: project.namespace, project_id: project } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end context 'when project belongs to group' do @@ -64,7 +64,7 @@ describe Projects::ProjectMembersController do access_level: Gitlab::Access::GUEST } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(project.users).not_to include project_user end end @@ -145,7 +145,7 @@ describe Projects::ProjectMembersController do id: 42 } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -162,7 +162,7 @@ describe Projects::ProjectMembersController do id: member } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(project.members).to include member end end @@ -211,7 +211,7 @@ describe Projects::ProjectMembersController do project_id: project } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -246,7 +246,7 @@ describe Projects::ProjectMembersController do project_id: project } - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(:forbidden) end end @@ -305,7 +305,7 @@ describe Projects::ProjectMembersController do id: 42 } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -322,7 +322,7 @@ describe Projects::ProjectMembersController do id: member } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(project.members).not_to include member end end diff --git a/spec/controllers/projects/raw_controller_spec.rb b/spec/controllers/projects/raw_controller_spec.rb index aef8ef1d487..8cb48dca095 100644 --- a/spec/controllers/projects/raw_controller_spec.rb +++ b/spec/controllers/projects/raw_controller_spec.rb @@ -23,7 +23,7 @@ describe Projects::RawController do it 'delivers ASCII file' do subject - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.header['Content-Type']).to eq('text/plain; charset=utf-8') expect(response.header['Content-Disposition']).to eq('inline') expect(response.header[Gitlab::Workhorse::DETECT_HEADER]).to eq "true" @@ -37,7 +37,7 @@ describe Projects::RawController do it 'leaves image content disposition' do subject - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.header['Content-Disposition']).to eq('inline') expect(response.header[Gitlab::Workhorse::DETECT_HEADER]).to eq "true" expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with('git-blob:') @@ -63,7 +63,7 @@ describe Projects::RawController do .to change { Gitlab::GitalyClient.get_request_count }.by(0) expect(response.body).to eq(_('You cannot access the raw file. Please wait a minute.')) - expect(response).to have_gitlab_http_status(429) + expect(response).to have_gitlab_http_status(:too_many_requests) end it 'logs the event on auth.log' do @@ -94,7 +94,7 @@ describe Projects::RawController do request.headers['X-Gitlab-External-Storage-Token'] = token execute_raw_requests(requests: 6, project: project, file_path: file_path) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -113,7 +113,7 @@ describe Projects::RawController do execute_raw_requests(requests: 3, project: project, file_path: modified_path) expect(response.body).to eq(_('You cannot access the raw file. Please wait a minute.')) - expect(response).to have_gitlab_http_status(429) + expect(response).to have_gitlab_http_status(:too_many_requests) end end @@ -125,7 +125,7 @@ describe Projects::RawController do it 'does not prevent from accessing the raw file' do execute_raw_requests(requests: 10, project: project, file_path: file_path) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -141,14 +141,14 @@ describe Projects::RawController do execute_raw_requests(requests: 6, project: project, file_path: file_path) expect(response.body).to eq(_('You cannot access the raw file. Please wait a minute.')) - expect(response).to have_gitlab_http_status(429) + expect(response).to have_gitlab_http_status(:too_many_requests) # Accessing upcase version of readme file_path = "#{commit_sha}/README.md" execute_raw_requests(requests: 1, project: project, file_path: file_path) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -166,7 +166,7 @@ describe Projects::RawController do it 'redirects to sign in page' do execute_raw_requests(requests: 1, project: project, file_path: file_path) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response.location).to end_with('/users/sign_in') end end @@ -176,7 +176,7 @@ describe Projects::RawController do it 'calls the action normally' do execute_raw_requests(requests: 1, project: project, file_path: file_path, token: user.static_object_token) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -184,7 +184,7 @@ describe Projects::RawController do it 'redirects to sign in page' do execute_raw_requests(requests: 1, project: project, file_path: file_path, token: 'foobar') - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response.location).to end_with('/users/sign_in') end end @@ -196,7 +196,7 @@ describe Projects::RawController do request.headers['X-Gitlab-Static-Object-Token'] = user.static_object_token execute_raw_requests(requests: 1, project: project, file_path: file_path) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -205,7 +205,7 @@ describe Projects::RawController do request.headers['X-Gitlab-Static-Object-Token'] = 'foobar' execute_raw_requests(requests: 1, project: project, file_path: file_path) - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(response.location).to end_with('/users/sign_in') end end diff --git a/spec/controllers/projects/repositories_controller_spec.rb b/spec/controllers/projects/repositories_controller_spec.rb index 084644484c5..aeb053fe9f6 100644 --- a/spec/controllers/projects/repositories_controller_spec.rb +++ b/spec/controllers/projects/repositories_controller_spec.rb @@ -45,7 +45,7 @@ describe Projects::RepositoriesController do it 'handles legacy queries with the ref specified as ref in params' do get :archive, params: { namespace_id: project.namespace, project_id: project, ref: 'feature' }, format: 'zip' - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(assigns(:ref)).to eq('feature') expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with("git-archive:") end @@ -53,7 +53,7 @@ describe Projects::RepositoriesController do it 'handles legacy queries with the ref specified as id in params' do get :archive, params: { namespace_id: project.namespace, project_id: project, id: 'feature' }, format: 'zip' - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(assigns(:ref)).to eq('feature') expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with("git-archive:") end @@ -61,7 +61,7 @@ describe Projects::RepositoriesController do it 'prioritizes the id param over the ref param when both are specified' do get :archive, params: { namespace_id: project.namespace, project_id: project, id: 'feature', ref: 'feature_conflict' }, format: 'zip' - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(assigns(:ref)).to eq('feature') expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with("git-archive:") end @@ -74,7 +74,7 @@ describe Projects::RepositoriesController do it "renders Not Found" do get :archive, params: { namespace_id: project.namespace, project_id: project, id: "master" }, format: "zip" - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -82,7 +82,7 @@ describe Projects::RepositoriesController do it 'sets appropriate caching headers' do get_archive - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.header['ETag']).to be_present expect(response.header['Cache-Control']).to include('max-age=60, private') end @@ -93,7 +93,7 @@ describe Projects::RepositoriesController do it 'sets appropriate caching headers' do get_archive - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.header['ETag']).to be_present expect(response.header['Cache-Control']).to include('max-age=60, public') end @@ -103,7 +103,7 @@ describe Projects::RepositoriesController do it 'max-age is set to 3600 in Cache-Control header' do get_archive('ddd0f15ae83993f5cb66a927a28673882e99100b') - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.header['Cache-Control']).to include('max-age=3600') end end @@ -116,7 +116,7 @@ describe Projects::RepositoriesController do request.headers['If-None-Match'] = response.headers['ETag'] get_archive - expect(response).to have_gitlab_http_status(304) + expect(response).to have_gitlab_http_status(:not_modified) end end @@ -137,7 +137,7 @@ describe Projects::RepositoriesController do it 'redirects to sign in page' do get :archive, params: { namespace_id: project.namespace, project_id: project, id: 'master' }, format: 'zip' - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -146,7 +146,7 @@ describe Projects::RepositoriesController do it 'calls the action normally' do get :archive, params: { namespace_id: project.namespace, project_id: project, id: 'master', token: user.static_object_token }, format: 'zip' - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -154,7 +154,7 @@ describe Projects::RepositoriesController do it 'redirects to sign in page' do get :archive, params: { namespace_id: project.namespace, project_id: project, id: 'master', token: 'foobar' }, format: 'zip' - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end @@ -165,7 +165,7 @@ describe Projects::RepositoriesController do request.headers['X-Gitlab-Static-Object-Token'] = user.static_object_token get :archive, params: { namespace_id: project.namespace, project_id: project, id: 'master' }, format: 'zip' - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -174,7 +174,7 @@ describe Projects::RepositoriesController do request.headers['X-Gitlab-Static-Object-Token'] = 'foobar' get :archive, params: { namespace_id: project.namespace, project_id: project, id: 'master' }, format: 'zip' - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end diff --git a/spec/controllers/projects/runners_controller_spec.rb b/spec/controllers/projects/runners_controller_spec.rb index 279b4f360c5..1893180fe9b 100644 --- a/spec/controllers/projects/runners_controller_spec.rb +++ b/spec/controllers/projects/runners_controller_spec.rb @@ -30,7 +30,7 @@ describe Projects::RunnersController do runner.reload - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(runner.description).to eq(new_desc) end end @@ -39,7 +39,7 @@ describe Projects::RunnersController do it 'destroys the runner' do delete :destroy, params: params - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(Ci::Runner.find_by(id: runner.id)).to be_nil end end @@ -54,7 +54,7 @@ describe Projects::RunnersController do runner.reload - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(runner.active).to eq(true) end end @@ -69,7 +69,7 @@ describe Projects::RunnersController do runner.reload - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(runner.active).to eq(false) end end diff --git a/spec/controllers/projects/snippets_controller_spec.rb b/spec/controllers/projects/snippets_controller_spec.rb index ee145a62b57..8233c0a0adb 100644 --- a/spec/controllers/projects/snippets_controller_spec.rb +++ b/spec/controllers/projects/snippets_controller_spec.rb @@ -35,7 +35,7 @@ describe Projects::SnippetsController do get :index, params: { namespace_id: project.namespace, project_id: project } expect(assigns(:snippets)).not_to include(project_snippet) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -48,7 +48,7 @@ describe Projects::SnippetsController do get :index, params: { namespace_id: project.namespace, project_id: project } expect(assigns(:snippets)).to include(project_snippet) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -61,7 +61,7 @@ describe Projects::SnippetsController do get :index, params: { namespace_id: project.namespace, project_id: project } expect(assigns(:snippets)).to include(project_snippet) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -318,7 +318,7 @@ describe Projects::SnippetsController do it 'responds with status 404' do get action, params: { namespace_id: project.namespace, project_id: project, id: project_snippet.to_param } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -331,7 +331,7 @@ describe Projects::SnippetsController do get action, params: { namespace_id: project.namespace, project_id: project, id: project_snippet.to_param } expect(assigns(:snippet)).to eq(project_snippet) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -344,7 +344,7 @@ describe Projects::SnippetsController do get action, params: { namespace_id: project.namespace, project_id: project, id: project_snippet.to_param } expect(assigns(:snippet)).to eq(project_snippet) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -354,7 +354,7 @@ describe Projects::SnippetsController do it 'responds with status 404' do get action, params: { namespace_id: project.namespace, project_id: project, id: 42 } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -366,7 +366,7 @@ describe Projects::SnippetsController do it 'responds with status 404' do get action, params: { namespace_id: project.namespace, project_id: project, id: 42 } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -386,7 +386,7 @@ describe Projects::SnippetsController do let(:snippet_permission) { :private } it 'responds with status 404' do - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -395,7 +395,7 @@ describe Projects::SnippetsController do it 'responds with status 200' do expect(assigns(:snippet)).to eq(project_snippet) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -407,7 +407,7 @@ describe Projects::SnippetsController do it 'responds with status 404' do expect(assigns(:snippet)).to eq(project_snippet) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -501,7 +501,7 @@ describe Projects::SnippetsController do it 'responds with status 404' do delete :destroy, params: params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/stages_controller_spec.rb b/spec/controllers/projects/stages_controller_spec.rb index a91e3523fd7..c38e3d2544f 100644 --- a/spec/controllers/projects/stages_controller_spec.rb +++ b/spec/controllers/projects/stages_controller_spec.rb @@ -25,7 +25,7 @@ describe Projects::StagesController do it 'returns not authorized' do play_manual_stage! - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end diff --git a/spec/controllers/projects/templates_controller_spec.rb b/spec/controllers/projects/templates_controller_spec.rb index 07b8a36fefc..b4b04878181 100644 --- a/spec/controllers/projects/templates_controller_spec.rb +++ b/spec/controllers/projects/templates_controller_spec.rb @@ -110,7 +110,7 @@ describe Projects::TemplatesController do it 'returns the template names' do get(:names, params: { namespace_id: project.namespace, template_type: template_type, project_id: project }, format: :json) - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response.size).to eq(1) expect(json_response[0]['name']).to eq(expected_template_name) end @@ -121,7 +121,7 @@ describe Projects::TemplatesController do get(:names, params: { namespace_id: project.namespace, template_type: template_type, project_id: project }, format: :json) - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end diff --git a/spec/controllers/projects/todos_controller_spec.rb b/spec/controllers/projects/todos_controller_spec.rb index c12019fed5e..b7d40d2a452 100644 --- a/spec/controllers/projects/todos_controller_spec.rb +++ b/spec/controllers/projects/todos_controller_spec.rb @@ -22,7 +22,7 @@ describe Projects::TodosController do it "doesn't create todo" do expect { post_create }.not_to change { user.todos.count } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/tree_controller_spec.rb b/spec/controllers/projects/tree_controller_spec.rb index 5df05a06f00..96838383540 100644 --- a/spec/controllers/projects/tree_controller_spec.rb +++ b/spec/controllers/projects/tree_controller_spec.rb @@ -85,7 +85,7 @@ describe Projects::TreeController do context "valid SHA commit ID with path" do let(:id) { '6d39438/.gitignore' } - it { expect(response).to have_gitlab_http_status(302) } + it { expect(response).to have_gitlab_http_status(:found) } end end diff --git a/spec/controllers/projects/uploads_controller_spec.rb b/spec/controllers/projects/uploads_controller_spec.rb index a70669e86a6..bb5415ee62c 100644 --- a/spec/controllers/projects/uploads_controller_spec.rb +++ b/spec/controllers/projects/uploads_controller_spec.rb @@ -49,7 +49,7 @@ describe Projects::UploadsController do it "responds with status internal_server_error" do post_authorize - expect(response).to have_gitlab_http_status(500) + expect(response).to have_gitlab_http_status(:internal_server_error) expect(response.body).to eq(_('Error uploading file')) end end diff --git a/spec/controllers/projects/usage_ping_controller_spec.rb b/spec/controllers/projects/usage_ping_controller_spec.rb index a9abbff160d..284db93d7a8 100644 --- a/spec/controllers/projects/usage_ping_controller_spec.rb +++ b/spec/controllers/projects/usage_ping_controller_spec.rb @@ -24,7 +24,7 @@ describe Projects::UsagePingController do it 'returns 302' do subject - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -32,7 +32,7 @@ describe Projects::UsagePingController do it 'returns 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -57,7 +57,7 @@ describe Projects::UsagePingController do it 'returns 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/projects/wikis_controller_spec.rb b/spec/controllers/projects/wikis_controller_spec.rb index bfa555aab4c..6dd050af277 100644 --- a/spec/controllers/projects/wikis_controller_spec.rb +++ b/spec/controllers/projects/wikis_controller_spec.rb @@ -25,7 +25,7 @@ describe Projects::WikisController do it 'redirects to #show and appends a `random_title` param' do subject - expect(response).to have_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(Rails.application.routes.recognize_path(response.redirect_url)).to include( controller: 'projects/wikis', action: 'show' @@ -70,7 +70,7 @@ describe Projects::WikisController do end it "returns status #{expected_status}" do - expect(response).to have_http_status(expected_status) + expect(response).to have_gitlab_http_status(expected_status) end end @@ -103,7 +103,7 @@ describe Projects::WikisController do subject - expect(response).to have_http_status(:ok) + expect(response).to have_gitlab_http_status(:ok) expect(assigns(:page).title).to eq(wiki_title) end @@ -113,7 +113,7 @@ describe Projects::WikisController do subject - expect(response).to have_http_status(:ok) + expect(response).to have_gitlab_http_status(:ok) expect(flash[:notice]).to eq(_('The content of this page is not encoded in UTF-8. Edits can only be made via the Git repository.')) end end @@ -204,7 +204,7 @@ describe Projects::WikisController do it 'shows the edit page' do subject - expect(response).to have_http_status(:ok) + expect(response).to have_gitlab_http_status(:ok) expect(response.body).to include(s_('Wiki|Edit Page')) end end diff --git a/spec/controllers/sent_notifications_controller_spec.rb b/spec/controllers/sent_notifications_controller_spec.rb index 4dd4f49dcf1..b4b867f5c66 100644 --- a/spec/controllers/sent_notifications_controller_spec.rb +++ b/spec/controllers/sent_notifications_controller_spec.rb @@ -30,6 +30,16 @@ describe SentNotificationsController do let(:target_project) { project } describe 'GET unsubscribe' do + shared_examples 'returns 404' do + it 'does not set the flash message' do + expect(controller).not_to set_flash[:notice] + end + + it 'returns a 404' do + expect(response).to have_gitlab_http_status(:not_found) + end + end + context 'when the user is not logged in' do context 'when the force param is passed' do before do @@ -156,6 +166,16 @@ describe SentNotificationsController do end end end + + context 'when the noteable associated to the notification has been deleted' do + before do + sent_notification.noteable.destroy! + + get(:unsubscribe, params: { id: sent_notification.reply_key }) + end + + it_behaves_like 'returns 404' + end end context 'when the user is logged in' do @@ -168,17 +188,7 @@ describe SentNotificationsController do get(:unsubscribe, params: { id: sent_notification.reply_key.reverse }) end - it 'does not unsubscribe the user' do - expect(issue.subscribed?(user, project)).to be_truthy - end - - it 'does not set the flash message' do - expect(controller).not_to set_flash[:notice] - end - - it 'returns a 404' do - expect(response).to have_gitlab_http_status(:not_found) - end + it_behaves_like 'returns 404' end context 'when the force param is passed' do @@ -254,6 +264,16 @@ describe SentNotificationsController do end end end + + context 'when the noteable associated to the notification has been deleted' do + before do + sent_notification.noteable.destroy! + + get(:unsubscribe, params: { id: sent_notification.reply_key }) + end + + it_behaves_like 'returns 404' + end end end end diff --git a/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb b/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb index 1fc490ecbfe..e54137b9492 100644 --- a/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb +++ b/spec/features/projects/blobs/blob_line_permalink_updater_spec.rb @@ -44,6 +44,17 @@ describe 'Blob button line permalinks (BlobLinePermalinkUpdater)', :js do expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(project_blob_path(project, tree_join(sha, path), anchor: ending_fragment))) end + it 'changes fragment hash if icon inside line number link is clicked' do + ending_fragment = "L7" + + visit_blob + + find("##{ending_fragment}").hover + find("##{ending_fragment} i").click + + expect(find('.js-data-file-blob-permalink-url')['href']).to eq(get_absolute_url(project_blob_path(project, tree_join(sha, path), anchor: ending_fragment))) + end + it 'with initial fragment hash, changes fragment hash if line number clicked' do fragment = "L1" ending_fragment = "L5" @@ -83,6 +94,17 @@ describe 'Blob button line permalinks (BlobLinePermalinkUpdater)', :js do expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(project_blame_path(project, tree_join('master', path), anchor: ending_fragment))) end + it 'changes fragment hash if icon inside line number link is clicked' do + ending_fragment = "L7" + + visit_blob + + find("##{ending_fragment}").hover + find("##{ending_fragment} i").click + + expect(find('.js-blob-blame-link')['href']).to eq(get_absolute_url(project_blame_path(project, tree_join('master', path), anchor: ending_fragment))) + end + it 'with initial fragment hash, changes fragment hash if line number clicked' do fragment = "L1" ending_fragment = "L5" diff --git a/spec/frontend/ide/components/branches/item_spec.js b/spec/frontend/ide/components/branches/item_spec.js index 1db3750609b..138443b715e 100644 --- a/spec/frontend/ide/components/branches/item_spec.js +++ b/spec/frontend/ide/components/branches/item_spec.js @@ -1,8 +1,8 @@ -import Vue from 'vue'; -import mountCompontent from 'helpers/vue_mount_component_helper'; +import { shallowMount } from '@vue/test-utils'; import router from '~/ide/ide_router'; import Item from '~/ide/components/branches/item.vue'; -import { getTimeago } from '~/lib/utils/datetime_utility'; +import Icon from '~/vue_shared/components/icon.vue'; +import Timeago from '~/vue_shared/components/time_ago_tooltip.vue'; import { projectData } from '../../mock_data'; const TEST_BRANCH = { @@ -12,45 +12,45 @@ const TEST_BRANCH = { const TEST_PROJECT_ID = projectData.name_with_namespace; describe('IDE branch item', () => { - const Component = Vue.extend(Item); - let vm; + let wrapper; - beforeEach(() => { - vm = mountCompontent(Component, { - item: { ...TEST_BRANCH }, - projectId: TEST_PROJECT_ID, - isActive: false, + function createComponent(props = {}) { + wrapper = shallowMount(Item, { + propsData: { + item: { ...TEST_BRANCH }, + projectId: TEST_PROJECT_ID, + isActive: false, + ...props, + }, + }); + } + + afterEach(() => { + wrapper.destroy(); + }); + + describe('if not active', () => { + beforeEach(() => { + createComponent(); + }); + it('renders branch name and timeago', () => { + expect(wrapper.text()).toContain(TEST_BRANCH.name); + expect(wrapper.find(Timeago).props('time')).toBe(TEST_BRANCH.committedDate); + expect(wrapper.find(Icon).exists()).toBe(false); + }); + + it('renders link to branch', () => { + const expectedHref = router.resolve(`/project/${TEST_PROJECT_ID}/edit/${TEST_BRANCH.name}`) + .href; + + expect(wrapper.text()).toMatch('a'); + expect(wrapper.attributes('href')).toBe(expectedHref); }); }); - afterEach(() => { - vm.$destroy(); - }); + it('renders icon if is not active', () => { + createComponent({ isActive: true }); - it('renders branch name and timeago', () => { - const timeText = getTimeago().format(TEST_BRANCH.committedDate); - - expect(vm.$el.textContent).toContain(TEST_BRANCH.name); - expect(vm.$el.querySelector('time')).toHaveText(timeText); - expect(vm.$el.querySelector('.ic-mobile-issue-close')).toBe(null); - }); - - it('renders link to branch', () => { - const expectedHref = router.resolve(`/project/${TEST_PROJECT_ID}/edit/${TEST_BRANCH.name}`) - .href; - - expect(vm.$el.textContent).toMatch('a'); - expect(vm.$el).toHaveAttr('href', expectedHref); - }); - - it('renders icon if isActive', done => { - vm.isActive = true; - - vm.$nextTick() - .then(() => { - expect(vm.$el.querySelector('.ic-mobile-issue-close')).not.toBe(null); - }) - .then(done) - .catch(done.fail); + expect(wrapper.find(Icon).exists()).toBe(true); }); }); diff --git a/spec/frontend/ide/components/jobs/detail/scroll_button_spec.js b/spec/frontend/ide/components/jobs/detail/scroll_button_spec.js index 096851a5401..b8dbca97ade 100644 --- a/spec/frontend/ide/components/jobs/detail/scroll_button_spec.js +++ b/spec/frontend/ide/components/jobs/detail/scroll_button_spec.js @@ -1,59 +1,50 @@ -import Vue from 'vue'; +import { shallowMount } from '@vue/test-utils'; +import Icon from '~/vue_shared/components/icon.vue'; import ScrollButton from '~/ide/components/jobs/detail/scroll_button.vue'; -import mountComponent from '../../../../helpers/vue_mount_component_helper'; describe('IDE job log scroll button', () => { - const Component = Vue.extend(ScrollButton); - let vm; + let wrapper; - beforeEach(() => { - vm = mountComponent(Component, { - direction: 'up', - disabled: false, + const createComponent = props => { + wrapper = shallowMount(ScrollButton, { + propsData: { + direction: 'up', + disabled: false, + ...props, + }, }); - }); + }; afterEach(() => { - vm.$destroy(); + wrapper.destroy(); }); - describe('iconName', () => { - ['up', 'down'].forEach(direction => { - it(`returns icon name for ${direction}`, () => { - vm.direction = direction; + describe.each` + direction | icon | title + ${'up'} | ${'scroll_up'} | ${'Scroll to top'} + ${'down'} | ${'scroll_down'} | ${'Scroll to bottom'} + `('for $direction direction', ({ direction, icon, title }) => { + beforeEach(() => createComponent({ direction })); - expect(vm.iconName).toBe(`scroll_${direction}`); - }); - }); - }); - - describe('tooltipTitle', () => { - it('returns title for up', () => { - expect(vm.tooltipTitle).toBe('Scroll to top'); + it('returns proper icon name', () => { + expect(wrapper.find(Icon).props('name')).toBe(icon); }); - it('returns title for down', () => { - vm.direction = 'down'; - - expect(vm.tooltipTitle).toBe('Scroll to bottom'); + it('returns proper title', () => { + expect(wrapper.attributes('data-original-title')).toBe(title); }); }); it('emits click event on click', () => { - jest.spyOn(vm, '$emit').mockImplementation(() => {}); + createComponent(); - vm.$el.querySelector('.btn-scroll').click(); - - expect(vm.$emit).toHaveBeenCalledWith('click'); + wrapper.find('button').trigger('click'); + expect(wrapper.emitted().click).toBeDefined(); }); - it('disables button when disabled is true', done => { - vm.disabled = true; + it('disables button when disabled is true', () => { + createComponent({ disabled: true }); - vm.$nextTick(() => { - expect(vm.$el.querySelector('.btn-scroll').hasAttribute('disabled')).toBe(true); - - done(); - }); + expect(wrapper.find('button').attributes('disabled')).toBe('disabled'); }); }); diff --git a/spec/frontend/ide/components/preview/navigator_spec.js b/spec/frontend/ide/components/preview/navigator_spec.js index 650bb7660a4..aa15f391e77 100644 --- a/spec/frontend/ide/components/preview/navigator_spec.js +++ b/spec/frontend/ide/components/preview/navigator_spec.js @@ -1,167 +1,177 @@ -import Vue from 'vue'; -import mountComponent from 'helpers/vue_mount_component_helper'; +import { shallowMount } from '@vue/test-utils'; import { TEST_HOST } from 'helpers/test_constants'; +import { GlLoadingIcon } from '@gitlab/ui'; import ClientsideNavigator from '~/ide/components/preview/navigator.vue'; +import { listen } from 'codesandbox-api'; + +jest.mock('codesandbox-api', () => ({ + listen: jest.fn().mockReturnValue(jest.fn()), +})); describe('IDE clientside preview navigator', () => { - let vm; - let Component; + let wrapper; let manager; + let listenHandler; - beforeAll(() => { - Component = Vue.extend(ClientsideNavigator); - }); + const findBackButton = () => wrapper.findAll('button').at(0); + const findForwardButton = () => wrapper.findAll('button').at(1); + const findRefreshButton = () => wrapper.findAll('button').at(2); beforeEach(() => { + listen.mockClear(); manager = { bundlerURL: TEST_HOST, iframe: { src: '' } }; - vm = mountComponent(Component, { manager }); + wrapper = shallowMount(ClientsideNavigator, { propsData: { manager } }); + [[listenHandler]] = listen.mock.calls; }); afterEach(() => { - vm.$destroy(); + wrapper.destroy(); }); it('renders readonly URL bar', () => { - expect(vm.$el.querySelector('input[readonly]').value).toBe('/'); - }); - - it('disables back button when navigationStack is empty', () => { - expect(vm.$el.querySelector('.ide-navigator-btn')).toHaveAttr('disabled'); - expect(vm.$el.querySelector('.ide-navigator-btn').classList).toContain('disabled-content'); - }); - - it('disables forward button when forwardNavigationStack is empty', () => { - vm.forwardNavigationStack = []; - - expect(vm.$el.querySelectorAll('.ide-navigator-btn')[1]).toHaveAttr('disabled'); - expect(vm.$el.querySelectorAll('.ide-navigator-btn')[1].classList).toContain( - 'disabled-content', - ); - }); - - it('calls back method when clicking back button', done => { - vm.navigationStack.push('/test'); - vm.navigationStack.push('/test2'); - jest.spyOn(vm, 'back').mockReturnValue(); - - vm.$nextTick(() => { - vm.$el.querySelector('.ide-navigator-btn').click(); - - expect(vm.back).toHaveBeenCalled(); - - done(); + listenHandler({ type: 'urlchange', url: manager.bundlerURL }); + return wrapper.vm.$nextTick(() => { + expect(wrapper.find('input[readonly]').element.value).toBe('/'); }); }); - it('calls forward method when clicking forward button', done => { - vm.forwardNavigationStack.push('/test'); - jest.spyOn(vm, 'forward').mockReturnValue(); + it('renders loading icon by default', () => { + expect(wrapper.find(GlLoadingIcon).exists()).toBe(true); + }); - vm.$nextTick(() => { - vm.$el.querySelectorAll('.ide-navigator-btn')[1].click(); - - expect(vm.forward).toHaveBeenCalled(); - - done(); + it('removes loading icon when done event is fired', () => { + listenHandler({ type: 'done' }); + return wrapper.vm.$nextTick(() => { + expect(wrapper.find(GlLoadingIcon).exists()).toBe(false); }); }); - describe('onUrlChange', () => { - it('updates the path', () => { - vm.onUrlChange({ url: `${TEST_HOST}/url` }); - - expect(vm.path).toBe('/url'); - }); - - it('sets currentBrowsingIndex 0 if not already set', () => { - vm.onUrlChange({ url: `${TEST_HOST}/url` }); - - expect(vm.currentBrowsingIndex).toBe(0); - }); - - it('increases currentBrowsingIndex if path doesnt match', () => { - vm.onUrlChange({ url: `${TEST_HOST}/url` }); - - vm.onUrlChange({ url: `${TEST_HOST}/url2` }); - - expect(vm.currentBrowsingIndex).toBe(1); - }); - - it('does not increase currentBrowsingIndex if path matches', () => { - vm.onUrlChange({ url: `${TEST_HOST}/url` }); - - vm.onUrlChange({ url: `${TEST_HOST}/url` }); - - expect(vm.currentBrowsingIndex).toBe(0); - }); - - it('pushes path into navigation stack', () => { - vm.onUrlChange({ url: `${TEST_HOST}/url` }); - - expect(vm.navigationStack).toEqual(['/url']); + it('does not count visiting same url multiple times', () => { + listenHandler({ type: 'done' }); + listenHandler({ type: 'done', url: `${TEST_HOST}/url1` }); + listenHandler({ type: 'done', url: `${TEST_HOST}/url1` }); + return wrapper.vm.$nextTick().then(() => { + expect(findBackButton().attributes('disabled')).toBe('disabled'); }); }); - describe('back', () => { + it('unsubscribes from listen on destroy', () => { + const unsubscribeFn = listen(); + + wrapper.destroy(); + expect(unsubscribeFn).toHaveBeenCalled(); + }); + + describe('back button', () => { beforeEach(() => { - vm.path = '/test2'; - vm.currentBrowsingIndex = 1; - vm.navigationStack.push('/test'); - vm.navigationStack.push('/test2'); - - jest.spyOn(vm, 'visitPath').mockReturnValue(); - - vm.back(); + listenHandler({ type: 'done' }); + listenHandler({ type: 'urlchange', url: TEST_HOST }); + return wrapper.vm.$nextTick(); }); - it('visits the last entry in navigationStack', () => { - expect(vm.visitPath).toHaveBeenCalledWith('/test'); + it('is disabled by default', () => { + expect(findBackButton().attributes('disabled')).toBe('disabled'); }); - it('adds last entry to forwardNavigationStack', () => { - expect(vm.forwardNavigationStack).toEqual(['/test2']); + it('is enabled when there is previous entry', () => { + listenHandler({ type: 'urlchange', url: `${TEST_HOST}/url1` }); + return wrapper.vm.$nextTick().then(() => { + findBackButton().trigger('click'); + expect(findBackButton().attributes('disabled')).toBeFalsy(); + }); }); - it('clears navigation stack if currentBrowsingIndex is 1', () => { - expect(vm.navigationStack).toEqual([]); + it('is disabled when there is no previous entry', () => { + listenHandler({ type: 'urlchange', url: `${TEST_HOST}/url1` }); + return wrapper.vm + .$nextTick() + .then(() => { + findBackButton().trigger('click'); + + return wrapper.vm.$nextTick(); + }) + .then(() => { + expect(findBackButton().attributes('disabled')).toBe('disabled'); + }); }); - it('sets currentBrowsingIndex to null is currentBrowsingIndex is 1', () => { - expect(vm.currentBrowsingIndex).toBe(null); + it('updates manager iframe src', () => { + listenHandler({ type: 'urlchange', url: `${TEST_HOST}/url1` }); + listenHandler({ type: 'urlchange', url: `${TEST_HOST}/url2` }); + return wrapper.vm.$nextTick().then(() => { + findBackButton().trigger('click'); + + expect(manager.iframe.src).toBe(`${TEST_HOST}/url1`); + }); }); }); - describe('forward', () => { - it('calls visitPath with first entry in forwardNavigationStack', () => { - jest.spyOn(vm, 'visitPath').mockReturnValue(); + describe('forward button', () => { + beforeEach(() => { + listenHandler({ type: 'done' }); + listenHandler({ type: 'urlchange', url: TEST_HOST }); + return wrapper.vm.$nextTick(); + }); - vm.forwardNavigationStack.push('/test'); - vm.forwardNavigationStack.push('/test2'); + it('is disabled by default', () => { + expect(findForwardButton().attributes('disabled')).toBe('disabled'); + }); - vm.forward(); + it('is enabled when there is next entry', () => { + listenHandler({ type: 'urlchange', url: `${TEST_HOST}/url1` }); + return wrapper.vm + .$nextTick() + .then(() => { + findBackButton().trigger('click'); + return wrapper.vm.$nextTick(); + }) + .then(() => { + expect(findForwardButton().attributes('disabled')).toBeFalsy(); + }); + }); - expect(vm.visitPath).toHaveBeenCalledWith('/test'); + it('is disabled when there is no next entry', () => { + listenHandler({ type: 'urlchange', url: `${TEST_HOST}/url1` }); + return wrapper.vm + .$nextTick() + .then(() => { + findBackButton().trigger('click'); + return wrapper.vm.$nextTick(); + }) + .then(() => { + findForwardButton().trigger('click'); + return wrapper.vm.$nextTick(); + }) + .then(() => { + expect(findForwardButton().attributes('disabled')).toBe('disabled'); + }); + }); + + it('updates manager iframe src', () => { + listenHandler({ type: 'urlchange', url: `${TEST_HOST}/url1` }); + listenHandler({ type: 'urlchange', url: `${TEST_HOST}/url2` }); + return wrapper.vm.$nextTick().then(() => { + findBackButton().trigger('click'); + + expect(manager.iframe.src).toBe(`${TEST_HOST}/url1`); + }); }); }); - describe('refresh', () => { + describe('refresh button', () => { + const url = `${TEST_HOST}/some_url`; + beforeEach(() => { + listenHandler({ type: 'done' }); + listenHandler({ type: 'urlchange', url }); + return wrapper.vm.$nextTick(); + }); + it('calls refresh with current path', () => { - jest.spyOn(vm, 'visitPath').mockReturnValue(); + manager.iframe.src = 'something-other'; + findRefreshButton().trigger('click'); - vm.path = '/test'; - - vm.refresh(); - - expect(vm.visitPath).toHaveBeenCalledWith('/test'); - }); - }); - - describe('visitPath', () => { - it('updates iframe src with passed in path', () => { - vm.visitPath('/testpath'); - - expect(manager.iframe.src).toBe(`${TEST_HOST}/testpath`); + expect(manager.iframe.src).toBe(url); }); }); }); diff --git a/spec/requests/api/group_export_spec.rb b/spec/requests/api/group_export_spec.rb index ac4853e5388..6128f2e4a87 100644 --- a/spec/requests/api/group_export_spec.rb +++ b/spec/requests/api/group_export_spec.rb @@ -30,25 +30,39 @@ describe API::GroupExport do group.add_owner(user) end - context 'when export file exists' do + context 'group_import_export feature flag enabled' do before do - upload.export_file = fixture_file_upload('spec/fixtures/group_export.tar.gz', "`/tar.gz") - upload.save! + stub_feature_flags(group_import_export: true) end - it 'downloads exported group archive' do - get api(download_path, user) - - expect(response).to have_gitlab_http_status(200) - end - - context 'when export_file.file does not exist' do + context 'when export file exists' do before do - expect_next_instance_of(ImportExportUploader) do |uploader| - expect(uploader).to receive(:file).and_return(nil) - end + upload.export_file = fixture_file_upload('spec/fixtures/group_export.tar.gz', "`/tar.gz") + upload.save! end + it 'downloads exported group archive' do + get api(download_path, user) + + expect(response).to have_gitlab_http_status(200) + end + + context 'when export_file.file does not exist' do + before do + expect_next_instance_of(ImportExportUploader) do |uploader| + expect(uploader).to receive(:file).and_return(nil) + end + end + + it 'returns 404' do + get api(download_path, user) + + expect(response).to have_gitlab_http_status(404) + end + end + end + + context 'when export file does not exist' do it 'returns 404' do get api(download_path, user) @@ -57,8 +71,12 @@ describe API::GroupExport do end end - context 'when export file does not exist' do - it 'returns 404' do + context 'group_import_export feature flag disabled' do + before do + stub_feature_flags(group_import_export: false) + end + + it 'responds with 404 Not Found' do get api(download_path, user) expect(response).to have_gitlab_http_status(404) @@ -67,27 +85,45 @@ describe API::GroupExport do end describe 'POST /groups/:group_id/export' do - context 'when user is a group owner' do + context 'group_import_export feature flag enabled' do before do - group.add_owner(user) + stub_feature_flags(group_import_export: true) end - it 'accepts download' do - post api(path, user) + context 'when user is a group owner' do + before do + group.add_owner(user) + end - expect(response).to have_gitlab_http_status(202) + it 'accepts download' do + post api(path, user) + + expect(response).to have_gitlab_http_status(202) + end + end + + context 'when user is not a group owner' do + before do + group.add_developer(user) + end + + it 'forbids the request' do + post api(path, user) + + expect(response).to have_gitlab_http_status(403) + end end end - context 'when user is not a group owner' do + context 'group_import_export feature flag disabled' do before do - group.add_developer(user) + stub_feature_flags(group_import_export: false) end - it 'forbids the request' do + it 'responds with 404 Not Found' do post api(path, user) - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(404) end end end