Commit bbaf2bb0 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent e9c2bf26
...@@ -331,26 +331,13 @@ RSpec/MissingExampleGroupArgument: ...@@ -331,26 +331,13 @@ RSpec/MissingExampleGroupArgument:
RSpec/UnspecifiedException: RSpec/UnspecifiedException:
Enabled: false Enabled: false
# Work in progress. See https://gitlab.com/gitlab-org/gitlab/issues/196163
RSpec/HaveGitlabHttpStatus: RSpec/HaveGitlabHttpStatus:
Enabled: true Enabled: true
Exclude: Exclude:
- 'spec/support/matchers/have_gitlab_http_status.rb' - 'spec/support/matchers/have_gitlab_http_status.rb'
Include: Include:
- 'spec/support/**/*' - 'spec/**/*'
- 'ee/spec/support/**/*' - 'ee/spec/**/*'
- 'spec/features/**/*'
- 'ee/spec/features/**/*'
- 'spec/controllers/**/*'
- 'ee/spec/controllers/**/*'
- 'spec/requests/*.rb'
- 'ee/spec/requests/*.rb'
- 'spec/requests/{groups,projects,repositories}/**/*'
- 'ee/spec/requests/{groups,projects,repositories}/**/*'
- 'spec/requests/api/*/**/*.rb'
- 'ee/spec/requests/api/*/**/*.rb'
- 'spec/requests/api/[a-s]*.rb'
- 'ee/spec/requests/api/[a-s]*.rb'
Style/MultilineWhenThen: Style/MultilineWhenThen:
Enabled: false Enabled: false
......
...@@ -61,9 +61,11 @@ class SnippetsFinder < UnionFinder ...@@ -61,9 +61,11 @@ class SnippetsFinder < UnionFinder
def execute def execute
# The snippet query can be expensive, therefore if the # The snippet query can be expensive, therefore if the
# author or project params have been passed and they don't # author or project params have been passed and they don't
# exist, it's better to return # exist, or if a Project has been passed and has snippets
# disabled, it's better to return
return Snippet.none if author.nil? && params[:author].present? return Snippet.none if author.nil? && params[:author].present?
return Snippet.none if project.nil? && params[:project].present? return Snippet.none if project.nil? && params[:project].present?
return Snippet.none if project && !project.feature_available?(:snippets, current_user)
items = init_collection items = init_collection
items = by_ids(items) items = by_ids(items)
......
...@@ -6,4 +6,5 @@ ...@@ -6,4 +6,5 @@
= icon('rss') = icon('rss')
.content_list.project-activity{ :"data-href" => activity_project_path(@project) } .content_list.project-activity{ :"data-href" => activity_project_path(@project) }
= spinner .loading
.spinner.spinner-md
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
.save-project-loader.hide .save-project-loader.hide
.center .center
%h2 %h2
%i.fa.fa-spinner.fa-spin .spinner.spinner-md.align-text-bottom
= _('Saving project.') = _('Saving project.')
%p= _('Please wait a moment, this page will automatically refresh when ready.') %p= _('Please wait a moment, this page will automatically refresh when ready.')
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
.save-project-loader.d-none .save-project-loader.d-none
.center .center
%h2 %h2
%i.fa.fa-spinner.fa-spin .spinner.spinner-md.align-text-bottom
= s_('ProjectsNew|Creating project & repository.') = s_('ProjectsNew|Creating project & repository.')
%p %p
= s_('ProjectsNew|Please wait a moment, this page will automatically refresh when ready.') = s_('ProjectsNew|Please wait a moment, this page will automatically refresh when ready.')
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
.tabs-holder .tabs-holder
%ul.pipelines-tabs.nav-links.no-top.no-bottom.mobile-separator.nav.nav-tabs %ul.pipelines-tabs.nav-links.no-top.no-bottom.mobile-separator.nav.nav-tabs
%li.js-pipeline-tab-link %li.js-pipeline-tab-link
= link_to @pipeline_path, data: { target: '#js-tab-pipeline', action: 'pipelines', toggle: 'tab' }, class: 'pipeline-tab' do = link_to project_pipeline_path(@project, @pipeline), data: { target: '#js-tab-pipeline', action: 'pipelines', toggle: 'tab' }, class: 'pipeline-tab' do
= _('Pipeline') = _('Pipeline')
%li.js-builds-tab-link %li.js-builds-tab-link
= link_to builds_project_pipeline_path(@project, @pipeline), data: { target: '#js-tab-builds', action: 'builds', toggle: 'tab' }, class: 'builds-tab' do = link_to builds_project_pipeline_path(@project, @pipeline), data: { target: '#js-tab-builds', action: 'builds', toggle: 'tab' }, class: 'builds-tab' do
......
---
title: Update loader for various project views
merge_request: 25755
author: Phellipe K Ribeiro
type: other
---
title: Generate proper link for Pipeline tab
merge_request: 26193
author:
type: fixed
---
title: Improve SnippetsFinder performance with disabled project snippets
merge_request: 26295
author:
type: performance
# frozen_string_literal: true
# rubocop:disable Style/SignalException
def get_karma_files(files)
files.select do |file|
file.start_with?('ee/spec/javascripts', 'spec/javascripts') &&
!file.end_with?('browser_spec.js')
end
end
new_karma_files = get_karma_files(git.added_files.to_a)
unless new_karma_files.empty?
if GitlabDanger.new(helper.gitlab_helper).ci?
markdown(<<~MARKDOWN)
## New karma spec file
New frontend specs ([except `browser_specs`](https://gitlab.com/gitlab-org/gitlab/blob/3b6fe2f1077eedb0b8aff02a7350234f0b7dc4f9/spec/javascripts/lib/utils/browser_spec.js#L2)) should be
[written in jest](https://docs.gitlab.com/ee/development/testing_guide/frontend_testing.html#jest).
You have created the following tests, please migrate them over to jest:
* #{new_karma_files.map { |path| "`#{path}`" }.join("\n* ")}
MARKDOWN
end
fail "You have created a new karma spec file"
end
changed_karma_files = get_karma_files(helper.all_changed_files) - new_karma_files
return if changed_karma_files.empty?
warn 'You have edited karma spec files. Please consider migrating them to jest.'
if GitlabDanger.new(helper.gitlab_helper).ci?
markdown(<<~MARKDOWN)
## Edited karma files
You have edited the following karma spec files. Please consider migrating them to jest:
* #{changed_karma_files.map { |path| "`#{path}`" }.join("\n* ")}
In order to align with our Iteration value, migration can also be done as a follow-up.
For more information: [Jestodus epic](https://gitlab.com/groups/gitlab-org/-/epics/895)
MARKDOWN
end
...@@ -4831,16 +4831,16 @@ enum MilestoneStateEnum { ...@@ -4831,16 +4831,16 @@ enum MilestoneStateEnum {
} }
""" """
The position the adjacent object should be moved. The position to which the adjacent object should be moved
""" """
enum MoveType { enum MoveType {
""" """
The adjacent object will be moved after the object that is being moved. The adjacent object will be moved after the object that is being moved
""" """
after after
""" """
The adjacent object will be moved before the object that is being moved. The adjacent object will be moved before the object that is being moved
""" """
before before
} }
......
...@@ -24550,20 +24550,20 @@ ...@@ -24550,20 +24550,20 @@
{ {
"kind": "ENUM", "kind": "ENUM",
"name": "MoveType", "name": "MoveType",
"description": "The position the adjacent object should be moved.", "description": "The position to which the adjacent object should be moved",
"fields": null, "fields": null,
"inputFields": null, "inputFields": null,
"interfaces": null, "interfaces": null,
"enumValues": [ "enumValues": [
{ {
"name": "before", "name": "before",
"description": "The adjacent object will be moved before the object that is being moved.", "description": "The adjacent object will be moved before the object that is being moved",
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
}, },
{ {
"name": "after", "name": "after",
"description": "The adjacent object will be moved after the object that is being moved.", "description": "The adjacent object will be moved after the object that is being moved",
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
} }
......
...@@ -15,10 +15,6 @@ limits](https://about.gitlab.com/handbook/product/#introducing-application-limit ...@@ -15,10 +15,6 @@ limits](https://about.gitlab.com/handbook/product/#introducing-application-limit
## Development ## Development
The merge request to [configure maximum number of webhooks per
project](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20730/diffs) is a
good example about configuring application limits.
### Insert database plan limits ### Insert database plan limits
In the `plan_limits` table, you have to create a new column and insert the In the `plan_limits` table, you have to create a new column and insert the
...@@ -78,12 +74,22 @@ can be used to validate that a model does not exceed the limits. It ensures ...@@ -78,12 +74,22 @@ can be used to validate that a model does not exceed the limits. It ensures
that the count of the records for the current model does not exceed the defined that the count of the records for the current model does not exceed the defined
limit. limit.
NOTE: **Note:** The name (pluralized) of the plan limit introduced in the NOTE: **Note:** You must specify the limit scope of the object being validated
database (`project_hooks`) must correspond to the name of the model we are and the limit name if it's different from the pluralized model name.
validating (`ProjectHook`).
```ruby ```ruby
class ProjectHook class ProjectHook
include Limitable include Limitable
self.limit_name = 'project_hooks' # Optional as ProjectHook corresponds with project_hooks
self.limit_scope = :project
end
```
To test the model, you can include the shared examples.
```ruby
it_behaves_like 'includes Limitable concern' do
subject { build(:project_hook, project: create(:project)) }
end end
``` ```
...@@ -8,6 +8,7 @@ class GitlabDanger ...@@ -8,6 +8,7 @@ class GitlabDanger
duplicate_yarn_dependencies duplicate_yarn_dependencies
prettier prettier
eslint eslint
karma
database database
commit_messages commit_messages
].freeze ].freeze
......
...@@ -12051,9 +12051,6 @@ msgstr "" ...@@ -12051,9 +12051,6 @@ msgstr ""
msgid "Maximum number of comments exceeded" msgid "Maximum number of comments exceeded"
msgstr "" msgstr ""
msgid "Maximum number of group hooks (%{count}) exceeded"
msgstr ""
msgid "Maximum number of mirrors that can be synchronizing at the same time." msgid "Maximum number of mirrors that can be synchronizing at the same time."
msgstr "" msgstr ""
......
...@@ -284,6 +284,17 @@ describe SnippetsFinder do ...@@ -284,6 +284,17 @@ describe SnippetsFinder do
expect(described_class.new(user).execute).to contain_exactly(private_personal_snippet, internal_personal_snippet, public_personal_snippet) expect(described_class.new(user).execute).to contain_exactly(private_personal_snippet, internal_personal_snippet, public_personal_snippet)
end end
end end
context 'when project snippets are disabled' do
it 'returns quickly' do
disabled_snippets_project = create(:project, :snippets_disabled)
finder = described_class.new(user, project: disabled_snippets_project.id)
expect(finder).not_to receive(:init_collection)
expect(Snippet).to receive(:none).and_call_original
expect(finder.execute).to be_empty
end
end
end end
it_behaves_like 'snippet visibility' it_behaves_like 'snippet visibility'
......
...@@ -9,7 +9,7 @@ describe GitlabDanger do ...@@ -9,7 +9,7 @@ describe GitlabDanger do
describe '.local_warning_message' do describe '.local_warning_message' do
it 'returns an informational message with rules that can run' do it 'returns an informational message with rules that can run' do
expect(described_class.local_warning_message).to eq('==> Only the following Danger rules can be run locally: changes_size, documentation, frozen_string, duplicate_yarn_dependencies, prettier, eslint, database, commit_messages') expect(described_class.local_warning_message).to eq('==> Only the following Danger rules can be run locally: changes_size, documentation, frozen_string, duplicate_yarn_dependencies, prettier, eslint, karma, database, commit_messages')
end end
end end
......
...@@ -61,7 +61,7 @@ describe API::Tags do ...@@ -61,7 +61,7 @@ describe API::Tags do
it 'only returns searched tags' do it 'only returns searched tags' do
get api("#{route}", user), params: { search: 'v1.1.0' } get api("#{route}", user), params: { search: 'v1.1.0' }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
...@@ -73,7 +73,7 @@ describe API::Tags do ...@@ -73,7 +73,7 @@ describe API::Tags do
it 'returns the repository tags' do it 'returns the repository tags' do
get api(route, current_user) get api(route, current_user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('public_api/v4/tags') expect(response).to match_response_schema('public_api/v4/tags')
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response.map { |r| r['name'] }).to include(tag_name) expect(json_response.map { |r| r['name'] }).to include(tag_name)
...@@ -133,7 +133,7 @@ describe API::Tags do ...@@ -133,7 +133,7 @@ describe API::Tags do
it 'returns an array of project tags with release info' do it 'returns an array of project tags with release info' do
get api(route, user) get api(route, user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('public_api/v4/tags') expect(response).to match_response_schema('public_api/v4/tags')
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
...@@ -151,7 +151,7 @@ describe API::Tags do ...@@ -151,7 +151,7 @@ describe API::Tags do
it 'returns the repository branch' do it 'returns the repository branch' do
get api(route, current_user) get api(route, current_user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('public_api/v4/tag') expect(response).to match_response_schema('public_api/v4/tag')
expect(json_response['name']).to eq(tag_name) expect(json_response['name']).to eq(tag_name)
end end
...@@ -214,7 +214,7 @@ describe API::Tags do ...@@ -214,7 +214,7 @@ describe API::Tags do
it 'creates a new tag' do it 'creates a new tag' do
post api(route, current_user), params: { tag_name: tag_name, ref: 'master' } post api(route, current_user), params: { tag_name: tag_name, ref: 'master' }
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/tag') expect(response).to match_response_schema('public_api/v4/tag')
expect(json_response['name']).to eq(tag_name) expect(json_response['name']).to eq(tag_name)
end end
...@@ -269,26 +269,26 @@ describe API::Tags do ...@@ -269,26 +269,26 @@ describe API::Tags do
it 'returns 400 if tag name is invalid' do it 'returns 400 if tag name is invalid' do
post api(route, current_user), params: { tag_name: 'new design', ref: 'master' } post api(route, current_user), params: { tag_name: 'new design', ref: 'master' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']).to eq('Tag name invalid') expect(json_response['message']).to eq('Tag name invalid')
end end
it 'returns 400 if tag already exists' do it 'returns 400 if tag already exists' do
post api(route, current_user), params: { tag_name: 'new_design1', ref: 'master' } post api(route, current_user), params: { tag_name: 'new_design1', ref: 'master' }
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/tag') expect(response).to match_response_schema('public_api/v4/tag')
post api(route, current_user), params: { tag_name: 'new_design1', ref: 'master' } post api(route, current_user), params: { tag_name: 'new_design1', ref: 'master' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']).to eq('Tag new_design1 already exists') expect(json_response['message']).to eq('Tag new_design1 already exists')
end end
it 'returns 400 if ref name is invalid' do it 'returns 400 if ref name is invalid' do
post api(route, current_user), params: { tag_name: 'new_design3', ref: 'foo' } post api(route, current_user), params: { tag_name: 'new_design3', ref: 'foo' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']).to eq('Target foo is invalid') expect(json_response['message']).to eq('Target foo is invalid')
end end
...@@ -296,7 +296,7 @@ describe API::Tags do ...@@ -296,7 +296,7 @@ describe API::Tags do
it 'creates a new tag' do it 'creates a new tag' do
post api(route, current_user), params: { tag_name: tag_name, ref: 'master', release_description: 'Wow' } post api(route, current_user), params: { tag_name: tag_name, ref: 'master', release_description: 'Wow' }
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/tag') expect(response).to match_response_schema('public_api/v4/tag')
expect(json_response['name']).to eq(tag_name) expect(json_response['name']).to eq(tag_name)
expect(json_response['release']['description']).to eq('Wow') expect(json_response['release']['description']).to eq('Wow')
...@@ -315,7 +315,7 @@ describe API::Tags do ...@@ -315,7 +315,7 @@ describe API::Tags do
post api(route, current_user), params: { tag_name: 'v7.1.0', ref: 'master', message: 'Release 7.1.0' } post api(route, current_user), params: { tag_name: 'v7.1.0', ref: 'master', message: 'Release 7.1.0' }
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/tag') expect(response).to match_response_schema('public_api/v4/tag')
expect(json_response['name']).to eq('v7.1.0') expect(json_response['name']).to eq('v7.1.0')
expect(json_response['message']).to eq('Release 7.1.0') expect(json_response['message']).to eq('Release 7.1.0')
...@@ -337,7 +337,7 @@ describe API::Tags do ...@@ -337,7 +337,7 @@ describe API::Tags do
it 'deletes a tag' do it 'deletes a tag' do
delete api(route, current_user) delete api(route, current_user)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end end
it_behaves_like '412 response' do it_behaves_like '412 response' do
...@@ -383,7 +383,7 @@ describe API::Tags do ...@@ -383,7 +383,7 @@ describe API::Tags do
it 'creates description for existing git tag' do it 'creates description for existing git tag' do
post api(route, user), params: { description: description } post api(route, user), params: { description: description }
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/release/tag_release') expect(response).to match_response_schema('public_api/v4/release/tag_release')
expect(json_response['tag_name']).to eq(tag_name) expect(json_response['tag_name']).to eq(tag_name)
expect(json_response['description']).to eq(description) expect(json_response['description']).to eq(description)
...@@ -424,7 +424,7 @@ describe API::Tags do ...@@ -424,7 +424,7 @@ describe API::Tags do
it 'returns 409 if there is already a release' do it 'returns 409 if there is already a release' do
post api(route, user), params: { description: description } post api(route, user), params: { description: description }
expect(response).to have_gitlab_http_status(409) expect(response).to have_gitlab_http_status(:conflict)
expect(json_response['message']).to eq('Release already exists') expect(json_response['message']).to eq('Release already exists')
end end
end end
...@@ -449,7 +449,7 @@ describe API::Tags do ...@@ -449,7 +449,7 @@ describe API::Tags do
it 'updates the release description' do it 'updates the release description' do
put api(route, current_user), params: { description: new_description } put api(route, current_user), params: { description: new_description }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['tag_name']).to eq(tag_name) expect(json_response['tag_name']).to eq(tag_name)
expect(json_response['description']).to eq(new_description) expect(json_response['description']).to eq(new_description)
end end
......
...@@ -57,7 +57,7 @@ describe 'task completion status response' do ...@@ -57,7 +57,7 @@ describe 'task completion status response' do
get api("#{path}?iids[]=#{taskable.iid}", user) get api("#{path}?iids[]=#{taskable.iid}", user)
end end
it { expect(response).to have_gitlab_http_status(200) } it { expect(response).to have_gitlab_http_status(:ok) }
it 'returns the expected results' do it 'returns the expected results' do
expect(json_response).to be_an Array expect(json_response).to be_an Array
......
...@@ -25,7 +25,7 @@ describe API::Templates do ...@@ -25,7 +25,7 @@ describe API::Templates do
it 'returns a list of available gitignore templates' do it 'returns a list of available gitignore templates' do
get api('/templates/gitignores') get api('/templates/gitignores')
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to be > 15 expect(json_response.size).to be > 15
...@@ -36,7 +36,7 @@ describe API::Templates do ...@@ -36,7 +36,7 @@ describe API::Templates do
it 'returns a list of available gitlab_ci_ymls' do it 'returns a list of available gitlab_ci_ymls' do
get api('/templates/gitlab_ci_ymls') get api('/templates/gitlab_ci_ymls')
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first['name']).not_to be_nil expect(json_response.first['name']).not_to be_nil
...@@ -47,7 +47,7 @@ describe API::Templates do ...@@ -47,7 +47,7 @@ describe API::Templates do
it 'adds a disclaimer on the top' do it 'adds a disclaimer on the top' do
get api('/templates/gitlab_ci_ymls/Ruby') get api('/templates/gitlab_ci_ymls/Ruby')
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['content']).to start_with("# This file is a template,") expect(json_response['content']).to start_with("# This file is a template,")
end end
end end
...@@ -58,7 +58,7 @@ describe API::Templates do ...@@ -58,7 +58,7 @@ describe API::Templates do
end end
it 'returns a license template' do it 'returns a license template' do
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['key']).to eq('mit') expect(json_response['key']).to eq('mit')
expect(json_response['name']).to eq('MIT License') expect(json_response['name']).to eq('MIT License')
...@@ -78,7 +78,7 @@ describe API::Templates do ...@@ -78,7 +78,7 @@ describe API::Templates do
it 'returns a list of available license templates' do it 'returns a list of available license templates' do
get api('/templates/licenses') get api('/templates/licenses')
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to eq(12) expect(json_response.size).to eq(12)
...@@ -90,7 +90,7 @@ describe API::Templates do ...@@ -90,7 +90,7 @@ describe API::Templates do
it 'returns a list of available popular license templates' do it 'returns a list of available popular license templates' do
get api('/templates/licenses?popular=1') get api('/templates/licenses?popular=1')
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to eq(3) expect(json_response.size).to eq(3)
...@@ -173,7 +173,7 @@ describe API::Templates do ...@@ -173,7 +173,7 @@ describe API::Templates do
let(:license_type) { 'muth-over9000' } let(:license_type) { 'muth-over9000' }
it 'returns a 404' do 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 end
end end
...@@ -185,7 +185,7 @@ describe API::Templates do ...@@ -185,7 +185,7 @@ describe API::Templates do
it 'replaces the copyright owner placeholder with the name of the current user' do it 'replaces the copyright owner placeholder with the name of the current user' do
get api('/templates/licenses/mit', user) get api('/templates/licenses/mit', user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['content']).to include("Copyright (c) #{Time.now.year} #{user.name}") expect(json_response['content']).to include("Copyright (c) #{Time.now.year} #{user.name}")
end end
end end
......
...@@ -166,7 +166,7 @@ describe API::Todos do ...@@ -166,7 +166,7 @@ describe API::Todos do
it 'returns authentication error' do it 'returns authentication error' do
post api("/todos/#{pending_1.id}/mark_as_done") post api("/todos/#{pending_1.id}/mark_as_done")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -174,7 +174,7 @@ describe API::Todos do ...@@ -174,7 +174,7 @@ describe API::Todos do
it 'marks a todo as done' do it 'marks a todo as done' do
post api("/todos/#{pending_1.id}/mark_as_done", john_doe) post api("/todos/#{pending_1.id}/mark_as_done", john_doe)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response['id']).to eq(pending_1.id) expect(json_response['id']).to eq(pending_1.id)
expect(json_response['state']).to eq('done') expect(json_response['state']).to eq('done')
expect(pending_1.reload).to be_done expect(pending_1.reload).to be_done
...@@ -199,7 +199,7 @@ describe API::Todos do ...@@ -199,7 +199,7 @@ describe API::Todos do
it 'returns authentication error' do it 'returns authentication error' do
post api('/todos/mark_as_done') post api('/todos/mark_as_done')
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -207,7 +207,7 @@ describe API::Todos do ...@@ -207,7 +207,7 @@ describe API::Todos do
it 'marks all todos as done' do it 'marks all todos as done' do
post api('/todos/mark_as_done', john_doe) post api('/todos/mark_as_done', john_doe)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
expect(pending_1.reload).to be_done expect(pending_1.reload).to be_done
expect(pending_2.reload).to be_done expect(pending_2.reload).to be_done
expect(pending_3.reload).to be_done expect(pending_3.reload).to be_done
...@@ -258,9 +258,9 @@ describe API::Todos do ...@@ -258,9 +258,9 @@ describe API::Todos do
post api("/projects/#{project_1.id}/#{issuable_type}/#{issuable.iid}/todo", guest) post api("/projects/#{project_1.id}/#{issuable_type}/#{issuable.iid}/todo", guest)
if issuable_type == 'merge_requests' if issuable_type == 'merge_requests'
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
else else
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
end end
......
...@@ -31,13 +31,13 @@ describe API::Triggers do ...@@ -31,13 +31,13 @@ describe API::Triggers do
it 'returns bad request if token is missing' do it 'returns bad request if token is missing' do
post api("/projects/#{project.id}/trigger/pipeline"), params: { ref: 'master' } post api("/projects/#{project.id}/trigger/pipeline"), params: { ref: 'master' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it 'returns not found if project is not found' do it 'returns not found if project is not found' do
post api('/projects/0/trigger/pipeline'), params: options.merge(ref: 'master') post api('/projects/0/trigger/pipeline'), params: options.merge(ref: 'master')
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -47,7 +47,7 @@ describe API::Triggers do ...@@ -47,7 +47,7 @@ describe API::Triggers do
it 'creates pipeline' do it 'creates pipeline' do
post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(ref: 'master') post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(ref: 'master')
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response).to include('id' => pipeline.id) expect(json_response).to include('id' => pipeline.id)
pipeline.builds.reload pipeline.builds.reload
expect(pipeline.builds.pending.size).to eq(2) expect(pipeline.builds.pending.size).to eq(2)
...@@ -57,7 +57,7 @@ describe API::Triggers do ...@@ -57,7 +57,7 @@ describe API::Triggers do
it 'returns bad request with no pipeline created if there\'s no commit for that ref' do it 'returns bad request with no pipeline created if there\'s no commit for that ref' do
post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(ref: 'other-branch') post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(ref: 'other-branch')
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']).to eq('base' => ["Reference not found"]) expect(json_response['message']).to eq('base' => ["Reference not found"])
end end
...@@ -69,21 +69,21 @@ describe API::Triggers do ...@@ -69,21 +69,21 @@ describe API::Triggers do
it 'validates variables to be a hash' do it 'validates variables to be a hash' do
post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(variables: 'value', ref: 'master') post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(variables: 'value', ref: 'master')
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('variables is invalid') expect(json_response['error']).to eq('variables is invalid')
end end
it 'validates variables needs to be a map of key-valued strings' do it 'validates variables needs to be a map of key-valued strings' do
post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(variables: { key: %w(1 2) }, ref: 'master') post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(variables: { key: %w(1 2) }, ref: 'master')
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']).to eq('variables needs to be a map of key-valued strings') expect(json_response['message']).to eq('variables needs to be a map of key-valued strings')
end end
it 'creates trigger request with variables' do it 'creates trigger request with variables' do
post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(variables: variables, ref: 'master') post api("/projects/#{project.id}/trigger/pipeline"), params: options.merge(variables: variables, ref: 'master')
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(pipeline.variables.map { |v| { v.key => v.value } }.last).to eq(variables) expect(pipeline.variables.map { |v| { v.key => v.value } }.last).to eq(variables)
end end
end end
...@@ -93,7 +93,7 @@ describe API::Triggers do ...@@ -93,7 +93,7 @@ describe API::Triggers do
it 'does not leak the presence of project when token is for different project' do it 'does not leak the presence of project when token is for different project' do
post api("/projects/#{project2.id}/ref/master/trigger/pipeline?token=#{trigger_token}"), params: { ref: 'refs/heads/other-branch' } post api("/projects/#{project2.id}/ref/master/trigger/pipeline?token=#{trigger_token}"), params: { ref: 'refs/heads/other-branch' }
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
it 'creates builds from the ref given in the URL, not in the body' do it 'creates builds from the ref given in the URL, not in the body' do
...@@ -101,7 +101,7 @@ describe API::Triggers do ...@@ -101,7 +101,7 @@ describe API::Triggers do
post api("/projects/#{project.id}/ref/master/trigger/pipeline?token=#{trigger_token}"), params: { ref: 'refs/heads/other-branch' } post api("/projects/#{project.id}/ref/master/trigger/pipeline?token=#{trigger_token}"), params: { ref: 'refs/heads/other-branch' }
end.to change(project.builds, :count).by(5) end.to change(project.builds, :count).by(5)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
end end
context 'when ref contains a dot' do context 'when ref contains a dot' do
...@@ -112,7 +112,7 @@ describe API::Triggers do ...@@ -112,7 +112,7 @@ describe API::Triggers do
post api("/projects/#{project.id}/ref/v.1-branch/trigger/pipeline?token=#{trigger_token}"), params: { ref: 'refs/heads/other-branch' } post api("/projects/#{project.id}/ref/v.1-branch/trigger/pipeline?token=#{trigger_token}"), params: { ref: 'refs/heads/other-branch' }
end.to change(project.builds, :count).by(4) end.to change(project.builds, :count).by(4)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
end end
end end
end end
...@@ -123,7 +123,7 @@ describe API::Triggers do ...@@ -123,7 +123,7 @@ describe API::Triggers do
it 'returns a list of triggers with tokens exposed correctly' do it 'returns a list of triggers with tokens exposed correctly' do
get api("/projects/#{project.id}/triggers", user) get api("/projects/#{project.id}/triggers", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_a(Array) expect(json_response).to be_a(Array)
...@@ -137,7 +137,7 @@ describe API::Triggers do ...@@ -137,7 +137,7 @@ describe API::Triggers do
it 'does not return triggers list' do it 'does not return triggers list' do
get api("/projects/#{project.id}/triggers", user2) get api("/projects/#{project.id}/triggers", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -145,7 +145,7 @@ describe API::Triggers do ...@@ -145,7 +145,7 @@ describe API::Triggers do
it 'does not return triggers list' do it 'does not return triggers list' do
get api("/projects/#{project.id}/triggers") get api("/projects/#{project.id}/triggers")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -155,14 +155,14 @@ describe API::Triggers do ...@@ -155,14 +155,14 @@ describe API::Triggers do
it 'returns trigger details' do it 'returns trigger details' do
get api("/projects/#{project.id}/triggers/#{trigger.id}", user) get api("/projects/#{project.id}/triggers/#{trigger.id}", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response).to be_a(Hash) expect(json_response).to be_a(Hash)
end end
it 'responds with 404 Not Found if requesting non-existing trigger' do it 'responds with 404 Not Found if requesting non-existing trigger' do
get api("/projects/#{project.id}/triggers/-5", user) get api("/projects/#{project.id}/triggers/-5", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -170,7 +170,7 @@ describe API::Triggers do ...@@ -170,7 +170,7 @@ describe API::Triggers do
it 'does not return triggers list' do it 'does not return triggers list' do
get api("/projects/#{project.id}/triggers/#{trigger.id}", user2) get api("/projects/#{project.id}/triggers/#{trigger.id}", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -178,7 +178,7 @@ describe API::Triggers do ...@@ -178,7 +178,7 @@ describe API::Triggers do
it 'does not return triggers list' do it 'does not return triggers list' do
get api("/projects/#{project.id}/triggers/#{trigger.id}") get api("/projects/#{project.id}/triggers/#{trigger.id}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -192,7 +192,7 @@ describe API::Triggers do ...@@ -192,7 +192,7 @@ describe API::Triggers do
params: { description: 'trigger' } params: { description: 'trigger' }
end.to change {project.triggers.count}.by(1) end.to change {project.triggers.count}.by(1)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response).to include('description' => 'trigger') expect(json_response).to include('description' => 'trigger')
end end
end end
...@@ -211,7 +211,7 @@ describe API::Triggers do ...@@ -211,7 +211,7 @@ describe API::Triggers do
post api("/projects/#{project.id}/triggers", user2), post api("/projects/#{project.id}/triggers", user2),
params: { description: 'trigger' } params: { description: 'trigger' }
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -220,7 +220,7 @@ describe API::Triggers do ...@@ -220,7 +220,7 @@ describe API::Triggers do
post api("/projects/#{project.id}/triggers"), post api("/projects/#{project.id}/triggers"),
params: { description: 'trigger' } params: { description: 'trigger' }
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -233,7 +233,7 @@ describe API::Triggers do ...@@ -233,7 +233,7 @@ describe API::Triggers do
put api("/projects/#{project.id}/triggers/#{trigger.id}", user), put api("/projects/#{project.id}/triggers/#{trigger.id}", user),
params: { description: new_description } params: { description: new_description }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response).to include('description' => new_description) expect(json_response).to include('description' => new_description)
expect(trigger.reload.description).to eq(new_description) expect(trigger.reload.description).to eq(new_description)
end end
...@@ -243,7 +243,7 @@ describe API::Triggers do ...@@ -243,7 +243,7 @@ describe API::Triggers do
it 'does not update trigger' do it 'does not update trigger' do
put api("/projects/#{project.id}/triggers/#{trigger.id}", user2) put api("/projects/#{project.id}/triggers/#{trigger.id}", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -251,7 +251,7 @@ describe API::Triggers do ...@@ -251,7 +251,7 @@ describe API::Triggers do
it 'does not update trigger' do it 'does not update trigger' do
put api("/projects/#{project.id}/triggers/#{trigger.id}") put api("/projects/#{project.id}/triggers/#{trigger.id}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -262,14 +262,14 @@ describe API::Triggers do ...@@ -262,14 +262,14 @@ describe API::Triggers do
expect do expect do
delete api("/projects/#{project.id}/triggers/#{trigger.id}", user) delete api("/projects/#{project.id}/triggers/#{trigger.id}", user)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end.to change {project.triggers.count}.by(-1) end.to change {project.triggers.count}.by(-1)
end end
it 'responds with 404 Not Found if requesting non-existing trigger' do it 'responds with 404 Not Found if requesting non-existing trigger' do
delete api("/projects/#{project.id}/triggers/-5", user) delete api("/projects/#{project.id}/triggers/-5", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
it_behaves_like '412 response' do it_behaves_like '412 response' do
...@@ -281,7 +281,7 @@ describe API::Triggers do ...@@ -281,7 +281,7 @@ describe API::Triggers do
it 'does not delete trigger' do it 'does not delete trigger' do
delete api("/projects/#{project.id}/triggers/#{trigger.id}", user2) delete api("/projects/#{project.id}/triggers/#{trigger.id}", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -289,7 +289,7 @@ describe API::Triggers do ...@@ -289,7 +289,7 @@ describe API::Triggers do
it 'does not delete trigger' do it 'does not delete trigger' do
delete api("/projects/#{project.id}/triggers/#{trigger.id}") delete api("/projects/#{project.id}/triggers/#{trigger.id}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
......
...@@ -41,7 +41,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -41,7 +41,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns authorization error when the `username` parameter is not passed" do it "returns authorization error when the `username` parameter is not passed" do
get api("/users") get api("/users")
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
it "returns the user when a valid `username` parameter is passed" do it "returns the user when a valid `username` parameter is passed" do
...@@ -65,7 +65,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -65,7 +65,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns an empty response when an invalid `username` parameter is passed" do it "returns an empty response when an invalid `username` parameter is passed" do
get api("/users"), params: { username: 'invalid' } get api("/users"), params: { username: 'invalid' }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to eq(0) expect(json_response.size).to eq(0)
end end
...@@ -93,13 +93,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -93,13 +93,13 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns authorization error when the `username` parameter refers to an inaccessible user" do it "returns authorization error when the `username` parameter refers to an inaccessible user" do
get api("/users"), params: { username: user.username } get api("/users"), params: { username: user.username }
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
it "returns authorization error when the `username` parameter is not passed" do it "returns authorization error when the `username` parameter is not passed" do
get api("/users") get api("/users")
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
end end
...@@ -169,7 +169,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -169,7 +169,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns a 403 when non-admin user searches by external UID" do it "returns a 403 when non-admin user searches by external UID" do
get api("/users?extern_uid=#{omniauth_user.identities.first.extern_uid}&provider=#{omniauth_user.identities.first.provider}", user) get api("/users?extern_uid=#{omniauth_user.identities.first.extern_uid}&provider=#{omniauth_user.identities.first.provider}", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
it 'does not reveal the `is_admin` flag of the user' do it 'does not reveal the `is_admin` flag of the user' do
...@@ -218,13 +218,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -218,13 +218,13 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns 400 error if provider with no extern_uid" do it "returns 400 error if provider with no extern_uid" do
get api("/users?extern_uid=#{omniauth_user.identities.first.extern_uid}", admin) get api("/users?extern_uid=#{omniauth_user.identities.first.extern_uid}", admin)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it "returns 400 error if provider with no extern_uid" do it "returns 400 error if provider with no extern_uid" do
get api("/users?provider=#{omniauth_user.identities.first.provider}", admin) get api("/users?provider=#{omniauth_user.identities.first.provider}", admin)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it "returns a user created before a specific date" do it "returns a user created before a specific date" do
...@@ -283,7 +283,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -283,7 +283,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 400 when provided incorrect sort params' do it 'returns 400 when provided incorrect sort params' do
get api('/users', admin), params: { order_by: 'magic', sort: 'asc' } get api('/users', admin), params: { order_by: 'magic', sort: 'asc' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
end end
...@@ -293,7 +293,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -293,7 +293,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/users", user), params: { skip_ldap: "true" } get api("/users", user), params: { skip_ldap: "true" }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first["username"]).to eq user.username expect(json_response.first["username"]).to eq user.username
end end
...@@ -403,7 +403,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -403,7 +403,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/users/#{user.id}") get api("/users/#{user.id}")
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
it "returns the `created_at` field for public users" do it "returns the `created_at` field for public users" do
...@@ -424,14 +424,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -424,14 +424,14 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns a 404 error if user id not found" do it "returns a 404 error if user id not found" do
get api("/users/0", user) get api("/users/0", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it "returns a 404 for invalid ID" do it "returns a 404 for invalid ID" do
get api("/users/1ASDF", user) get api("/users/1ASDF", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -468,7 +468,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -468,7 +468,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "creates user with correct attributes" do it "creates user with correct attributes" do
post api('/users', admin), params: attributes_for(:user, admin: true, can_create_group: true) post api('/users', admin), params: attributes_for(:user, admin: true, can_create_group: true)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
user_id = json_response['id'] user_id = json_response['id']
new_user = User.find(user_id) new_user = User.find(user_id)
expect(new_user.admin).to eq(true) expect(new_user.admin).to eq(true)
...@@ -481,12 +481,12 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -481,12 +481,12 @@ describe API::Users, :do_not_mock_admin_mode do
post api('/users', admin), params: attributes post api('/users', admin), params: attributes
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
end end
it "creates non-admin user" do it "creates non-admin user" do
post api('/users', admin), params: attributes_for(:user, admin: false, can_create_group: false) post api('/users', admin), params: attributes_for(:user, admin: false, can_create_group: false)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
user_id = json_response['id'] user_id = json_response['id']
new_user = User.find(user_id) new_user = User.find(user_id)
expect(new_user.admin).to eq(false) expect(new_user.admin).to eq(false)
...@@ -495,7 +495,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -495,7 +495,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "creates non-admin users by default" do it "creates non-admin users by default" do
post api('/users', admin), params: attributes_for(:user) post api('/users', admin), params: attributes_for(:user)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
user_id = json_response['id'] user_id = json_response['id']
new_user = User.find(user_id) new_user = User.find(user_id)
expect(new_user.admin).to eq(false) expect(new_user.admin).to eq(false)
...@@ -504,12 +504,12 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -504,12 +504,12 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns 201 Created on success" do it "returns 201 Created on success" do
post api("/users", admin), params: attributes_for(:user, projects_limit: 3) post api("/users", admin), params: attributes_for(:user, projects_limit: 3)
expect(response).to match_response_schema('public_api/v4/user/admin') expect(response).to match_response_schema('public_api/v4/user/admin')
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
end end
it 'creates non-external users by default' do it 'creates non-external users by default' do
post api("/users", admin), params: attributes_for(:user) post api("/users", admin), params: attributes_for(:user)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
user_id = json_response['id'] user_id = json_response['id']
new_user = User.find(user_id) new_user = User.find(user_id)
...@@ -518,7 +518,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -518,7 +518,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'allows an external user to be created' do it 'allows an external user to be created' do
post api("/users", admin), params: attributes_for(:user, external: true) post api("/users", admin), params: attributes_for(:user, external: true)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
user_id = json_response['id'] user_id = json_response['id']
new_user = User.find(user_id) new_user = User.find(user_id)
...@@ -528,7 +528,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -528,7 +528,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "creates user with reset password" do it "creates user with reset password" do
post api('/users', admin), params: attributes_for(:user, reset_password: true).except(:password) post api('/users', admin), params: attributes_for(:user, reset_password: true).except(:password)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
user_id = json_response['id'] user_id = json_response['id']
new_user = User.find(user_id) new_user = User.find(user_id)
...@@ -540,7 +540,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -540,7 +540,7 @@ describe API::Users, :do_not_mock_admin_mode do
params = attributes_for(:user, force_random_password: true, reset_password: true) params = attributes_for(:user, force_random_password: true, reset_password: true)
post api('/users', admin), params: params post api('/users', admin), params: params
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
user_id = json_response['id'] user_id = json_response['id']
new_user = User.find(user_id) new_user = User.find(user_id)
...@@ -552,7 +552,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -552,7 +552,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "creates user with private profile" do it "creates user with private profile" do
post api('/users', admin), params: attributes_for(:user, private_profile: true) post api('/users', admin), params: attributes_for(:user, private_profile: true)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
user_id = json_response['id'] user_id = json_response['id']
new_user = User.find(user_id) new_user = User.find(user_id)
...@@ -568,27 +568,27 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -568,27 +568,27 @@ describe API::Users, :do_not_mock_admin_mode do
password: 'password', password: 'password',
name: 'test' name: 'test'
} }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it 'returns 400 error if name not given' do it 'returns 400 error if name not given' do
post api('/users', admin), params: attributes_for(:user).except(:name) post api('/users', admin), params: attributes_for(:user).except(:name)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it 'returns 400 error if password not given' do it 'returns 400 error if password not given' do
post api('/users', admin), params: attributes_for(:user).except(:password) post api('/users', admin), params: attributes_for(:user).except(:password)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it 'returns 400 error if email not given' do it 'returns 400 error if email not given' do
post api('/users', admin), params: attributes_for(:user).except(:email) post api('/users', admin), params: attributes_for(:user).except(:email)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it 'returns 400 error if username not given' do it 'returns 400 error if username not given' do
post api('/users', admin), params: attributes_for(:user).except(:username) post api('/users', admin), params: attributes_for(:user).except(:username)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it "doesn't create user with invalid optional attributes" do it "doesn't create user with invalid optional attributes" do
...@@ -597,7 +597,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -597,7 +597,7 @@ describe API::Users, :do_not_mock_admin_mode do
post api('/users', admin), params: attributes post api('/users', admin), params: attributes
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it 'returns 400 error if user does not validate' do it 'returns 400 error if user does not validate' do
...@@ -610,7 +610,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -610,7 +610,7 @@ describe API::Users, :do_not_mock_admin_mode do
bio: 'g' * 256, bio: 'g' * 256,
projects_limit: -1 projects_limit: -1
} }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']['password']) expect(json_response['message']['password'])
.to eq(['is too short (minimum is 8 characters)']) .to eq(['is too short (minimum is 8 characters)'])
expect(json_response['message']['bio']) expect(json_response['message']['bio'])
...@@ -623,7 +623,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -623,7 +623,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "is not available for non admin users" do it "is not available for non admin users" do
post api("/users", user), params: attributes_for(:user) post api("/users", user), params: attributes_for(:user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
context 'with existing user' do context 'with existing user' do
...@@ -647,7 +647,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -647,7 +647,7 @@ describe API::Users, :do_not_mock_admin_mode do
username: 'foo' username: 'foo'
} }
end.to change { User.count }.by(0) end.to change { User.count }.by(0)
expect(response).to have_gitlab_http_status(409) expect(response).to have_gitlab_http_status(:conflict)
expect(json_response['message']).to eq('Email has already been taken') expect(json_response['message']).to eq('Email has already been taken')
end end
...@@ -661,7 +661,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -661,7 +661,7 @@ describe API::Users, :do_not_mock_admin_mode do
username: 'test' username: 'test'
} }
end.to change { User.count }.by(0) end.to change { User.count }.by(0)
expect(response).to have_gitlab_http_status(409) expect(response).to have_gitlab_http_status(:conflict)
expect(json_response['message']).to eq('Username has already been taken') expect(json_response['message']).to eq('Username has already been taken')
end end
...@@ -675,14 +675,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -675,14 +675,14 @@ describe API::Users, :do_not_mock_admin_mode do
username: 'TEST' username: 'TEST'
} }
end.to change { User.count }.by(0) end.to change { User.count }.by(0)
expect(response).to have_gitlab_http_status(409) expect(response).to have_gitlab_http_status(:conflict)
expect(json_response['message']).to eq('Username has already been taken') expect(json_response['message']).to eq('Username has already been taken')
end end
it 'creates user with new identity' do it 'creates user with new identity' do
post api("/users", admin), params: attributes_for(:user, provider: 'github', extern_uid: '67890') post api("/users", admin), params: attributes_for(:user, provider: 'github', extern_uid: '67890')
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response['identities'].first['extern_uid']).to eq('67890') expect(json_response['identities'].first['extern_uid']).to eq('67890')
expect(json_response['identities'].first['provider']).to eq('github') expect(json_response['identities'].first['provider']).to eq('github')
end end
...@@ -704,13 +704,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -704,13 +704,13 @@ describe API::Users, :do_not_mock_admin_mode do
put api("/users/#{user.id}", admin), params: { bio: 'new test bio' } put api("/users/#{user.id}", admin), params: { bio: 'new test bio' }
expect(response).to match_response_schema('public_api/v4/user/admin') expect(response).to match_response_schema('public_api/v4/user/admin')
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
end end
it "updates user with new bio" do it "updates user with new bio" do
put api("/users/#{user.id}", admin), params: { bio: 'new test bio' } put api("/users/#{user.id}", admin), params: { bio: 'new test bio' }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['bio']).to eq('new test bio') expect(json_response['bio']).to eq('new test bio')
expect(user.reload.bio).to eq('new test bio') expect(user.reload.bio).to eq('new test bio')
end end
...@@ -718,14 +718,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -718,14 +718,14 @@ describe API::Users, :do_not_mock_admin_mode do
it "updates user with new password and forces reset on next login" do it "updates user with new password and forces reset on next login" do
put api("/users/#{user.id}", admin), params: { password: '12345678' } put api("/users/#{user.id}", admin), params: { password: '12345678' }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user.reload.password_expires_at).to be <= Time.now expect(user.reload.password_expires_at).to be <= Time.now
end end
it "updates user with organization" do it "updates user with organization" do
put api("/users/#{user.id}", admin), params: { organization: 'GitLab' } put api("/users/#{user.id}", admin), params: { organization: 'GitLab' }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['organization']).to eq('GitLab') expect(json_response['organization']).to eq('GitLab')
expect(user.reload.organization).to eq('GitLab') expect(user.reload.organization).to eq('GitLab')
end end
...@@ -736,7 +736,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -736,7 +736,7 @@ describe API::Users, :do_not_mock_admin_mode do
user.reload user.reload
expect(user.avatar).to be_present expect(user.avatar).to be_present
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['avatar_url']).to include(user.avatar_path) expect(json_response['avatar_url']).to include(user.avatar_path)
end end
...@@ -747,7 +747,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -747,7 +747,7 @@ describe API::Users, :do_not_mock_admin_mode do
user.reload user.reload
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user).to be_confirmed expect(user).to be_confirmed
expect(user.email).to eq(old_email) expect(user.email).to eq(old_email)
expect(user.notification_email).to eq(old_notification_email) expect(user.notification_email).to eq(old_notification_email)
...@@ -759,7 +759,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -759,7 +759,7 @@ describe API::Users, :do_not_mock_admin_mode do
user.reload user.reload
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user).to be_confirmed expect(user).to be_confirmed
expect(user.email).to eq('new@email.com') expect(user.email).to eq('new@email.com')
end end
...@@ -767,7 +767,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -767,7 +767,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'updates user with their own username' do it 'updates user with their own username' do
put api("/users/#{user.id}", admin), params: { username: user.username } put api("/users/#{user.id}", admin), params: { username: user.username }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['username']).to eq(user.username) expect(json_response['username']).to eq(user.username)
expect(user.reload.username).to eq(user.username) expect(user.reload.username).to eq(user.username)
end end
...@@ -775,14 +775,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -775,14 +775,14 @@ describe API::Users, :do_not_mock_admin_mode do
it "updates user's existing identity" do it "updates user's existing identity" do
put api("/users/#{omniauth_user.id}", admin), params: { provider: 'ldapmain', extern_uid: '654321' } put api("/users/#{omniauth_user.id}", admin), params: { provider: 'ldapmain', extern_uid: '654321' }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(omniauth_user.reload.identities.first.extern_uid).to eq('654321') expect(omniauth_user.reload.identities.first.extern_uid).to eq('654321')
end end
it 'updates user with new identity' do it 'updates user with new identity' do
put api("/users/#{user.id}", admin), params: { provider: 'github', extern_uid: 'john' } put api("/users/#{user.id}", admin), params: { provider: 'github', extern_uid: 'john' }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user.reload.identities.first.extern_uid).to eq('john') expect(user.reload.identities.first.extern_uid).to eq('john')
expect(user.reload.identities.first.provider).to eq('github') expect(user.reload.identities.first.provider).to eq('github')
end end
...@@ -790,7 +790,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -790,7 +790,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "updates admin status" do it "updates admin status" do
put api("/users/#{user.id}", admin), params: { admin: true } put api("/users/#{user.id}", admin), params: { admin: true }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user.reload.admin).to eq(true) expect(user.reload.admin).to eq(true)
end end
...@@ -811,7 +811,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -811,7 +811,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "updates private profile" do it "updates private profile" do
put api("/users/#{user.id}", admin), params: { private_profile: true } put api("/users/#{user.id}", admin), params: { private_profile: true }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user.reload.private_profile).to eq(true) expect(user.reload.private_profile).to eq(true)
end end
...@@ -820,7 +820,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -820,7 +820,7 @@ describe API::Users, :do_not_mock_admin_mode do
put api("/users/#{user.id}", admin), params: { private_profile: nil } put api("/users/#{user.id}", admin), params: { private_profile: nil }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user.reload.private_profile).to eq(false) expect(user.reload.private_profile).to eq(false)
end end
...@@ -829,14 +829,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -829,14 +829,14 @@ describe API::Users, :do_not_mock_admin_mode do
put api("/users/#{user.id}", admin), params: {} put api("/users/#{user.id}", admin), params: {}
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user.reload.private_profile).to eq(true) expect(user.reload.private_profile).to eq(true)
end end
it "does not update admin status" do it "does not update admin status" do
put api("/users/#{admin_user.id}", admin), params: { can_create_group: false } put api("/users/#{admin_user.id}", admin), params: { can_create_group: false }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(admin_user.reload.admin).to eq(true) expect(admin_user.reload.admin).to eq(true)
expect(admin_user.can_create_group).to eq(false) expect(admin_user.can_create_group).to eq(false)
end end
...@@ -844,35 +844,35 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -844,35 +844,35 @@ describe API::Users, :do_not_mock_admin_mode do
it "does not allow invalid update" do it "does not allow invalid update" do
put api("/users/#{user.id}", admin), params: { email: 'invalid email' } put api("/users/#{user.id}", admin), params: { email: 'invalid email' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(user.reload.email).not_to eq('invalid email') expect(user.reload.email).not_to eq('invalid email')
end end
it "updates theme id" do it "updates theme id" do
put api("/users/#{user.id}", admin), params: { theme_id: 5 } put api("/users/#{user.id}", admin), params: { theme_id: 5 }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user.reload.theme_id).to eq(5) expect(user.reload.theme_id).to eq(5)
end end
it "does not update invalid theme id" do it "does not update invalid theme id" do
put api("/users/#{user.id}", admin), params: { theme_id: 50 } put api("/users/#{user.id}", admin), params: { theme_id: 50 }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(user.reload.theme_id).not_to eq(50) expect(user.reload.theme_id).not_to eq(50)
end end
it "updates color scheme id" do it "updates color scheme id" do
put api("/users/#{user.id}", admin), params: { color_scheme_id: 5 } put api("/users/#{user.id}", admin), params: { color_scheme_id: 5 }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(user.reload.color_scheme_id).to eq(5) expect(user.reload.color_scheme_id).to eq(5)
end end
it "does not update invalid color scheme id" do it "does not update invalid color scheme id" do
put api("/users/#{user.id}", admin), params: { color_scheme_id: 50 } put api("/users/#{user.id}", admin), params: { color_scheme_id: 50 }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(user.reload.color_scheme_id).not_to eq(50) expect(user.reload.color_scheme_id).not_to eq(50)
end end
...@@ -882,21 +882,21 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -882,21 +882,21 @@ describe API::Users, :do_not_mock_admin_mode do
put api("/users/#{user.id}", user), params: attributes_for(:user) put api("/users/#{user.id}", user), params: attributes_for(:user)
end.not_to change { user.reload.attributes } end.not_to change { user.reload.attributes }
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
it "returns 404 for non-existing user" do it "returns 404 for non-existing user" do
put api("/users/0", admin), params: { bio: 'update should fail' } put api("/users/0", admin), params: { bio: 'update should fail' }
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it "returns a 404 if invalid ID" do it "returns a 404 if invalid ID" do
put api("/users/ASDF", admin) put api("/users/ASDF", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
it 'returns 400 error if user does not validate' do it 'returns 400 error if user does not validate' do
...@@ -909,7 +909,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -909,7 +909,7 @@ describe API::Users, :do_not_mock_admin_mode do
bio: 'g' * 256, bio: 'g' * 256,
projects_limit: -1 projects_limit: -1
} }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']['password']) expect(json_response['message']['password'])
.to eq(['is too short (minimum is 8 characters)']) .to eq(['is too short (minimum is 8 characters)'])
expect(json_response['message']['bio']) expect(json_response['message']['bio'])
...@@ -923,13 +923,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -923,13 +923,13 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 400 if provider is missing for identity update' do it 'returns 400 if provider is missing for identity update' do
put api("/users/#{omniauth_user.id}", admin), params: { extern_uid: '654321' } put api("/users/#{omniauth_user.id}", admin), params: { extern_uid: '654321' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it 'returns 400 if external UID is missing for identity update' do it 'returns 400 if external UID is missing for identity update' do
put api("/users/#{omniauth_user.id}", admin), params: { provider: 'ldap' } put api("/users/#{omniauth_user.id}", admin), params: { provider: 'ldap' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
context "with existing user" do context "with existing user" do
...@@ -942,7 +942,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -942,7 +942,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 409 conflict error if email address exists' do it 'returns 409 conflict error if email address exists' do
put api("/users/#{@user.id}", admin), params: { email: 'test@example.com' } put api("/users/#{@user.id}", admin), params: { email: 'test@example.com' }
expect(response).to have_gitlab_http_status(409) expect(response).to have_gitlab_http_status(:conflict)
expect(@user.reload.email).to eq(@user.email) expect(@user.reload.email).to eq(@user.email)
end end
...@@ -950,7 +950,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -950,7 +950,7 @@ describe API::Users, :do_not_mock_admin_mode do
@user_id = User.all.last.id @user_id = User.all.last.id
put api("/users/#{@user.id}", admin), params: { username: 'test' } put api("/users/#{@user.id}", admin), params: { username: 'test' }
expect(response).to have_gitlab_http_status(409) expect(response).to have_gitlab_http_status(:conflict)
expect(@user.reload.username).to eq(@user.username) expect(@user.reload.username).to eq(@user.username)
end end
...@@ -958,7 +958,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -958,7 +958,7 @@ describe API::Users, :do_not_mock_admin_mode do
@user_id = User.all.last.id @user_id = User.all.last.id
put api("/users/#{@user.id}", admin), params: { username: 'TEST' } put api("/users/#{@user.id}", admin), params: { username: 'TEST' }
expect(response).to have_gitlab_http_status(409) expect(response).to have_gitlab_http_status(:conflict)
expect(@user.reload.username).to eq(@user.username) expect(@user.reload.username).to eq(@user.username)
end end
end end
...@@ -1011,14 +1011,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1011,14 +1011,14 @@ describe API::Users, :do_not_mock_admin_mode do
it "does not create invalid ssh key" do it "does not create invalid ssh key" do
post api("/users/#{user.id}/keys", admin), params: { title: "invalid key" } post api("/users/#{user.id}/keys", admin), params: { title: "invalid key" }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('key is missing') expect(json_response['error']).to eq('key is missing')
end end
it 'does not create key without title' do it 'does not create key without title' do
post api("/users/#{user.id}/keys", admin), params: { key: 'some key' } post api("/users/#{user.id}/keys", admin), params: { key: 'some key' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('title is missing') expect(json_response['error']).to eq('title is missing')
end end
...@@ -1031,7 +1031,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1031,7 +1031,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns 400 for invalid ID" do it "returns 400 for invalid ID" do
post api("/users/0/keys", admin) post api("/users/0/keys", admin)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
end end
...@@ -1041,7 +1041,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1041,7 +1041,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/users/#{user_id}/keys") get api("/users/#{user_id}/keys")
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
...@@ -1051,7 +1051,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1051,7 +1051,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/users/#{user.id}/keys") get api("/users/#{user.id}/keys")
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first['title']).to eq(key.title) expect(json_response.first['title']).to eq(key.title)
...@@ -1062,7 +1062,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1062,7 +1062,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 404 for non-existing user' do it 'returns 404 for non-existing user' do
get api("/users/#{not_existing_user_id}/keys") get api("/users/#{not_existing_user_id}/keys")
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
...@@ -1072,7 +1072,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1072,7 +1072,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/users/#{user.username}/keys") get api("/users/#{user.username}/keys")
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first['title']).to eq(key.title) expect(json_response.first['title']).to eq(key.title)
...@@ -1087,7 +1087,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1087,7 +1087,7 @@ describe API::Users, :do_not_mock_admin_mode do
context 'when unauthenticated' do context 'when unauthenticated' do
it 'returns authentication error' do it 'returns authentication error' do
delete api("/users/#{user.id}/keys/42") delete api("/users/#{user.id}/keys/42")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -1099,7 +1099,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1099,7 +1099,7 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
delete api("/users/#{user.id}/keys/#{key.id}", admin) delete api("/users/#{user.id}/keys/#{key.id}", admin)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end.to change { user.keys.count }.by(-1) end.to change { user.keys.count }.by(-1)
end end
...@@ -1111,13 +1111,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1111,13 +1111,13 @@ describe API::Users, :do_not_mock_admin_mode do
user.keys << key user.keys << key
user.save user.save
delete api("/users/0/keys/#{key.id}", admin) delete api("/users/0/keys/#{key.id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it 'returns 404 error if key not foud' do it 'returns 404 error if key not foud' do
delete api("/users/#{user.id}/keys/42", admin) delete api("/users/#{user.id}/keys/42", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Key Not Found') expect(json_response['message']).to eq('404 Key Not Found')
end end
end end
...@@ -1131,7 +1131,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1131,7 +1131,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'does not create invalid GPG key' do it 'does not create invalid GPG key' do
post api("/users/#{user.id}/gpg_keys", admin) post api("/users/#{user.id}/gpg_keys", admin)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('key is missing') expect(json_response['error']).to eq('key is missing')
end end
...@@ -1140,14 +1140,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1140,14 +1140,14 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
post api("/users/#{user.id}/gpg_keys", admin), params: key_attrs post api("/users/#{user.id}/gpg_keys", admin), params: key_attrs
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
end.to change { user.gpg_keys.count }.by(1) end.to change { user.gpg_keys.count }.by(1)
end end
it 'returns 400 for invalid ID' do it 'returns 400 for invalid ID' do
post api('/users/0/gpg_keys', admin) post api('/users/0/gpg_keys', admin)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
end end
...@@ -1160,7 +1160,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1160,7 +1160,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns authentication error' do it 'returns authentication error' do
get api("/users/#{user.id}/gpg_keys") get api("/users/#{user.id}/gpg_keys")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -1168,14 +1168,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1168,14 +1168,14 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 404 for non-existing user' do it 'returns 404 for non-existing user' do
get api('/users/0/gpg_keys', admin) get api('/users/0/gpg_keys', admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it 'returns 404 error if key not foud' do it 'returns 404 error if key not foud' do
delete api("/users/#{user.id}/gpg_keys/42", admin) delete api("/users/#{user.id}/gpg_keys/42", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 GPG Key Not Found') expect(json_response['message']).to eq('404 GPG Key Not Found')
end end
...@@ -1185,7 +1185,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1185,7 +1185,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/users/#{user.id}/gpg_keys", admin) get api("/users/#{user.id}/gpg_keys", admin)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first['key']).to eq(gpg_key.key) expect(json_response.first['key']).to eq(gpg_key.key)
...@@ -1202,7 +1202,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1202,7 +1202,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns authentication error' do it 'returns authentication error' do
delete api("/users/#{user.id}/keys/42") delete api("/users/#{user.id}/keys/42")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -1214,7 +1214,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1214,7 +1214,7 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
delete api("/users/#{user.id}/gpg_keys/#{gpg_key.id}", admin) delete api("/users/#{user.id}/gpg_keys/#{gpg_key.id}", admin)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end.to change { user.gpg_keys.count }.by(-1) end.to change { user.gpg_keys.count }.by(-1)
end end
...@@ -1224,14 +1224,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1224,14 +1224,14 @@ describe API::Users, :do_not_mock_admin_mode do
delete api("/users/0/gpg_keys/#{gpg_key.id}", admin) delete api("/users/0/gpg_keys/#{gpg_key.id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it 'returns 404 error if key not foud' do it 'returns 404 error if key not foud' do
delete api("/users/#{user.id}/gpg_keys/42", admin) delete api("/users/#{user.id}/gpg_keys/42", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 GPG Key Not Found') expect(json_response['message']).to eq('404 GPG Key Not Found')
end end
end end
...@@ -1246,7 +1246,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1246,7 +1246,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns authentication error' do it 'returns authentication error' do
post api("/users/#{user.id}/gpg_keys/42/revoke") post api("/users/#{user.id}/gpg_keys/42/revoke")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -1268,14 +1268,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1268,14 +1268,14 @@ describe API::Users, :do_not_mock_admin_mode do
post api("/users/0/gpg_keys/#{gpg_key.id}/revoke", admin) post api("/users/0/gpg_keys/#{gpg_key.id}/revoke", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it 'returns 404 error if key not foud' do it 'returns 404 error if key not foud' do
post api("/users/#{user.id}/gpg_keys/42/revoke", admin) post api("/users/#{user.id}/gpg_keys/42/revoke", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 GPG Key Not Found') expect(json_response['message']).to eq('404 GPG Key Not Found')
end end
end end
...@@ -1289,7 +1289,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1289,7 +1289,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "does not create invalid email" do it "does not create invalid email" do
post api("/users/#{user.id}/emails", admin), params: {} post api("/users/#{user.id}/emails", admin), params: {}
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('email is missing') expect(json_response['error']).to eq('email is missing')
end end
...@@ -1306,7 +1306,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1306,7 +1306,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns a 400 for invalid ID" do it "returns a 400 for invalid ID" do
post api("/users/0/emails", admin) post api("/users/0/emails", admin)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it "creates verified email" do it "creates verified email" do
...@@ -1315,7 +1315,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1315,7 +1315,7 @@ describe API::Users, :do_not_mock_admin_mode do
post api("/users/#{user.id}/emails", admin), params: email_attrs post api("/users/#{user.id}/emails", admin), params: email_attrs
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
email = Email.find_by(user_id: user.id, email: email_attrs[:email]) email = Email.find_by(user_id: user.id, email: email_attrs[:email])
expect(email).to be_confirmed expect(email).to be_confirmed
...@@ -1330,14 +1330,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1330,14 +1330,14 @@ describe API::Users, :do_not_mock_admin_mode do
context 'when unauthenticated' do context 'when unauthenticated' do
it 'returns authentication error' do it 'returns authentication error' do
get api("/users/#{user.id}/emails") get api("/users/#{user.id}/emails")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
context 'when authenticated' do context 'when authenticated' do
it 'returns 404 for non-existing user' do it 'returns 404 for non-existing user' do
get api('/users/0/emails', admin) get api('/users/0/emails', admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
...@@ -1347,7 +1347,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1347,7 +1347,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/users/#{user.id}/emails", admin) get api("/users/#{user.id}/emails", admin)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first['email']).to eq(email.email) expect(json_response.first['email']).to eq(email.email)
...@@ -1356,7 +1356,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1356,7 +1356,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns a 404 for invalid ID" do it "returns a 404 for invalid ID" do
get api("/users/ASDF/emails", admin) get api("/users/ASDF/emails", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
end end
...@@ -1369,7 +1369,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1369,7 +1369,7 @@ describe API::Users, :do_not_mock_admin_mode do
context 'when unauthenticated' do context 'when unauthenticated' do
it 'returns authentication error' do it 'returns authentication error' do
delete api("/users/#{user.id}/emails/42") delete api("/users/#{user.id}/emails/42")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -1381,7 +1381,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1381,7 +1381,7 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
delete api("/users/#{user.id}/emails/#{email.id}", admin) delete api("/users/#{user.id}/emails/#{email.id}", admin)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end.to change { user.emails.count }.by(-1) end.to change { user.emails.count }.by(-1)
end end
...@@ -1393,20 +1393,20 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1393,20 +1393,20 @@ describe API::Users, :do_not_mock_admin_mode do
user.emails << email user.emails << email
user.save user.save
delete api("/users/0/emails/#{email.id}", admin) delete api("/users/0/emails/#{email.id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it 'returns 404 error if email not foud' do it 'returns 404 error if email not foud' do
delete api("/users/#{user.id}/emails/42", admin) delete api("/users/#{user.id}/emails/42", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Email Not Found') expect(json_response['message']).to eq('404 Email Not Found')
end end
it "returns a 404 for invalid ID" do it "returns a 404 for invalid ID" do
delete api("/users/ASDF/emails/bar", admin) delete api("/users/ASDF/emails/bar", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
end end
...@@ -1422,7 +1422,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1422,7 +1422,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "deletes user", :sidekiq_might_not_need_inline do it "deletes user", :sidekiq_might_not_need_inline do
perform_enqueued_jobs { delete api("/users/#{user.id}", admin) } perform_enqueued_jobs { delete api("/users/#{user.id}", admin) }
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
expect { User.find(user.id) }.to raise_error ActiveRecord::RecordNotFound expect { User.find(user.id) }.to raise_error ActiveRecord::RecordNotFound
expect { Namespace.find(namespace.id) }.to raise_error ActiveRecord::RecordNotFound expect { Namespace.find(namespace.id) }.to raise_error ActiveRecord::RecordNotFound
end end
...@@ -1433,14 +1433,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1433,14 +1433,14 @@ describe API::Users, :do_not_mock_admin_mode do
context "hard delete disabled" do context "hard delete disabled" do
it "does not delete user" do it "does not delete user" do
perform_enqueued_jobs { delete api("/users/#{user.id}", admin)} perform_enqueued_jobs { delete api("/users/#{user.id}", admin)}
expect(response).to have_gitlab_http_status(409) expect(response).to have_gitlab_http_status(:conflict)
end end
end end
context "hard delete enabled" do context "hard delete enabled" do
it "delete user and group", :sidekiq_might_not_need_inline do it "delete user and group", :sidekiq_might_not_need_inline do
perform_enqueued_jobs { delete api("/users/#{user.id}?hard_delete=true", admin)} perform_enqueued_jobs { delete api("/users/#{user.id}?hard_delete=true", admin)}
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
expect(Group.exists?(group.id)).to be_falsy expect(Group.exists?(group.id)).to be_falsy
end end
end end
...@@ -1452,31 +1452,31 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1452,31 +1452,31 @@ describe API::Users, :do_not_mock_admin_mode do
it "does not delete for unauthenticated user" do it "does not delete for unauthenticated user" do
perform_enqueued_jobs { delete api("/users/#{user.id}") } perform_enqueued_jobs { delete api("/users/#{user.id}") }
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
it "is not available for non admin users" do it "is not available for non admin users" do
perform_enqueued_jobs { delete api("/users/#{user.id}", user) } perform_enqueued_jobs { delete api("/users/#{user.id}", user) }
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
it "returns 404 for non-existing user" do it "returns 404 for non-existing user" do
perform_enqueued_jobs { delete api("/users/0", admin) } perform_enqueued_jobs { delete api("/users/0", admin) }
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it "returns a 404 for invalid ID" do it "returns a 404 for invalid ID" do
perform_enqueued_jobs { delete api("/users/ASDF", admin) } perform_enqueued_jobs { delete api("/users/ASDF", admin) }
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
context "hard delete disabled" do context "hard delete disabled" do
it "moves contributions to the ghost user", :sidekiq_might_not_need_inline do it "moves contributions to the ghost user", :sidekiq_might_not_need_inline do
perform_enqueued_jobs { delete api("/users/#{user.id}", admin) } perform_enqueued_jobs { delete api("/users/#{user.id}", admin) }
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
expect(issue.reload).to be_persisted expect(issue.reload).to be_persisted
expect(issue.author.ghost?).to be_truthy expect(issue.author.ghost?).to be_truthy
end end
...@@ -1486,7 +1486,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1486,7 +1486,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "removes contributions", :sidekiq_might_not_need_inline do it "removes contributions", :sidekiq_might_not_need_inline do
perform_enqueued_jobs { delete api("/users/#{user.id}?hard_delete=true", admin) } perform_enqueued_jobs { delete api("/users/#{user.id}?hard_delete=true", admin) }
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
expect(Issue.exists?(issue.id)).to be_falsy expect(Issue.exists?(issue.id)).to be_falsy
end end
end end
...@@ -1501,14 +1501,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1501,14 +1501,14 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 403 without private token when sudo is defined' do it 'returns 403 without private token when sudo is defined' do
get api("/user?private_token=#{personal_access_token}&sudo=123", version: version) get api("/user?private_token=#{personal_access_token}&sudo=123", version: version)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
it 'returns current user without private token when sudo not defined' do it 'returns current user without private token when sudo not defined' do
get api("/user", user, version: version) get api("/user", user, version: version)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('public_api/v4/user/public') expect(response).to match_response_schema('public_api/v4/user/public')
expect(json_response['id']).to eq(user.id) expect(json_response['id']).to eq(user.id)
end end
...@@ -1528,13 +1528,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1528,13 +1528,13 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 403 without private token when sudo defined' do it 'returns 403 without private token when sudo defined' do
get api("/user?private_token=#{admin_personal_access_token}&sudo=#{user.id}", version: version) get api("/user?private_token=#{admin_personal_access_token}&sudo=#{user.id}", version: version)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
it 'returns initial current user without private token but with is_admin when sudo not defined' do it 'returns initial current user without private token but with is_admin when sudo not defined' do
get api("/user?private_token=#{admin_personal_access_token}", version: version) get api("/user?private_token=#{admin_personal_access_token}", version: version)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('public_api/v4/user/admin') expect(response).to match_response_schema('public_api/v4/user/admin')
expect(json_response['id']).to eq(admin.id) expect(json_response['id']).to eq(admin.id)
end end
...@@ -1545,7 +1545,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1545,7 +1545,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns 401 error if user is unauthenticated" do it "returns 401 error if user is unauthenticated" do
get api("/user", version: version) get api("/user", version: version)
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -1558,7 +1558,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1558,7 +1558,7 @@ describe API::Users, :do_not_mock_admin_mode do
context "when unauthenticated" do context "when unauthenticated" do
it "returns authentication error" do it "returns authentication error" do
get api("/user/keys") get api("/user/keys")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -1569,7 +1569,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1569,7 +1569,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/user/keys", user) get api("/user/keys", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first["title"]).to eq(key.title) expect(json_response.first["title"]).to eq(key.title)
...@@ -1589,14 +1589,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1589,14 +1589,14 @@ describe API::Users, :do_not_mock_admin_mode do
user.keys << key user.keys << key
user.save user.save
get api("/user/keys/#{key.id}", user) get api("/user/keys/#{key.id}", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response["title"]).to eq(key.title) expect(json_response["title"]).to eq(key.title)
end end
it "returns 404 Not Found within invalid ID" do it "returns 404 Not Found within invalid ID" do
get api("/user/keys/42", user) get api("/user/keys/42", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Key Not Found') expect(json_response['message']).to eq('404 Key Not Found')
end end
...@@ -1605,14 +1605,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1605,14 +1605,14 @@ describe API::Users, :do_not_mock_admin_mode do
user.save user.save
admin admin
get api("/user/keys/#{key.id}", admin) get api("/user/keys/#{key.id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Key Not Found') expect(json_response['message']).to eq('404 Key Not Found')
end end
it "returns 404 for invalid ID" do it "returns 404 for invalid ID" do
get api("/users/keys/ASDF", admin) get api("/users/keys/ASDF", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
context "scopes" do context "scopes" do
...@@ -1629,31 +1629,31 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1629,31 +1629,31 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
post api("/user/keys", user), params: key_attrs post api("/user/keys", user), params: key_attrs
end.to change { user.keys.count }.by(1) end.to change { user.keys.count }.by(1)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
end end
it "returns a 401 error if unauthorized" do it "returns a 401 error if unauthorized" do
post api("/user/keys"), params: { title: 'some title', key: 'some key' } post api("/user/keys"), params: { title: 'some title', key: 'some key' }
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
it "does not create ssh key without key" do it "does not create ssh key without key" do
post api("/user/keys", user), params: { title: 'title' } post api("/user/keys", user), params: { title: 'title' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('key is missing') expect(json_response['error']).to eq('key is missing')
end end
it 'does not create ssh key without title' do it 'does not create ssh key without title' do
post api('/user/keys', user), params: { key: 'some key' } post api('/user/keys', user), params: { key: 'some key' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('title is missing') expect(json_response['error']).to eq('title is missing')
end end
it "does not create ssh key without title" do it "does not create ssh key without title" do
post api("/user/keys", user), params: { key: "somekey" } post api("/user/keys", user), params: { key: "somekey" }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
end end
...@@ -1665,7 +1665,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1665,7 +1665,7 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
delete api("/user/keys/#{key.id}", user) delete api("/user/keys/#{key.id}", user)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end.to change { user.keys.count}.by(-1) end.to change { user.keys.count}.by(-1)
end end
...@@ -1676,7 +1676,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1676,7 +1676,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns 404 if key ID not found" do it "returns 404 if key ID not found" do
delete api("/user/keys/42", user) delete api("/user/keys/42", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Key Not Found') expect(json_response['message']).to eq('404 Key Not Found')
end end
...@@ -1684,13 +1684,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1684,13 +1684,13 @@ describe API::Users, :do_not_mock_admin_mode do
user.keys << key user.keys << key
user.save user.save
delete api("/user/keys/#{key.id}") delete api("/user/keys/#{key.id}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
it "returns a 404 for invalid ID" do it "returns a 404 for invalid ID" do
delete api("/users/keys/ASDF", admin) delete api("/users/keys/ASDF", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -1699,7 +1699,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1699,7 +1699,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns authentication error' do it 'returns authentication error' do
get api('/user/gpg_keys') get api('/user/gpg_keys')
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -1710,7 +1710,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1710,7 +1710,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api('/user/gpg_keys', user) get api('/user/gpg_keys', user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first['key']).to eq(gpg_key.key) expect(json_response.first['key']).to eq(gpg_key.key)
...@@ -1732,14 +1732,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1732,14 +1732,14 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/user/gpg_keys/#{gpg_key.id}", user) get api("/user/gpg_keys/#{gpg_key.id}", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['key']).to eq(gpg_key.key) expect(json_response['key']).to eq(gpg_key.key)
end end
it 'returns 404 Not Found within invalid ID' do it 'returns 404 Not Found within invalid ID' do
get api('/user/gpg_keys/42', user) get api('/user/gpg_keys/42', user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 GPG Key Not Found') expect(json_response['message']).to eq('404 GPG Key Not Found')
end end
...@@ -1749,14 +1749,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1749,14 +1749,14 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/user/gpg_keys/#{gpg_key.id}", admin) get api("/user/gpg_keys/#{gpg_key.id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 GPG Key Not Found') expect(json_response['message']).to eq('404 GPG Key Not Found')
end end
it 'returns 404 for invalid ID' do it 'returns 404 for invalid ID' do
get api('/users/gpg_keys/ASDF', admin) get api('/users/gpg_keys/ASDF', admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
context 'scopes' do context 'scopes' do
...@@ -1773,20 +1773,20 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1773,20 +1773,20 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
post api('/user/gpg_keys', user), params: key_attrs post api('/user/gpg_keys', user), params: key_attrs
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
end.to change { user.gpg_keys.count }.by(1) end.to change { user.gpg_keys.count }.by(1)
end end
it 'returns a 401 error if unauthorized' do it 'returns a 401 error if unauthorized' do
post api('/user/gpg_keys'), params: { key: 'some key' } post api('/user/gpg_keys'), params: { key: 'some key' }
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
it 'does not create GPG key without key' do it 'does not create GPG key without key' do
post api('/user/gpg_keys', user) post api('/user/gpg_keys', user)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('key is missing') expect(json_response['error']).to eq('key is missing')
end end
end end
...@@ -1806,7 +1806,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1806,7 +1806,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 404 if key ID not found' do it 'returns 404 if key ID not found' do
post api('/user/gpg_keys/42/revoke', user) post api('/user/gpg_keys/42/revoke', user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 GPG Key Not Found') expect(json_response['message']).to eq('404 GPG Key Not Found')
end end
...@@ -1816,13 +1816,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1816,13 +1816,13 @@ describe API::Users, :do_not_mock_admin_mode do
post api("/user/gpg_keys/#{gpg_key.id}/revoke") post api("/user/gpg_keys/#{gpg_key.id}/revoke")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
it 'returns a 404 for invalid ID' do it 'returns a 404 for invalid ID' do
post api('/users/gpg_keys/ASDF/revoke', admin) post api('/users/gpg_keys/ASDF/revoke', admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -1834,14 +1834,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1834,14 +1834,14 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
delete api("/user/gpg_keys/#{gpg_key.id}", user) delete api("/user/gpg_keys/#{gpg_key.id}", user)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end.to change { user.gpg_keys.count}.by(-1) end.to change { user.gpg_keys.count}.by(-1)
end end
it 'returns 404 if key ID not found' do it 'returns 404 if key ID not found' do
delete api('/user/gpg_keys/42', user) delete api('/user/gpg_keys/42', user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 GPG Key Not Found') expect(json_response['message']).to eq('404 GPG Key Not Found')
end end
...@@ -1851,13 +1851,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1851,13 +1851,13 @@ describe API::Users, :do_not_mock_admin_mode do
delete api("/user/gpg_keys/#{gpg_key.id}") delete api("/user/gpg_keys/#{gpg_key.id}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
it 'returns a 404 for invalid ID' do it 'returns a 404 for invalid ID' do
delete api('/users/gpg_keys/ASDF', admin) delete api('/users/gpg_keys/ASDF', admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -1865,7 +1865,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1865,7 +1865,7 @@ describe API::Users, :do_not_mock_admin_mode do
context "when unauthenticated" do context "when unauthenticated" do
it "returns authentication error" do it "returns authentication error" do
get api("/user/emails") get api("/user/emails")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -1876,7 +1876,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1876,7 +1876,7 @@ describe API::Users, :do_not_mock_admin_mode do
get api("/user/emails", user) get api("/user/emails", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.first["email"]).to eq(email.email) expect(json_response.first["email"]).to eq(email.email)
...@@ -1896,13 +1896,13 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1896,13 +1896,13 @@ describe API::Users, :do_not_mock_admin_mode do
user.emails << email user.emails << email
user.save user.save
get api("/user/emails/#{email.id}", user) get api("/user/emails/#{email.id}", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response["email"]).to eq(email.email) expect(json_response["email"]).to eq(email.email)
end end
it "returns 404 Not Found within invalid ID" do it "returns 404 Not Found within invalid ID" do
get api("/user/emails/42", user) get api("/user/emails/42", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Email Not Found') expect(json_response['message']).to eq('404 Email Not Found')
end end
...@@ -1911,14 +1911,14 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1911,14 +1911,14 @@ describe API::Users, :do_not_mock_admin_mode do
user.save user.save
admin admin
get api("/user/emails/#{email.id}", admin) get api("/user/emails/#{email.id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Email Not Found') expect(json_response['message']).to eq('404 Email Not Found')
end end
it "returns 404 for invalid ID" do it "returns 404 for invalid ID" do
get api("/users/emails/ASDF", admin) get api("/users/emails/ASDF", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
context "scopes" do context "scopes" do
...@@ -1935,18 +1935,18 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1935,18 +1935,18 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
post api("/user/emails", user), params: email_attrs post api("/user/emails", user), params: email_attrs
end.to change { user.emails.count }.by(1) end.to change { user.emails.count }.by(1)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
end end
it "returns a 401 error if unauthorized" do it "returns a 401 error if unauthorized" do
post api("/user/emails"), params: { email: 'some email' } post api("/user/emails"), params: { email: 'some email' }
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
it "does not create email with invalid email" do it "does not create email with invalid email" do
post api("/user/emails", user), params: {} post api("/user/emails", user), params: {}
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('email is missing') expect(json_response['error']).to eq('email is missing')
end end
end end
...@@ -1959,7 +1959,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1959,7 +1959,7 @@ describe API::Users, :do_not_mock_admin_mode do
expect do expect do
delete api("/user/emails/#{email.id}", user) delete api("/user/emails/#{email.id}", user)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end.to change { user.emails.count}.by(-1) end.to change { user.emails.count}.by(-1)
end end
...@@ -1970,7 +1970,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1970,7 +1970,7 @@ describe API::Users, :do_not_mock_admin_mode do
it "returns 404 if email ID not found" do it "returns 404 if email ID not found" do
delete api("/user/emails/42", user) delete api("/user/emails/42", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Email Not Found') expect(json_response['message']).to eq('404 Email Not Found')
end end
...@@ -1978,20 +1978,20 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -1978,20 +1978,20 @@ describe API::Users, :do_not_mock_admin_mode do
user.emails << email user.emails << email
user.save user.save
delete api("/user/emails/#{email.id}") delete api("/user/emails/#{email.id}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
it "returns 400 for invalid ID" do it "returns 400 for invalid ID" do
delete api("/user/emails/ASDF", admin) delete api("/user/emails/ASDF", admin)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
end end
context 'activate and deactivate' do context 'activate and deactivate' do
shared_examples '404' do shared_examples '404' do
it 'returns 404' do it 'returns 404' do
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
end end
...@@ -2001,7 +2001,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2001,7 +2001,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'is not authorized to perform the action' do it 'is not authorized to perform the action' do
post api("/users/#{user.id}/activate", user) post api("/users/#{user.id}/activate", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -2014,7 +2014,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2014,7 +2014,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'activates a deactivated user' do it 'activates a deactivated user' do
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(user.reload.state).to eq('active') expect(user.reload.state).to eq('active')
end end
end end
...@@ -2027,7 +2027,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2027,7 +2027,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'returns 201' do it 'returns 201' do
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(user.reload.state).to eq('active') expect(user.reload.state).to eq('active')
end end
end end
...@@ -2040,7 +2040,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2040,7 +2040,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'returns 403' do it 'returns 403' do
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq('403 Forbidden - A blocked user must be unblocked to be activated') expect(json_response['message']).to eq('403 Forbidden - A blocked user must be unblocked to be activated')
expect(user.reload.state).to eq('blocked') expect(user.reload.state).to eq('blocked')
end end
...@@ -2054,7 +2054,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2054,7 +2054,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'returns 403' do it 'returns 403' do
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq('403 Forbidden - A blocked user must be unblocked to be activated') expect(json_response['message']).to eq('403 Forbidden - A blocked user must be unblocked to be activated')
expect(user.reload.state).to eq('ldap_blocked') expect(user.reload.state).to eq('ldap_blocked')
end end
...@@ -2075,7 +2075,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2075,7 +2075,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'is not authorized to perform the action' do it 'is not authorized to perform the action' do
post api("/users/#{user.id}/deactivate", user) post api("/users/#{user.id}/deactivate", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -2092,7 +2092,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2092,7 +2092,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'deactivates an active user' do it 'deactivates an active user' do
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(user.reload.state).to eq('deactivated') expect(user.reload.state).to eq('deactivated')
end end
end end
...@@ -2105,7 +2105,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2105,7 +2105,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'does not deactivate an active user' do it 'does not deactivate an active user' do
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq("403 Forbidden - The user you are trying to deactivate has been active in the past #{::User::MINIMUM_INACTIVE_DAYS} days and cannot be deactivated") expect(json_response['message']).to eq("403 Forbidden - The user you are trying to deactivate has been active in the past #{::User::MINIMUM_INACTIVE_DAYS} days and cannot be deactivated")
expect(user.reload.state).to eq('active') expect(user.reload.state).to eq('active')
end end
...@@ -2120,7 +2120,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2120,7 +2120,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'returns 201' do it 'returns 201' do
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(user.reload.state).to eq('deactivated') expect(user.reload.state).to eq('deactivated')
end end
end end
...@@ -2133,7 +2133,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2133,7 +2133,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'returns 403' do it 'returns 403' do
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq('403 Forbidden - A blocked user cannot be deactivated by the API') expect(json_response['message']).to eq('403 Forbidden - A blocked user cannot be deactivated by the API')
expect(user.reload.state).to eq('blocked') expect(user.reload.state).to eq('blocked')
end end
...@@ -2147,7 +2147,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2147,7 +2147,7 @@ describe API::Users, :do_not_mock_admin_mode do
end end
it 'returns 403' do it 'returns 403' do
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq('403 Forbidden - A blocked user cannot be deactivated by the API') expect(json_response['message']).to eq('403 Forbidden - A blocked user cannot be deactivated by the API')
expect(user.reload.state).to eq('ldap_blocked') expect(user.reload.state).to eq('ldap_blocked')
end end
...@@ -2171,25 +2171,25 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2171,25 +2171,25 @@ describe API::Users, :do_not_mock_admin_mode do
it 'blocks existing user' do it 'blocks existing user' do
post api("/users/#{user.id}/block", admin) post api("/users/#{user.id}/block", admin)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(user.reload.state).to eq('blocked') expect(user.reload.state).to eq('blocked')
end end
it 'does not re-block ldap blocked users' do it 'does not re-block ldap blocked users' do
post api("/users/#{ldap_blocked_user.id}/block", admin) post api("/users/#{ldap_blocked_user.id}/block", admin)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(ldap_blocked_user.reload.state).to eq('ldap_blocked') expect(ldap_blocked_user.reload.state).to eq('ldap_blocked')
end end
it 'does not be available for non admin users' do it 'does not be available for non admin users' do
post api("/users/#{user.id}/block", user) post api("/users/#{user.id}/block", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(user.reload.state).to eq('active') expect(user.reload.state).to eq('active')
end end
it 'returns a 404 error if user id not found' do it 'returns a 404 error if user id not found' do
post api('/users/0/block', admin) post api('/users/0/block', admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
end end
...@@ -2204,44 +2204,44 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2204,44 +2204,44 @@ describe API::Users, :do_not_mock_admin_mode do
it 'unblocks existing user' do it 'unblocks existing user' do
post api("/users/#{user.id}/unblock", admin) post api("/users/#{user.id}/unblock", admin)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(user.reload.state).to eq('active') expect(user.reload.state).to eq('active')
end end
it 'unblocks a blocked user' do it 'unblocks a blocked user' do
post api("/users/#{blocked_user.id}/unblock", admin) post api("/users/#{blocked_user.id}/unblock", admin)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(blocked_user.reload.state).to eq('active') expect(blocked_user.reload.state).to eq('active')
end end
it 'does not unblock ldap blocked users' do it 'does not unblock ldap blocked users' do
post api("/users/#{ldap_blocked_user.id}/unblock", admin) post api("/users/#{ldap_blocked_user.id}/unblock", admin)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(ldap_blocked_user.reload.state).to eq('ldap_blocked') expect(ldap_blocked_user.reload.state).to eq('ldap_blocked')
end end
it 'does not unblock deactivated users' do it 'does not unblock deactivated users' do
post api("/users/#{deactivated_user.id}/unblock", admin) post api("/users/#{deactivated_user.id}/unblock", admin)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(deactivated_user.reload.state).to eq('deactivated') expect(deactivated_user.reload.state).to eq('deactivated')
end end
it 'is not available for non admin users' do it 'is not available for non admin users' do
post api("/users/#{user.id}/unblock", user) post api("/users/#{user.id}/unblock", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(user.reload.state).to eq('active') expect(user.reload.state).to eq('active')
end end
it 'returns a 404 error if user id not found' do it 'returns a 404 error if user id not found' do
post api('/users/0/block', admin) post api('/users/0/block', admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it "returns a 404 for invalid ID" do it "returns a 404 for invalid ID" do
post api("/users/ASDF/block", admin) post api("/users/ASDF/block", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -2330,7 +2330,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2330,7 +2330,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'has no permission' do it 'has no permission' do
get api("/user/activities", user) get api("/user/activities", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -2382,7 +2382,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2382,7 +2382,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'renders errors when the status was invalid' do it 'renders errors when the status was invalid' do
put api('/user/status', user), params: { emoji: 'does not exist', message: 'hello world' } put api('/user/status', user), params: { emoji: 'does not exist', message: 'hello world' }
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['message']['emoji']).to be_present expect(json_response['message']['emoji']).to be_present
end end
...@@ -2404,21 +2404,21 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2404,21 +2404,21 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns a 404 error if user not found' do it 'returns a 404 error if user not found' do
get api("/users/#{not_existing_user_id}/impersonation_tokens", admin) get api("/users/#{not_existing_user_id}/impersonation_tokens", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it 'returns a 403 error when authenticated as normal user' do it 'returns a 403 error when authenticated as normal user' do
get api("/users/#{not_existing_user_id}/impersonation_tokens", user) get api("/users/#{not_existing_user_id}/impersonation_tokens", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq('403 Forbidden') expect(json_response['message']).to eq('403 Forbidden')
end end
it 'returns an array of all impersonated tokens' do it 'returns an array of all impersonated tokens' do
get api("/users/#{user.id}/impersonation_tokens", admin) get api("/users/#{user.id}/impersonation_tokens", admin)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to eq(2) expect(json_response.size).to eq(2)
...@@ -2427,7 +2427,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2427,7 +2427,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns an array of active impersonation tokens if state active' do it 'returns an array of active impersonation tokens if state active' do
get api("/users/#{user.id}/impersonation_tokens?state=active", admin) get api("/users/#{user.id}/impersonation_tokens?state=active", admin)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
...@@ -2437,7 +2437,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2437,7 +2437,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns an array of inactive personal access tokens if active is set to false' do it 'returns an array of inactive personal access tokens if active is set to false' do
get api("/users/#{user.id}/impersonation_tokens?state=inactive", admin) get api("/users/#{user.id}/impersonation_tokens?state=inactive", admin)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
expect(json_response).to all(include('active' => false)) expect(json_response).to all(include('active' => false))
...@@ -2453,7 +2453,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2453,7 +2453,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns validation error if impersonation token misses some attributes' do it 'returns validation error if impersonation token misses some attributes' do
post api("/users/#{user.id}/impersonation_tokens", admin) post api("/users/#{user.id}/impersonation_tokens", admin)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq('name is missing') expect(json_response['error']).to eq('name is missing')
end end
...@@ -2464,7 +2464,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2464,7 +2464,7 @@ describe API::Users, :do_not_mock_admin_mode do
expires_at: expires_at expires_at: expires_at
} }
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
...@@ -2475,7 +2475,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2475,7 +2475,7 @@ describe API::Users, :do_not_mock_admin_mode do
expires_at: expires_at expires_at: expires_at
} }
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq('403 Forbidden') expect(json_response['message']).to eq('403 Forbidden')
end end
...@@ -2488,7 +2488,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2488,7 +2488,7 @@ describe API::Users, :do_not_mock_admin_mode do
impersonation: impersonation impersonation: impersonation
} }
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response['name']).to eq(name) expect(json_response['name']).to eq(name)
expect(json_response['scopes']).to eq(scopes) expect(json_response['scopes']).to eq(scopes)
expect(json_response['expires_at']).to eq(expires_at) expect(json_response['expires_at']).to eq(expires_at)
...@@ -2508,35 +2508,35 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2508,35 +2508,35 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns 404 error if user not found' do it 'returns 404 error if user not found' do
get api("/users/#{not_existing_user_id}/impersonation_tokens/1", admin) get api("/users/#{not_existing_user_id}/impersonation_tokens/1", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it 'returns a 404 error if impersonation token not found' do it 'returns a 404 error if impersonation token not found' do
get api("/users/#{user.id}/impersonation_tokens/#{not_existing_pat_id}", admin) get api("/users/#{user.id}/impersonation_tokens/#{not_existing_pat_id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Impersonation Token Not Found') expect(json_response['message']).to eq('404 Impersonation Token Not Found')
end end
it 'returns a 404 error if token is not impersonation token' do it 'returns a 404 error if token is not impersonation token' do
get api("/users/#{user.id}/impersonation_tokens/#{personal_access_token.id}", admin) get api("/users/#{user.id}/impersonation_tokens/#{personal_access_token.id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Impersonation Token Not Found') expect(json_response['message']).to eq('404 Impersonation Token Not Found')
end end
it 'returns a 403 error when authenticated as normal user' do it 'returns a 403 error when authenticated as normal user' do
get api("/users/#{user.id}/impersonation_tokens/#{impersonation_token.id}", user) get api("/users/#{user.id}/impersonation_tokens/#{impersonation_token.id}", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq('403 Forbidden') expect(json_response['message']).to eq('403 Forbidden')
end end
it 'returns an impersonation token' do it 'returns an impersonation token' do
get api("/users/#{user.id}/impersonation_tokens/#{impersonation_token.id}", admin) get api("/users/#{user.id}/impersonation_tokens/#{impersonation_token.id}", admin)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['token']).not_to be_present expect(json_response['token']).not_to be_present
expect(json_response['impersonation']).to be_truthy expect(json_response['impersonation']).to be_truthy
end end
...@@ -2549,28 +2549,28 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2549,28 +2549,28 @@ describe API::Users, :do_not_mock_admin_mode do
it 'returns a 404 error if user not found' do it 'returns a 404 error if user not found' do
delete api("/users/#{not_existing_user_id}/impersonation_tokens/1", admin) delete api("/users/#{not_existing_user_id}/impersonation_tokens/1", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 User Not Found') expect(json_response['message']).to eq('404 User Not Found')
end end
it 'returns a 404 error if impersonation token not found' do it 'returns a 404 error if impersonation token not found' do
delete api("/users/#{user.id}/impersonation_tokens/#{not_existing_pat_id}", admin) delete api("/users/#{user.id}/impersonation_tokens/#{not_existing_pat_id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Impersonation Token Not Found') expect(json_response['message']).to eq('404 Impersonation Token Not Found')
end end
it 'returns a 404 error if token is not impersonation token' do it 'returns a 404 error if token is not impersonation token' do
delete api("/users/#{user.id}/impersonation_tokens/#{personal_access_token.id}", admin) delete api("/users/#{user.id}/impersonation_tokens/#{personal_access_token.id}", admin)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response['message']).to eq('404 Impersonation Token Not Found') expect(json_response['message']).to eq('404 Impersonation Token Not Found')
end end
it 'returns a 403 error when authenticated as normal user' do it 'returns a 403 error when authenticated as normal user' do
delete api("/users/#{user.id}/impersonation_tokens/#{impersonation_token.id}", user) delete api("/users/#{user.id}/impersonation_tokens/#{impersonation_token.id}", user)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response['message']).to eq('403 Forbidden') expect(json_response['message']).to eq('403 Forbidden')
end end
...@@ -2581,7 +2581,7 @@ describe API::Users, :do_not_mock_admin_mode do ...@@ -2581,7 +2581,7 @@ describe API::Users, :do_not_mock_admin_mode do
it 'revokes a impersonation token' do it 'revokes a impersonation token' do
delete api("/users/#{user.id}/impersonation_tokens/#{impersonation_token.id}", admin) delete api("/users/#{user.id}/impersonation_tokens/#{impersonation_token.id}", admin)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
expect(impersonation_token.revoked).to be_falsey expect(impersonation_token.revoked).to be_falsey
expect(impersonation_token.reload.revoked).to be_truthy expect(impersonation_token.reload.revoked).to be_truthy
end end
......
...@@ -15,7 +15,7 @@ describe API::Variables do ...@@ -15,7 +15,7 @@ describe API::Variables do
it 'returns project variables' do it 'returns project variables' do
get api("/projects/#{project.id}/variables", user) get api("/projects/#{project.id}/variables", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response).to be_a(Array) expect(json_response).to be_a(Array)
end end
end end
...@@ -24,7 +24,7 @@ describe API::Variables do ...@@ -24,7 +24,7 @@ describe API::Variables do
it 'does not return project variables' do it 'does not return project variables' do
get api("/projects/#{project.id}/variables", user2) get api("/projects/#{project.id}/variables", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -32,7 +32,7 @@ describe API::Variables do ...@@ -32,7 +32,7 @@ describe API::Variables do
it 'does not return project variables' do it 'does not return project variables' do
get api("/projects/#{project.id}/variables") get api("/projects/#{project.id}/variables")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -42,7 +42,7 @@ describe API::Variables do ...@@ -42,7 +42,7 @@ describe API::Variables do
it 'returns project variable details' do it 'returns project variable details' do
get api("/projects/#{project.id}/variables/#{variable.key}", user) get api("/projects/#{project.id}/variables/#{variable.key}", user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['value']).to eq(variable.value) expect(json_response['value']).to eq(variable.value)
expect(json_response['protected']).to eq(variable.protected?) expect(json_response['protected']).to eq(variable.protected?)
expect(json_response['masked']).to eq(variable.masked?) expect(json_response['masked']).to eq(variable.masked?)
...@@ -52,7 +52,7 @@ describe API::Variables do ...@@ -52,7 +52,7 @@ describe API::Variables do
it 'responds with 404 Not Found if requesting non-existing variable' do it 'responds with 404 Not Found if requesting non-existing variable' do
get api("/projects/#{project.id}/variables/non_existing_variable", user) get api("/projects/#{project.id}/variables/non_existing_variable", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -60,7 +60,7 @@ describe API::Variables do ...@@ -60,7 +60,7 @@ describe API::Variables do
it 'does not return project variable details' do it 'does not return project variable details' do
get api("/projects/#{project.id}/variables/#{variable.key}", user2) get api("/projects/#{project.id}/variables/#{variable.key}", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -68,7 +68,7 @@ describe API::Variables do ...@@ -68,7 +68,7 @@ describe API::Variables do
it 'does not return project variable details' do it 'does not return project variable details' do
get api("/projects/#{project.id}/variables/#{variable.key}") get api("/projects/#{project.id}/variables/#{variable.key}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -80,7 +80,7 @@ describe API::Variables do ...@@ -80,7 +80,7 @@ describe API::Variables do
post api("/projects/#{project.id}/variables", user), params: { key: 'TEST_VARIABLE_2', value: 'PROTECTED_VALUE_2', protected: true, masked: true } post api("/projects/#{project.id}/variables", user), params: { key: 'TEST_VARIABLE_2', value: 'PROTECTED_VALUE_2', protected: true, masked: true }
end.to change {project.variables.count}.by(1) end.to change {project.variables.count}.by(1)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response['key']).to eq('TEST_VARIABLE_2') expect(json_response['key']).to eq('TEST_VARIABLE_2')
expect(json_response['value']).to eq('PROTECTED_VALUE_2') expect(json_response['value']).to eq('PROTECTED_VALUE_2')
expect(json_response['protected']).to be_truthy expect(json_response['protected']).to be_truthy
...@@ -93,7 +93,7 @@ describe API::Variables do ...@@ -93,7 +93,7 @@ describe API::Variables do
post api("/projects/#{project.id}/variables", user), params: { variable_type: 'file', key: 'TEST_VARIABLE_2', value: 'VALUE_2' } post api("/projects/#{project.id}/variables", user), params: { variable_type: 'file', key: 'TEST_VARIABLE_2', value: 'VALUE_2' }
end.to change {project.variables.count}.by(1) end.to change {project.variables.count}.by(1)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response['key']).to eq('TEST_VARIABLE_2') expect(json_response['key']).to eq('TEST_VARIABLE_2')
expect(json_response['value']).to eq('VALUE_2') expect(json_response['value']).to eq('VALUE_2')
expect(json_response['protected']).to be_falsey expect(json_response['protected']).to be_falsey
...@@ -106,7 +106,7 @@ describe API::Variables do ...@@ -106,7 +106,7 @@ describe API::Variables do
post api("/projects/#{project.id}/variables", user), params: { key: variable.key, value: 'VALUE_2' } post api("/projects/#{project.id}/variables", user), params: { key: variable.key, value: 'VALUE_2' }
end.to change {project.variables.count}.by(0) end.to change {project.variables.count}.by(0)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
end end
it 'creates variable with a specific environment scope' do it 'creates variable with a specific environment scope' do
...@@ -114,7 +114,7 @@ describe API::Variables do ...@@ -114,7 +114,7 @@ describe API::Variables do
post api("/projects/#{project.id}/variables", user), params: { key: 'TEST_VARIABLE_2', value: 'VALUE_2', environment_scope: 'review/*' } post api("/projects/#{project.id}/variables", user), params: { key: 'TEST_VARIABLE_2', value: 'VALUE_2', environment_scope: 'review/*' }
end.to change { project.variables.reload.count }.by(1) end.to change { project.variables.reload.count }.by(1)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response['key']).to eq('TEST_VARIABLE_2') expect(json_response['key']).to eq('TEST_VARIABLE_2')
expect(json_response['value']).to eq('VALUE_2') expect(json_response['value']).to eq('VALUE_2')
expect(json_response['environment_scope']).to eq('review/*') expect(json_response['environment_scope']).to eq('review/*')
...@@ -127,7 +127,7 @@ describe API::Variables do ...@@ -127,7 +127,7 @@ describe API::Variables do
post api("/projects/#{project.id}/variables", user), params: { key: variable.key, value: 'VALUE_2', environment_scope: 'review/*' } post api("/projects/#{project.id}/variables", user), params: { key: variable.key, value: 'VALUE_2', environment_scope: 'review/*' }
end.to change { project.variables.reload.count }.by(1) end.to change { project.variables.reload.count }.by(1)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response['key']).to eq(variable.key) expect(json_response['key']).to eq(variable.key)
expect(json_response['value']).to eq('VALUE_2') expect(json_response['value']).to eq('VALUE_2')
expect(json_response['environment_scope']).to eq('review/*') expect(json_response['environment_scope']).to eq('review/*')
...@@ -138,7 +138,7 @@ describe API::Variables do ...@@ -138,7 +138,7 @@ describe API::Variables do
it 'does not create variable' do it 'does not create variable' do
post api("/projects/#{project.id}/variables", user2) post api("/projects/#{project.id}/variables", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -146,7 +146,7 @@ describe API::Variables do ...@@ -146,7 +146,7 @@ describe API::Variables do
it 'does not create variable' do it 'does not create variable' do
post api("/projects/#{project.id}/variables") post api("/projects/#{project.id}/variables")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -161,7 +161,7 @@ describe API::Variables do ...@@ -161,7 +161,7 @@ describe API::Variables do
updated_variable = project.variables.reload.first updated_variable = project.variables.reload.first
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(value_before).to eq(variable.value) expect(value_before).to eq(variable.value)
expect(updated_variable.value).to eq('VALUE_1_UP') expect(updated_variable.value).to eq('VALUE_1_UP')
expect(updated_variable).to be_protected expect(updated_variable).to be_protected
...@@ -171,7 +171,7 @@ describe API::Variables do ...@@ -171,7 +171,7 @@ describe API::Variables do
it 'responds with 404 Not Found if requesting non-existing variable' do it 'responds with 404 Not Found if requesting non-existing variable' do
put api("/projects/#{project.id}/variables/non_existing_variable", user) put api("/projects/#{project.id}/variables/non_existing_variable", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -179,7 +179,7 @@ describe API::Variables do ...@@ -179,7 +179,7 @@ describe API::Variables do
it 'does not update variable' do it 'does not update variable' do
put api("/projects/#{project.id}/variables/#{variable.key}", user2) put api("/projects/#{project.id}/variables/#{variable.key}", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -187,7 +187,7 @@ describe API::Variables do ...@@ -187,7 +187,7 @@ describe API::Variables do
it 'does not update variable' do it 'does not update variable' do
put api("/projects/#{project.id}/variables/#{variable.key}") put api("/projects/#{project.id}/variables/#{variable.key}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
...@@ -198,14 +198,14 @@ describe API::Variables do ...@@ -198,14 +198,14 @@ describe API::Variables do
expect do expect do
delete api("/projects/#{project.id}/variables/#{variable.key}", user) delete api("/projects/#{project.id}/variables/#{variable.key}", user)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end.to change {project.variables.count}.by(-1) end.to change {project.variables.count}.by(-1)
end end
it 'responds with 404 Not Found if requesting non-existing variable' do it 'responds with 404 Not Found if requesting non-existing variable' do
delete api("/projects/#{project.id}/variables/non_existing_variable", user) delete api("/projects/#{project.id}/variables/non_existing_variable", user)
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
end end
end end
...@@ -213,7 +213,7 @@ describe API::Variables do ...@@ -213,7 +213,7 @@ describe API::Variables do
it 'does not delete variable' do it 'does not delete variable' do
delete api("/projects/#{project.id}/variables/#{variable.key}", user2) delete api("/projects/#{project.id}/variables/#{variable.key}", user2)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
...@@ -221,7 +221,7 @@ describe API::Variables do ...@@ -221,7 +221,7 @@ describe API::Variables do
it 'does not delete variable' do it 'does not delete variable' do
delete api("/projects/#{project.id}/variables/#{variable.key}") delete api("/projects/#{project.id}/variables/#{variable.key}")
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
end end
......
...@@ -8,7 +8,7 @@ describe API::Version do ...@@ -8,7 +8,7 @@ describe API::Version do
it 'returns authentication error' do it 'returns authentication error' do
get api('/version') get api('/version')
expect(response).to have_gitlab_http_status(401) expect(response).to have_gitlab_http_status(:unauthorized)
end end
end end
...@@ -51,13 +51,13 @@ describe API::Version do ...@@ -51,13 +51,13 @@ describe API::Version do
it 'returns authorization error' do it 'returns authorization error' do
get api('/version', personal_access_token: personal_access_token) get api('/version', personal_access_token: personal_access_token)
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
end end
end end
end end
def expect_version def expect_version
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response['version']).to eq(Gitlab::VERSION) expect(json_response['version']).to eq(Gitlab::VERSION)
expect(json_response['revision']).to eq(Gitlab.revision) expect(json_response['revision']).to eq(Gitlab.revision)
end end
......
...@@ -32,7 +32,7 @@ describe API::Wikis do ...@@ -32,7 +32,7 @@ describe API::Wikis do
it 'returns the list of wiki pages without content' do it 'returns the list of wiki pages without content' do
get api(url, user) get api(url, user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(2) expect(json_response.size).to eq(2)
json_response.each_with_index do |page, index| json_response.each_with_index do |page, index|
...@@ -45,7 +45,7 @@ describe API::Wikis do ...@@ -45,7 +45,7 @@ describe API::Wikis do
it 'returns the list of wiki pages with content' do it 'returns the list of wiki pages with content' do
get api(url, user), params: { with_content: 1 } get api(url, user), params: { with_content: 1 }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(2) expect(json_response.size).to eq(2)
json_response.each_with_index do |page, index| json_response.each_with_index do |page, index|
...@@ -60,14 +60,14 @@ describe API::Wikis do ...@@ -60,14 +60,14 @@ describe API::Wikis do
it 'return the empty list of wiki pages' do it 'return the empty list of wiki pages' do
get api(url, user) get api(url, user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(0) expect(json_response.size).to eq(0)
end end
end end
shared_examples_for 'returns wiki page' do shared_examples_for 'returns wiki page' do
it 'returns the wiki page' do it 'returns the wiki page' do
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(4) expect(json_response.size).to eq(4)
expect(json_response.keys).to match_array(expected_keys_with_content) expect(json_response.keys).to match_array(expected_keys_with_content)
expect(json_response['content']).to eq(page.content) expect(json_response['content']).to eq(page.content)
...@@ -80,7 +80,7 @@ describe API::Wikis do ...@@ -80,7 +80,7 @@ describe API::Wikis do
it 'creates the wiki page' do it 'creates the wiki page' do
post(api(url, user), params: payload) post(api(url, user), params: payload)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response.size).to eq(4) expect(json_response.size).to eq(4)
expect(json_response.keys).to match_array(expected_keys_with_content) expect(json_response.keys).to match_array(expected_keys_with_content)
expect(json_response['content']).to eq(payload[:content]) expect(json_response['content']).to eq(payload[:content])
...@@ -95,7 +95,7 @@ describe API::Wikis do ...@@ -95,7 +95,7 @@ describe API::Wikis do
post(api(url, user), params: payload) post(api(url, user), params: payload)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
expect(json_response['error']).to eq("#{part} is missing") expect(json_response['error']).to eq("#{part} is missing")
end end
...@@ -106,7 +106,7 @@ describe API::Wikis do ...@@ -106,7 +106,7 @@ describe API::Wikis do
it 'updates the wiki page' do it 'updates the wiki page' do
put(api(url, user), params: payload) put(api(url, user), params: payload)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
expect(json_response.size).to eq(4) expect(json_response.size).to eq(4)
expect(json_response.keys).to match_array(expected_keys_with_content) expect(json_response.keys).to match_array(expected_keys_with_content)
expect(json_response['content']).to eq(payload[:content]) expect(json_response['content']).to eq(payload[:content])
...@@ -120,14 +120,14 @@ describe API::Wikis do ...@@ -120,14 +120,14 @@ describe API::Wikis do
put(api(url, user), params: payload) put(api(url, user), params: payload)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(:ok)
end end
end end
end end
shared_examples_for '403 Forbidden' do shared_examples_for '403 Forbidden' do
it 'returns 403 Forbidden' do it 'returns 403 Forbidden' do
expect(response).to have_gitlab_http_status(403) expect(response).to have_gitlab_http_status(:forbidden)
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
expect(json_response['message']).to eq('403 Forbidden') expect(json_response['message']).to eq('403 Forbidden')
end end
...@@ -135,7 +135,7 @@ describe API::Wikis do ...@@ -135,7 +135,7 @@ describe API::Wikis do
shared_examples_for '404 Wiki Page Not Found' do shared_examples_for '404 Wiki Page Not Found' do
it 'returns 404 Wiki Page Not Found' do it 'returns 404 Wiki Page Not Found' do
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
expect(json_response['message']).to eq('404 Wiki Page Not Found') expect(json_response['message']).to eq('404 Wiki Page Not Found')
end end
...@@ -143,7 +143,7 @@ describe API::Wikis do ...@@ -143,7 +143,7 @@ describe API::Wikis do
shared_examples_for '404 Project Not Found' do shared_examples_for '404 Project Not Found' do
it 'returns 404 Project Not Found' do it 'returns 404 Project Not Found' do
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(:not_found)
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
expect(json_response['message']).to eq('404 Project Not Found') expect(json_response['message']).to eq('404 Project Not Found')
end end
...@@ -151,7 +151,7 @@ describe API::Wikis do ...@@ -151,7 +151,7 @@ describe API::Wikis do
shared_examples_for '204 No Content' do shared_examples_for '204 No Content' do
it 'returns 204 No Content' do it 'returns 204 No Content' do
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(:no_content)
end end
end end
...@@ -161,7 +161,7 @@ describe API::Wikis do ...@@ -161,7 +161,7 @@ describe API::Wikis do
workhorse_post_with_file(api(url, user), file_key: :file, params: payload) workhorse_post_with_file(api(url, user), file_key: :file, params: payload)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response).to eq result_hash.deep_stringify_keys expect(json_response).to eq result_hash.deep_stringify_keys
end end
...@@ -170,7 +170,7 @@ describe API::Wikis do ...@@ -170,7 +170,7 @@ describe API::Wikis do
post(api(url, user), params: payload) post(api(url, user), params: payload)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
expect(json_response['error']).to eq('file is missing') expect(json_response['error']).to eq('file is missing')
end end
...@@ -180,7 +180,7 @@ describe API::Wikis do ...@@ -180,7 +180,7 @@ describe API::Wikis do
post(api(url, user), params: payload) post(api(url, user), params: payload)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response.size).to eq(1) expect(json_response.size).to eq(1)
expect(json_response['error']).to eq('file is invalid') expect(json_response['error']).to eq('file is invalid')
end end
...@@ -190,7 +190,7 @@ describe API::Wikis do ...@@ -190,7 +190,7 @@ describe API::Wikis do
post(api(url, user), params: payload) post(api(url, user), params: payload)
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(:created)
expect(json_response).to eq result_hash.deep_stringify_keys expect(json_response).to eq result_hash.deep_stringify_keys
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment