Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
b98fa9ef3d
commit
f7dae0cdcb
|
|
@ -349,8 +349,8 @@ RSpec/HaveGitlabHttpStatus:
|
|||
- 'ee/spec/requests/{groups,projects,repositories}/**/*'
|
||||
- 'spec/requests/api/*/**/*.rb'
|
||||
- 'ee/spec/requests/api/*/**/*.rb'
|
||||
- 'spec/requests/api/[a-f]*.rb'
|
||||
- 'ee/spec/requests/api/[a-f]*.rb'
|
||||
- 'spec/requests/api/[a-l]*.rb'
|
||||
- 'ee/spec/requests/api/[a-l]*.rb'
|
||||
|
||||
Style/MultilineWhenThen:
|
||||
Enabled: false
|
||||
|
|
|
|||
2
Gemfile
2
Gemfile
|
|
@ -159,7 +159,7 @@ gem 'escape_utils', '~> 1.1'
|
|||
gem 'icalendar'
|
||||
|
||||
# Diffs
|
||||
gem 'diffy', '~> 3.1.0'
|
||||
gem 'diffy', '~> 3.3'
|
||||
gem 'diff_match_patch', '~> 0.1.0'
|
||||
|
||||
# Application server
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ GEM
|
|||
rotp (~> 2.0)
|
||||
diff-lcs (1.3)
|
||||
diff_match_patch (0.1.0)
|
||||
diffy (3.1.0)
|
||||
diffy (3.3.0)
|
||||
discordrb-webhooks-blackst0ne (3.3.0)
|
||||
rest-client (~> 2.0)
|
||||
docile (1.3.1)
|
||||
|
|
@ -1195,7 +1195,7 @@ DEPENDENCIES
|
|||
devise (~> 4.6)
|
||||
devise-two-factor (~> 3.1.0)
|
||||
diff_match_patch (~> 0.1.0)
|
||||
diffy (~> 3.1.0)
|
||||
diffy (~> 3.3)
|
||||
discordrb-webhooks-blackst0ne (~> 3.3)
|
||||
doorkeeper (~> 5.0.2)
|
||||
doorkeeper-openid_connect (~> 1.6.3)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
import Vue from 'vue';
|
||||
import ConfirmModal from '~/vue_shared/components/confirm_modal.vue';
|
||||
|
||||
const mountConfirmModal = button => {
|
||||
const props = {
|
||||
path: button.dataset.path,
|
||||
method: button.dataset.method,
|
||||
modalAttributes: JSON.parse(button.dataset.modalAttributes),
|
||||
};
|
||||
|
||||
return new Vue({
|
||||
render(h) {
|
||||
return h(ConfirmModal, { props });
|
||||
},
|
||||
}).$mount();
|
||||
};
|
||||
|
||||
export default () => {
|
||||
document.getElementsByClassName('js-confirm-modal-button').forEach(button => {
|
||||
button.addEventListener('click', e => {
|
||||
e.preventDefault();
|
||||
|
||||
mountConfirmModal(button);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
|
@ -259,8 +259,15 @@ export default function dropzoneInput(form) {
|
|||
|
||||
const insertToTextArea = (filename, url) => {
|
||||
const $child = $(child);
|
||||
$child.val((index, val) => val.replace(`{{${filename}}}`, url));
|
||||
|
||||
const textarea = $child.get(0);
|
||||
const caretStart = textarea.selectionStart;
|
||||
const caretEnd = textarea.selectionEnd;
|
||||
const formattedText = `{{${filename}}}`;
|
||||
$child.val((index, val) => val.replace(formattedText, url));
|
||||
textarea.setSelectionRange(
|
||||
caretStart - formattedText.length + url.length,
|
||||
caretEnd - formattedText.length + url.length,
|
||||
);
|
||||
$child.trigger('change');
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -175,6 +175,7 @@ export const localTimeAgo = ($timeagoEls, setTimeago = true) => {
|
|||
function addTimeAgoTooltip() {
|
||||
$timeagoEls.each((i, el) => {
|
||||
// Recreate with custom template
|
||||
el.setAttribute('title', formatDate(el.dateTime));
|
||||
$(el).tooltip({
|
||||
template:
|
||||
'<div class="tooltip local-timeago" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',
|
||||
|
|
|
|||
|
|
@ -169,6 +169,10 @@ const bindEvents = () => {
|
|||
text: s__('ProjectTemplates|Go Micro'),
|
||||
icon: '.template-option .icon-gomicro',
|
||||
},
|
||||
gatsby: {
|
||||
text: s__('ProjectTemplates|Pages/Gatsby'),
|
||||
icon: '.template-option .icon-gatsby',
|
||||
},
|
||||
hugo: {
|
||||
text: s__('ProjectTemplates|Pages/Hugo'),
|
||||
icon: '.template-option .icon-hugo',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,63 @@
|
|||
<script>
|
||||
import { GlModal } from '@gitlab/ui';
|
||||
import csrf from '~/lib/utils/csrf';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlModal,
|
||||
},
|
||||
props: {
|
||||
modalAttributes: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
path: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
method: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isDismissed: false,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.openModal();
|
||||
},
|
||||
methods: {
|
||||
openModal() {
|
||||
this.$refs.modal.show();
|
||||
},
|
||||
submitModal() {
|
||||
this.$refs.form.requestSubmit();
|
||||
},
|
||||
dismiss() {
|
||||
this.isDismissed = true;
|
||||
},
|
||||
},
|
||||
csrf,
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<gl-modal
|
||||
v-if="!isDismissed"
|
||||
ref="modal"
|
||||
v-bind="modalAttributes"
|
||||
@primary="submitModal"
|
||||
@canceled="dismiss"
|
||||
>
|
||||
<form ref="form" :action="path" method="post">
|
||||
<!-- Rails workaround for <form method="delete" />
|
||||
https://github.com/rails/rails/blob/master/actionview/app/assets/javascripts/rails-ujs/features/method.coffee
|
||||
-->
|
||||
<input type="hidden" name="_method" :value="method" />
|
||||
<input type="hidden" name="authenticity_token" :value="$options.csrf.token" />
|
||||
<div>{{ modalAttributes.message }}</div>
|
||||
</form>
|
||||
</gl-modal>
|
||||
</template>
|
||||
|
|
@ -17,12 +17,6 @@
|
|||
.tree-controls {
|
||||
text-align: right;
|
||||
|
||||
> .btn,
|
||||
.project-action-button > .btn,
|
||||
.git-clone-holder > .btn {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.control {
|
||||
float: left;
|
||||
margin-left: 10px;
|
||||
|
|
|
|||
|
|
@ -45,6 +45,12 @@
|
|||
.border-bottom-color-default { border-bottom-color: $border-color; }
|
||||
.box-shadow-default { box-shadow: 0 2px 4px 0 $black-transparent; }
|
||||
|
||||
.gl-children-ml-sm-3 > * {
|
||||
@include media-breakpoint-up(sm) {
|
||||
@include gl-ml-3;
|
||||
}
|
||||
}
|
||||
|
||||
.mh-50vh { max-height: 50vh; }
|
||||
|
||||
.font-size-inherit { font-size: inherit; }
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
- else
|
||||
= link_to title, project_tree_path(@project, tree_join(@ref, path))
|
||||
|
||||
.tree-controls<
|
||||
.tree-controls.gl-children-ml-sm-3<
|
||||
= render 'projects/find_file_link'
|
||||
-# only show normal/blame view links for text files
|
||||
- if blob.readable_text?
|
||||
|
|
|
|||
|
|
@ -29,8 +29,7 @@
|
|||
":title" => "buttonText",
|
||||
":ref" => "'button'" }
|
||||
|
||||
= icon('spin spinner', 'v-if' => 'loading', class: 'loading', 'aria-hidden' => 'true', 'aria-label' => 'Loading')
|
||||
%div{ 'v-else' => '' }
|
||||
%div
|
||||
%template{ 'v-if' => 'isResolved' }
|
||||
= render 'shared/icons/icon_status_success_solid.svg'
|
||||
%template{ 'v-else' => '' }
|
||||
|
|
@ -40,7 +39,6 @@
|
|||
- if note.emoji_awardable?
|
||||
.note-actions-item
|
||||
= button_tag title: 'Add reaction', class: "note-action-button note-emoji-button js-add-award js-note-emoji has-tooltip btn btn-transparent", data: { position: 'right', container: 'body' } do
|
||||
= icon('spinner spin')
|
||||
%span{ class: 'link-highlight award-control-icon-neutral' }= sprite_icon('slight-smile')
|
||||
%span{ class: 'link-highlight award-control-icon-positive' }= sprite_icon('smiley')
|
||||
%span{ class: 'link-highlight award-control-icon-super-positive' }= sprite_icon('smile')
|
||||
|
|
|
|||
|
|
@ -75,34 +75,35 @@
|
|||
= link_to new_project_tag_path(@project) do
|
||||
#{ _('New tag') }
|
||||
|
||||
.tree-controls{ class: ("gl-font-size-0" if vue_file_list_enabled?) }<
|
||||
= render_if_exists 'projects/tree/lock_link'
|
||||
- if vue_file_list_enabled?
|
||||
#js-tree-history-link.d-inline-block{ data: { history_link: project_commits_path(@project, @ref) } }
|
||||
- else
|
||||
= link_to s_('Commits|History'), project_commits_path(@project, @id), class: 'btn'
|
||||
|
||||
= render 'projects/find_file_link'
|
||||
|
||||
- if can_collaborate || current_user&.already_forked?(@project)
|
||||
.tree-controls
|
||||
.d-block.d-sm-flex.flex-wrap.align-items-start.gl-children-ml-sm-3<
|
||||
= render_if_exists 'projects/tree/lock_link'
|
||||
- if vue_file_list_enabled?
|
||||
#js-tree-web-ide-link.d-inline-block
|
||||
#js-tree-history-link.d-inline-block{ data: { history_link: project_commits_path(@project, @ref) } }
|
||||
- else
|
||||
= link_to ide_edit_path(@project, @ref, @path), class: 'btn btn-default qa-web-ide-button' do
|
||||
= link_to s_('Commits|History'), project_commits_path(@project, @id), class: 'btn'
|
||||
|
||||
= render 'projects/find_file_link'
|
||||
|
||||
- if can_collaborate || current_user&.already_forked?(@project)
|
||||
- if vue_file_list_enabled?
|
||||
#js-tree-web-ide-link.d-inline-block
|
||||
- else
|
||||
= link_to ide_edit_path(@project, @ref, @path), class: 'btn btn-default qa-web-ide-button' do
|
||||
= _('Web IDE')
|
||||
- elsif can_create_mr_from_fork
|
||||
= link_to '#modal-confirm-fork', class: 'btn btn-default qa-web-ide-button', data: { target: '#modal-confirm-fork', toggle: 'modal'} do
|
||||
= _('Web IDE')
|
||||
- elsif can_create_mr_from_fork
|
||||
= link_to '#modal-confirm-fork', class: 'btn btn-default qa-web-ide-button', data: { target: '#modal-confirm-fork', toggle: 'modal'} do
|
||||
= _('Web IDE')
|
||||
= render 'shared/confirm_fork_modal', fork_path: ide_fork_and_edit_path(@project, @ref, @path)
|
||||
= render 'shared/confirm_fork_modal', fork_path: ide_fork_and_edit_path(@project, @ref, @path)
|
||||
|
||||
- if show_xcode_link?(@project)
|
||||
.project-action-button.project-xcode.inline<
|
||||
= render "projects/buttons/xcode_link"
|
||||
- if show_xcode_link?(@project)
|
||||
.project-action-button.project-xcode.inline<
|
||||
= render "projects/buttons/xcode_link"
|
||||
|
||||
= render 'projects/buttons/download', project: @project, ref: @ref
|
||||
= render 'projects/buttons/download', project: @project, ref: @ref
|
||||
|
||||
.project-clone-holder.d-block.d-md-none.mt-sm-2.mt-md-0>
|
||||
.project-clone-holder.d-none.d-md-inline-block>
|
||||
= render "projects/buttons/clone", dropdown_class: 'dropdown-menu-right'
|
||||
|
||||
.project-clone-holder.d-block.d-md-none.mt-sm-2.mt-md-0.ml-sm-2>
|
||||
= render "shared/mobile_clone_panel"
|
||||
|
||||
.project-clone-holder.d-none.d-md-inline-block>
|
||||
= render "projects/buttons/clone", dropdown_class: 'dropdown-menu-right'
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix Web IDE fork modal showing no text
|
||||
merge_request: 25842
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix project setting approval input in non-sequential order
|
||||
merge_request: 25391
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Remove spinner from app/views/projects/notes
|
||||
merge_request: 25015
|
||||
author: nuwe1
|
||||
type: other
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add Project template for Gatsby
|
||||
merge_request: 25486
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fixes caret position after pasting an image 15011
|
||||
merge_request: 21382
|
||||
author: Carolina Carvalhosa
|
||||
type: fixed
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix timezones for popovers.
|
||||
merge_request: 24942
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -200,11 +200,18 @@ by the `gitlab:artifacts:migrate` script.
|
|||
|
||||
### Migrating from object storage to local storage
|
||||
|
||||
**In Omnibus installations:**
|
||||
|
||||
In order to migrate back to local storage:
|
||||
|
||||
1. Set both `direct_upload` and `background_upload` to false under the artifacts object storage settings. Don't forget to restart GitLab.
|
||||
1. Run `rake gitlab:artifacts:migrate_to_local` on your console.
|
||||
1. Disable `object_storage` for artifacts in `gitlab.rb`. Remember to restart GitLab afterwards.
|
||||
1. Set both `direct_upload` and `background_upload` to false in `gitlab.rb`, under the artifacts object storage settings.
|
||||
1. [reconfigure GitLab][].
|
||||
1. Run `gitlab-rake gitlab:artifacts:migrate_to_local`.
|
||||
1. Disable object_storage for artifacts in `gitlab.rb`:
|
||||
- Set `gitlab_rails['artifacts_object_store_enabled'] = false`.
|
||||
- Comment out all other `artifacts_object_store` settings, including the entire
|
||||
`artifacts_object_store_connection` section, including the closing `}`.
|
||||
1. [reconfigure GitLab][].
|
||||
|
||||
## Expiring artifacts
|
||||
|
||||
|
|
|
|||
|
|
@ -118,7 +118,31 @@ button.addEventListener('click', () => {
|
|||
|
||||
## Tests and test helpers
|
||||
|
||||
In Karma tests, you can use the following:
|
||||
In Jest particularly in vue tests, you can use the following:
|
||||
|
||||
```javascript
|
||||
import { mockTracking } from 'helpers/tracking_helper';
|
||||
|
||||
describe('MyTracking', () => {
|
||||
let spy;
|
||||
|
||||
beforeEach(() => {
|
||||
spy = mockTracking('_category_', wrapper.element, jest.spyOn);
|
||||
});
|
||||
|
||||
it('tracks an event when clicked on feedback', () => {
|
||||
wrapper.find('.discover-feedback-icon').trigger('click');
|
||||
|
||||
expect(spy).toHaveBeenCalledWith('_category_', 'click_button', {
|
||||
label: 'security-discover-feedback-cta',
|
||||
property: '0',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
In obsolete Karma tests it's used as below:
|
||||
|
||||
```javascript
|
||||
import { mockTracking, triggerEvent } from 'spec/helpers/tracking_helper';
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ instances (GitLab Core, Starter, Premium, and Ultimate).
|
|||
<div class="col-md-9">
|
||||
<p style="margin-top: 18px;">
|
||||
To publish a website with Pages, you can use any Static Site Generator (SSG),
|
||||
such as Jekyll, Hugo, Middleman, Harp, Hexo, and Brunch, just to name a few. You can also
|
||||
such as Gatsby, Jekyll, Hugo, Middleman, Harp, Hexo, and Brunch, just to name a few. You can also
|
||||
publish any website written directly in plain HTML, CSS, and JavaScript.</p>
|
||||
<p>Pages does <strong>not</strong> support dynamic server-side processing, for instance, as <code>.php</code> and <code>.asp</code> requires. See this article to learn more about
|
||||
<a href="https://about.gitlab.com/blog/2016/06/03/ssg-overview-gitlab-pages-part-1-dynamic-x-static/">static websites vs dynamic websites</a>.</p>
|
||||
|
|
|
|||
|
|
@ -182,9 +182,14 @@ If **Public pipelines** is disabled:
|
|||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9362) in GitLab 9.1.
|
||||
|
||||
If you want to auto-cancel all pending non-HEAD pipelines on branch, when
|
||||
new pipeline will be created (after your Git push or manually from UI),
|
||||
check **Auto-cancel pending pipelines** checkbox and save the changes.
|
||||
If you want all pending non-HEAD pipelines on branches to auto-cancel each time
|
||||
a new pipeline is created, such as after a Git push or manually from the UI,
|
||||
you can enable this in the project settings:
|
||||
|
||||
1. Go to **{settings}** **Settings > CI / CD**.
|
||||
1. Expand **General Pipelines**.
|
||||
1. Check the **Auto-cancel redundant, pending pipelines** checkbox.
|
||||
1. Click **Save changes**.
|
||||
|
||||
## Pipeline Badges
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ module Gitlab
|
|||
ProjectTemplate.new('dotnetcore', '.NET Core', _('A .NET Core console application template, customizable for any .NET Core project'), 'https://gitlab.com/gitlab-org/project-templates/dotnetcore', 'illustrations/logos/dotnet.svg'),
|
||||
ProjectTemplate.new('android', 'Android', _('A ready-to-go template for use with Android apps.'), 'https://gitlab.com/gitlab-org/project-templates/android', 'illustrations/logos/android.svg'),
|
||||
ProjectTemplate.new('gomicro', 'Go Micro', _('Go Micro is a framework for micro service development.'), 'https://gitlab.com/gitlab-org/project-templates/go-micro'),
|
||||
ProjectTemplate.new('gatsby', 'Pages/Gatsby', _('Everything you need to create a GitLab Pages site using Gatsby.'), 'https://gitlab.com/pages/gatsby'),
|
||||
ProjectTemplate.new('hugo', 'Pages/Hugo', _('Everything you need to create a GitLab Pages site using Hugo.'), 'https://gitlab.com/pages/hugo'),
|
||||
ProjectTemplate.new('jekyll', 'Pages/Jekyll', _('Everything you need to create a GitLab Pages site using Jekyll.'), 'https://gitlab.com/pages/jekyll'),
|
||||
ProjectTemplate.new('plainhtml', 'Pages/Plain HTML', _('Everything you need to create a GitLab Pages site using plain HTML.'), 'https://gitlab.com/pages/plain-html'),
|
||||
|
|
|
|||
|
|
@ -7924,6 +7924,9 @@ msgstr ""
|
|||
msgid "Everything on your to-do list is marked as done."
|
||||
msgstr ""
|
||||
|
||||
msgid "Everything you need to create a GitLab Pages site using Gatsby."
|
||||
msgstr ""
|
||||
|
||||
msgid "Everything you need to create a GitLab Pages site using GitBook."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -15206,6 +15209,9 @@ msgstr ""
|
|||
msgid "ProjectTemplates|NodeJS Express"
|
||||
msgstr ""
|
||||
|
||||
msgid "ProjectTemplates|Pages/Gatsby"
|
||||
msgstr ""
|
||||
|
||||
msgid "ProjectTemplates|Pages/GitBook"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -18558,6 +18564,9 @@ msgstr ""
|
|||
msgid "Subscription deletion failed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Subscription successfully applied to \"%{group_name}\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Subscription successfully created."
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ describe 'Environments page', :js do
|
|||
|
||||
expect(page).to have_css('.environments-container')
|
||||
expect(page.all('.environment-name').length).to eq(1)
|
||||
expect(page.all('.ic-stop').length).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -105,6 +106,7 @@ describe 'Environments page', :js do
|
|||
|
||||
expect(page).to have_css('.environments-container')
|
||||
expect(page.all('.environment-name').length).to eq(1)
|
||||
expect(page.all('.ic-stop').length).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,127 @@
|
|||
import Vue from 'vue';
|
||||
import initConfirmModal from '~/confirm_modal';
|
||||
import { TEST_HOST } from 'helpers/test_constants';
|
||||
|
||||
describe('ConfirmModal', () => {
|
||||
const buttons = [
|
||||
{
|
||||
path: `${TEST_HOST}/1`,
|
||||
method: 'delete',
|
||||
modalAttributes: {
|
||||
modalId: 'geo-entry-removal-modal',
|
||||
title: 'Remove tracking database entry',
|
||||
message: 'Tracking database entry will be removed. Are you sure?',
|
||||
okVariant: 'danger',
|
||||
okTitle: 'Remove entry',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: `${TEST_HOST}/1`,
|
||||
method: 'post',
|
||||
modalAttributes: {
|
||||
modalId: 'geo-entry-removal-modal',
|
||||
title: 'Update tracking database entry',
|
||||
message: 'Tracking database entry will be updated. Are you sure?',
|
||||
okVariant: 'success',
|
||||
okTitle: 'Update entry',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
beforeEach(() => {
|
||||
const buttonContainer = document.createElement('div');
|
||||
|
||||
buttons.forEach(x => {
|
||||
const button = document.createElement('button');
|
||||
button.setAttribute('class', 'js-confirm-modal-button');
|
||||
button.setAttribute('data-path', x.path);
|
||||
button.setAttribute('data-method', x.method);
|
||||
button.setAttribute('data-modal-attributes', JSON.stringify(x.modalAttributes));
|
||||
button.innerHTML = 'Action';
|
||||
buttonContainer.appendChild(button);
|
||||
});
|
||||
|
||||
document.body.appendChild(buttonContainer);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
document.body.innerHTML = '';
|
||||
});
|
||||
|
||||
const findJsHooks = () => document.querySelectorAll('.js-confirm-modal-button');
|
||||
const findModal = () => document.querySelector('.gl-modal');
|
||||
const findModalOkButton = (modal, variant) =>
|
||||
modal.querySelector(`.modal-footer .btn-${variant}`);
|
||||
const findModalCancelButton = modal => modal.querySelector('.modal-footer .btn-secondary');
|
||||
|
||||
const serializeModal = (modal, buttonIndex) => {
|
||||
const { modalAttributes } = buttons[buttonIndex];
|
||||
|
||||
return {
|
||||
path: modal.querySelector('form').action,
|
||||
method: modal.querySelector('input[name="_method"]').value,
|
||||
modalAttributes: {
|
||||
modalId: modal.id,
|
||||
title: modal.querySelector('.modal-title').innerHTML,
|
||||
message: modal.querySelector('.modal-body div').innerHTML,
|
||||
okVariant: [...findModalOkButton(modal, modalAttributes.okVariant).classList]
|
||||
.find(x => x.match('btn-'))
|
||||
.replace('btn-', ''),
|
||||
okTitle: findModalOkButton(modal, modalAttributes.okVariant).innerHTML,
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
it('starts with only JsHooks', () => {
|
||||
expect(findJsHooks()).toHaveLength(buttons.length);
|
||||
expect(findModal()).not.toExist();
|
||||
});
|
||||
|
||||
describe('when button clicked', () => {
|
||||
beforeEach(() => {
|
||||
initConfirmModal();
|
||||
findJsHooks()
|
||||
.item(0)
|
||||
.click();
|
||||
});
|
||||
|
||||
it('does not replace JsHook with GlModal', () => {
|
||||
expect(findJsHooks()).toHaveLength(buttons.length);
|
||||
});
|
||||
|
||||
describe('GlModal', () => {
|
||||
it('is rendered', () => {
|
||||
expect(findModal()).toExist();
|
||||
});
|
||||
|
||||
describe('Cancel Button', () => {
|
||||
beforeEach(() => {
|
||||
findModalCancelButton(findModal()).click();
|
||||
|
||||
return Vue.nextTick();
|
||||
});
|
||||
|
||||
it('closes the modal', () => {
|
||||
expect(findModal()).not.toExist();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe.each`
|
||||
index
|
||||
${0}
|
||||
${1}
|
||||
`(`when multiple buttons exist`, ({ index }) => {
|
||||
beforeEach(() => {
|
||||
initConfirmModal();
|
||||
findJsHooks()
|
||||
.item(index)
|
||||
.click();
|
||||
});
|
||||
|
||||
it('correct props are passed to gl-modal', () => {
|
||||
expect(serializeModal(findModal(), index)).toEqual(buttons[index]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -1,4 +1,6 @@
|
|||
import { __, s__ } from '~/locale';
|
||||
import $ from 'jquery';
|
||||
import '~/commons/bootstrap';
|
||||
import * as datetimeUtility from '~/lib/utils/datetime_utility';
|
||||
|
||||
describe('Date time utils', () => {
|
||||
|
|
@ -563,3 +565,23 @@ describe('approximateDuration', () => {
|
|||
expect(datetimeUtility.approximateDuration(seconds)).toBe(approximation);
|
||||
});
|
||||
});
|
||||
|
||||
describe('localTimeAgo', () => {
|
||||
beforeEach(() => {
|
||||
document.body.innerHTML = `<time title="some time" datetime="2020-02-18T22:22:32Z">1 hour ago</time>`;
|
||||
});
|
||||
|
||||
it.each`
|
||||
timeagoArg | title | dataOriginalTitle
|
||||
${false} | ${'some time'} | ${null}
|
||||
${true} | ${''} | ${'Feb 18, 2020 10:22pm GMT+0000'}
|
||||
`('converts $seconds seconds to $approximation', ({ timeagoArg, title, dataOriginalTitle }) => {
|
||||
const element = document.querySelector('time');
|
||||
datetimeUtility.localTimeAgo($(element), timeagoArg);
|
||||
|
||||
jest.runAllTimers();
|
||||
|
||||
expect(element.getAttribute('data-original-title')).toBe(dataOriginalTitle);
|
||||
expect(element.getAttribute('title')).toBe(title);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
import { shallowMount } from '@vue/test-utils';
|
||||
import { GlModal } from '@gitlab/ui';
|
||||
import { TEST_HOST } from 'helpers/test_constants';
|
||||
import ConfirmModal from '~/vue_shared/components/confirm_modal.vue';
|
||||
|
||||
describe('vue_shared/components/confirm_modal', () => {
|
||||
const testModalProps = {
|
||||
path: `${TEST_HOST}/1`,
|
||||
method: 'delete',
|
||||
modalAttributes: {
|
||||
modalId: 'test-confirm-modal',
|
||||
title: 'Are you sure?',
|
||||
message: 'This will remove item 1',
|
||||
okVariant: 'danger',
|
||||
okTitle: 'Remove item',
|
||||
},
|
||||
};
|
||||
|
||||
const actionSpies = {
|
||||
openModal: jest.fn(),
|
||||
};
|
||||
|
||||
let wrapper;
|
||||
|
||||
const createComponent = (props = {}) => {
|
||||
wrapper = shallowMount(ConfirmModal, {
|
||||
propsData: {
|
||||
...testModalProps,
|
||||
...props,
|
||||
},
|
||||
methods: {
|
||||
...actionSpies,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
afterEach(() => {
|
||||
wrapper.destroy();
|
||||
});
|
||||
|
||||
const findModal = () => wrapper.find(GlModal);
|
||||
|
||||
describe('template', () => {
|
||||
beforeEach(() => {
|
||||
createComponent();
|
||||
});
|
||||
|
||||
it('calls openModal on mount', () => {
|
||||
expect(actionSpies.openModal).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('renders GlModal', () => {
|
||||
expect(findModal().exists()).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('methods', () => {
|
||||
beforeEach(() => {
|
||||
createComponent();
|
||||
});
|
||||
|
||||
describe('submitModal', () => {
|
||||
beforeEach(() => {
|
||||
wrapper.vm.$refs.form.requestSubmit = jest.fn();
|
||||
});
|
||||
|
||||
it('calls requestSubmit', () => {
|
||||
wrapper.vm.submitModal();
|
||||
expect(wrapper.vm.$refs.form.requestSubmit).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('dismiss', () => {
|
||||
it('removes gl-modal', () => {
|
||||
expect(findModal().exists()).toBeTruthy();
|
||||
wrapper.vm.dismiss();
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
expect(findModal().exists()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -13,6 +13,7 @@ describe Gitlab::ProjectTemplate do
|
|||
described_class.new('dotnetcore', '.NET Core', 'A .NET Core console application template, customizable for any .NET Core project', 'https://gitlab.com/gitlab-org/project-templates/dotnetcore'),
|
||||
described_class.new('android', 'Android', 'A ready-to-go template for use with Android apps.', 'https://gitlab.com/gitlab-org/project-templates/android'),
|
||||
described_class.new('gomicro', 'Go Micro', 'Go Micro is a framework for micro service development.', 'https://gitlab.com/gitlab-org/project-templates/go-micro'),
|
||||
described_class.new('gatsby', 'Pages/Gatsby', 'Everything you need to get started using a Gatsby site.', 'https://gitlab.com/pages/gatsby'),
|
||||
described_class.new('hugo', 'Pages/Hugo', 'Everything you need to get started using a Hugo Pages site.', 'https://gitlab.com/pages/hugo'),
|
||||
described_class.new('jekyll', 'Pages/Jekyll', 'Everything you need to get started using a Jekyll Pages site.', 'https://gitlab.com/pages/jekyll'),
|
||||
described_class.new('plainhtml', 'Pages/Plain HTML', 'Everything you need to get started using a plain HTML Pages site.', 'https://gitlab.com/pages/plain-html'),
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ describe 'GraphQL' do
|
|||
it 'returns an error' do
|
||||
post_graphql(query, variables: "This is not JSON")
|
||||
|
||||
expect(response).to have_gitlab_http_status(422)
|
||||
expect(response).to have_gitlab_http_status(:unprocessable_entity)
|
||||
expect(json_response['errors'].first['message']).not_to be_nil
|
||||
end
|
||||
end
|
||||
|
|
@ -114,7 +114,7 @@ describe 'GraphQL' do
|
|||
|
||||
post_graphql(query, headers: { 'PRIVATE-TOKEN' => token.token })
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
|
||||
expect(graphql_data['echo']).to eq('nil says: Hello world')
|
||||
end
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ describe API::GroupBoards do
|
|||
|
||||
post api(url, user), params: { label_id: project_label.id }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ describe API::GroupClusters do
|
|||
it 'responds with 403' do
|
||||
get api("/groups/#{group.id}/clusters", developer_user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -36,7 +36,7 @@ describe API::GroupClusters do
|
|||
end
|
||||
|
||||
it 'responds with 200' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
end
|
||||
|
||||
it 'includes pagination headers' do
|
||||
|
|
@ -70,7 +70,7 @@ describe API::GroupClusters do
|
|||
it 'responds with 403' do
|
||||
get api("/groups/#{group.id}/clusters/#{cluster_id}", developer_user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -140,7 +140,7 @@ describe API::GroupClusters do
|
|||
let(:cluster_id) { 123 }
|
||||
|
||||
it 'returns 404' do
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -179,7 +179,7 @@ describe API::GroupClusters do
|
|||
it 'responds with 403' do
|
||||
post api("/groups/#{group.id}/clusters/user", developer_user), params: cluster_params
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -190,7 +190,7 @@ describe API::GroupClusters do
|
|||
|
||||
context 'with valid params' do
|
||||
it 'responds with 201' do
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
end
|
||||
|
||||
it 'creates a new Cluster::Cluster' do
|
||||
|
|
@ -238,7 +238,7 @@ describe API::GroupClusters do
|
|||
let(:api_url) { 'invalid_api_url' }
|
||||
|
||||
it 'responds with 400' do
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'does not create a new Clusters::Cluster' do
|
||||
|
|
@ -260,7 +260,7 @@ describe API::GroupClusters do
|
|||
end
|
||||
|
||||
it 'responds with 400' do
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['message']['base'].first).to eq(_('Instance does not support multiple Kubernetes clusters'))
|
||||
end
|
||||
end
|
||||
|
|
@ -271,7 +271,7 @@ describe API::GroupClusters do
|
|||
end
|
||||
|
||||
it 'responds with 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')
|
||||
end
|
||||
|
|
@ -305,7 +305,7 @@ describe API::GroupClusters do
|
|||
it 'responds with 403' do
|
||||
put api("/groups/#{group.id}/clusters/#{cluster.id}", developer_user), params: update_params
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -320,7 +320,7 @@ describe API::GroupClusters do
|
|||
|
||||
context 'with valid params' do
|
||||
it 'responds with 200' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
end
|
||||
|
||||
it 'updates cluster attributes' do
|
||||
|
|
@ -333,7 +333,7 @@ describe API::GroupClusters do
|
|||
let(:domain) { 'invalid domain' }
|
||||
|
||||
it 'responds with 400' do
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'does not update cluster attributes' do
|
||||
|
|
@ -350,7 +350,7 @@ describe API::GroupClusters do
|
|||
let(:management_project_id) { create(:project).id }
|
||||
|
||||
it 'responds with 400' do
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'returns validation errors' do
|
||||
|
|
@ -368,7 +368,7 @@ describe API::GroupClusters do
|
|||
end
|
||||
|
||||
it 'responds with 400' do
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'returns validation error' do
|
||||
|
|
@ -380,7 +380,7 @@ describe API::GroupClusters do
|
|||
let(:domain) { 'new-domain.com' }
|
||||
|
||||
it 'responds with 200' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -408,7 +408,7 @@ describe API::GroupClusters do
|
|||
end
|
||||
|
||||
it 'responds with 200' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
end
|
||||
|
||||
it 'updates platform kubernetes attributes' do
|
||||
|
|
@ -424,7 +424,7 @@ describe API::GroupClusters do
|
|||
let(:cluster) { create(:cluster, :group, :provided_by_user) }
|
||||
|
||||
it 'responds with 404' do
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -442,7 +442,7 @@ describe API::GroupClusters do
|
|||
it 'responds with 403' do
|
||||
delete api("/groups/#{group.id}/clusters/#{cluster.id}", developer_user), params: cluster_params
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -452,7 +452,7 @@ describe API::GroupClusters do
|
|||
end
|
||||
|
||||
it 'responds with 204' do
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
expect(response).to have_gitlab_http_status(:no_content)
|
||||
end
|
||||
|
||||
it 'deletes the cluster' do
|
||||
|
|
@ -463,7 +463,7 @@ describe API::GroupClusters do
|
|||
let(:cluster) { create(:cluster, :group, :provided_by_user) }
|
||||
|
||||
it 'responds with 404' do
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ describe API::GroupExport do
|
|||
it 'downloads exported group archive' do
|
||||
get api(download_path, user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
end
|
||||
|
||||
context 'when export_file.file does not exist' do
|
||||
|
|
@ -57,7 +57,7 @@ describe API::GroupExport do
|
|||
it 'returns 404' do
|
||||
get api(download_path, user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -66,7 +66,7 @@ describe API::GroupExport do
|
|||
it 'returns 404' do
|
||||
get api(download_path, user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -79,7 +79,7 @@ describe API::GroupExport do
|
|||
it 'responds with 404 Not Found' do
|
||||
get api(download_path, user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -98,7 +98,7 @@ describe API::GroupExport do
|
|||
it 'accepts download' do
|
||||
post api(path, user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(202)
|
||||
expect(response).to have_gitlab_http_status(:accepted)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ describe API::GroupExport do
|
|||
it 'forbids the request' do
|
||||
post api(path, user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -123,7 +123,7 @@ describe API::GroupExport do
|
|||
it 'responds with 404 Not Found' do
|
||||
post api(path, user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ describe API::GroupImport do
|
|||
it 'creates new group and accepts request' do
|
||||
subject
|
||||
|
||||
expect(response).to have_gitlab_http_status(202)
|
||||
expect(response).to have_gitlab_http_status(:accepted)
|
||||
end
|
||||
|
||||
it 'creates private group' do
|
||||
|
|
@ -63,7 +63,7 @@ describe API::GroupImport do
|
|||
|
||||
subject
|
||||
|
||||
expect(response).to have_gitlab_http_status(202)
|
||||
expect(response).to have_gitlab_http_status(:accepted)
|
||||
expect(group.children.count).to eq(1)
|
||||
end
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ describe API::GroupImport do
|
|||
|
||||
subject
|
||||
|
||||
expect(response).to have_gitlab_http_status(202)
|
||||
expect(response).to have_gitlab_http_status(:accepted)
|
||||
expect(public_parent_group.children.first.visibility_level).to eq(Gitlab::VisibilityLevel::PUBLIC)
|
||||
end
|
||||
|
||||
|
|
@ -90,7 +90,7 @@ describe API::GroupImport do
|
|||
|
||||
subject
|
||||
|
||||
expect(response).to have_gitlab_http_status(202)
|
||||
expect(response).to have_gitlab_http_status(:accepted)
|
||||
expect(internal_parent_group.children.first.visibility_level).to eq(Gitlab::VisibilityLevel::INTERNAL)
|
||||
end
|
||||
end
|
||||
|
|
@ -101,7 +101,7 @@ describe API::GroupImport do
|
|||
|
||||
expect { subject }.not_to change { Group.count }
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
expect(json_response['message']).to eq('404 Group Not Found')
|
||||
end
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ describe API::GroupImport do
|
|||
|
||||
subject
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
expect(json_response['message']).to eq('403 Forbidden')
|
||||
end
|
||||
end
|
||||
|
|
@ -128,7 +128,7 @@ describe API::GroupImport do
|
|||
it 'returns 400 HTTP status' do
|
||||
subject
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -139,7 +139,7 @@ describe API::GroupImport do
|
|||
it 'forbids the request' do
|
||||
subject
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -154,7 +154,7 @@ describe API::GroupImport do
|
|||
post api('/groups/import', user), params: params, headers: workhorse_header
|
||||
end.not_to change { Group.count }.from(1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['error']).to eq(error_message)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ describe API::GroupLabels do
|
|||
it 'returns all available labels for the group' do
|
||||
get api("/groups/#{group.id}/labels", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response).to all(match_schema('public_api/v4/labels/label'))
|
||||
|
|
@ -27,7 +27,7 @@ describe API::GroupLabels do
|
|||
it 'includes counts in the response' do
|
||||
get api("/groups/#{group.id}/labels", user), params: { with_counts: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response).to all(match_schema('public_api/v4/labels/label_with_counts'))
|
||||
|
|
@ -42,7 +42,7 @@ describe API::GroupLabels do
|
|||
it 'returns all available labels for the group and ancestor groups' do
|
||||
get api("/groups/#{subgroup.id}/labels", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response).to all(match_schema('public_api/v4/labels/label'))
|
||||
|
|
@ -55,7 +55,7 @@ describe API::GroupLabels do
|
|||
it 'returns all available labels for the group but not for ancestor groups' do
|
||||
get api("/groups/#{subgroup.id}/labels", user), params: { include_ancestor_groups: false }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response).to all(match_schema('public_api/v4/labels/label'))
|
||||
|
|
@ -69,7 +69,7 @@ describe API::GroupLabels do
|
|||
it 'returns a single label for the group' do
|
||||
get api("/groups/#{group.id}/labels/#{group_label1.name}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq(group_label1.name)
|
||||
expect(json_response['color']).to eq(group_label1.color)
|
||||
expect(json_response['description']).to eq(group_label1.description)
|
||||
|
|
@ -85,7 +85,7 @@ describe API::GroupLabels do
|
|||
description: 'test'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response['name']).to eq('Foo')
|
||||
expect(json_response['color']).to eq('#FFAABB')
|
||||
expect(json_response['description']).to eq('test')
|
||||
|
|
@ -107,13 +107,13 @@ describe API::GroupLabels do
|
|||
it 'returns a 400 bad request if name not given' do
|
||||
post api("/groups/#{group.id}/labels", user), params: { color: '#FFAABB' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'returns a 400 bad request if color is not given' do
|
||||
post api("/groups/#{group.id}/labels", user), params: { name: 'Foobar' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'returns 409 if label already exists' do
|
||||
|
|
@ -123,7 +123,7 @@ describe API::GroupLabels do
|
|||
color: '#FFAABB'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(409)
|
||||
expect(response).to have_gitlab_http_status(:conflict)
|
||||
expect(json_response['message']).to eq('Label already exists')
|
||||
end
|
||||
end
|
||||
|
|
@ -132,20 +132,20 @@ describe API::GroupLabels do
|
|||
it 'returns 204 for existing label' do
|
||||
delete api("/groups/#{group.id}/labels", user), params: { name: group_label1.name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
expect(response).to have_gitlab_http_status(:no_content)
|
||||
end
|
||||
|
||||
it 'returns 404 for non existing label' do
|
||||
delete api("/groups/#{group.id}/labels", user), params: { name: 'not_exists' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
expect(json_response['message']).to eq('404 Label Not Found')
|
||||
end
|
||||
|
||||
it 'returns 400 for wrong parameters' do
|
||||
delete api("/groups/#{group.id}/labels", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it "does not delete parent's group labels" do
|
||||
|
|
@ -154,7 +154,7 @@ describe API::GroupLabels do
|
|||
|
||||
delete api("/groups/#{subgroup.id}/labels", user), params: { name: subgroup_label.name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
expect(response).to have_gitlab_http_status(:no_content)
|
||||
expect(subgroup.labels.size).to eq(0)
|
||||
expect(group.labels).to include(group_label1)
|
||||
end
|
||||
|
|
@ -169,13 +169,13 @@ describe API::GroupLabels do
|
|||
it 'returns 204 for existing label' do
|
||||
delete api("/groups/#{group.id}/labels/#{group_label1.name}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
expect(response).to have_gitlab_http_status(:no_content)
|
||||
end
|
||||
|
||||
it 'returns 404 for non existing label' do
|
||||
delete api("/groups/#{group.id}/labels/not_exists", 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 Label Not Found')
|
||||
end
|
||||
|
||||
|
|
@ -185,7 +185,7 @@ describe API::GroupLabels do
|
|||
|
||||
delete api("/groups/#{subgroup.id}/labels/#{subgroup_label.name}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
expect(response).to have_gitlab_http_status(:no_content)
|
||||
expect(subgroup.labels.size).to eq(0)
|
||||
expect(group.labels).to include(group_label1)
|
||||
end
|
||||
|
|
@ -205,7 +205,7 @@ describe API::GroupLabels do
|
|||
description: 'test'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq('New Label')
|
||||
expect(json_response['color']).to eq('#FFFFFF')
|
||||
expect(json_response['description']).to eq('test')
|
||||
|
|
@ -221,7 +221,7 @@ describe API::GroupLabels do
|
|||
new_name: 'New Label'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(subgroup.labels[0].name).to eq('New Label')
|
||||
expect(group_label1.name).to eq('feature')
|
||||
end
|
||||
|
|
@ -233,20 +233,20 @@ describe API::GroupLabels do
|
|||
new_name: 'label3'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'returns 400 if no label name given' do
|
||||
put api("/groups/#{group.id}/labels", user), params: { new_name: group_label1.name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['error']).to eq('label_id, name are missing, exactly one parameter must be provided')
|
||||
end
|
||||
|
||||
it 'returns 400 if no new parameters given' do
|
||||
put api("/groups/#{group.id}/labels", user), params: { name: group_label1.name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['error']).to eq('new_name, color, description are missing, '\
|
||||
'at least one parameter must be provided')
|
||||
end
|
||||
|
|
@ -261,7 +261,7 @@ describe API::GroupLabels do
|
|||
description: 'test'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq('New Label')
|
||||
expect(json_response['color']).to eq('#FFFFFF')
|
||||
expect(json_response['description']).to eq('test')
|
||||
|
|
@ -276,7 +276,7 @@ describe API::GroupLabels do
|
|||
new_name: 'New Label'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(subgroup.labels[0].name).to eq('New Label')
|
||||
expect(group_label1.name).to eq('feature')
|
||||
end
|
||||
|
|
@ -287,13 +287,13 @@ describe API::GroupLabels do
|
|||
new_name: 'label3'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'returns 400 if no new parameters given' do
|
||||
put api("/groups/#{group.id}/labels/#{group_label1.name}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['error']).to eq('new_name, color, description are missing, '\
|
||||
'at least one parameter must be provided')
|
||||
end
|
||||
|
|
@ -304,7 +304,7 @@ describe API::GroupLabels do
|
|||
it 'subscribes to the label' do
|
||||
post api("/groups/#{group.id}/labels/#{group_label1.title}/subscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response['name']).to eq(group_label1.title)
|
||||
expect(json_response['subscribed']).to be_truthy
|
||||
end
|
||||
|
|
@ -314,7 +314,7 @@ describe API::GroupLabels do
|
|||
it 'subscribes to the label' do
|
||||
post api("/groups/#{group.id}/labels/#{group_label1.id}/subscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response['name']).to eq(group_label1.title)
|
||||
expect(json_response['subscribed']).to be_truthy
|
||||
end
|
||||
|
|
@ -328,7 +328,7 @@ describe API::GroupLabels do
|
|||
it 'returns 304' do
|
||||
post api("/groups/#{group.id}/labels/#{group_label1.id}/subscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(304)
|
||||
expect(response).to have_gitlab_http_status(:not_modified)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -336,7 +336,7 @@ describe API::GroupLabels do
|
|||
it 'returns 404 error' do
|
||||
post api("/groups/#{group.id}/labels/1234/subscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -350,7 +350,7 @@ describe API::GroupLabels do
|
|||
it 'unsubscribes from the label' do
|
||||
post api("/groups/#{group.id}/labels/#{group_label1.title}/unsubscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response['name']).to eq(group_label1.title)
|
||||
expect(json_response['subscribed']).to be_falsey
|
||||
end
|
||||
|
|
@ -360,7 +360,7 @@ describe API::GroupLabels do
|
|||
it 'unsubscribes from the label' do
|
||||
post api("/groups/#{group.id}/labels/#{group_label1.id}/unsubscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response['name']).to eq(group_label1.title)
|
||||
expect(json_response['subscribed']).to be_falsey
|
||||
end
|
||||
|
|
@ -374,7 +374,7 @@ describe API::GroupLabels do
|
|||
it 'returns 304' do
|
||||
post api("/groups/#{group.id}/labels/#{group_label1.id}/unsubscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(304)
|
||||
expect(response).to have_gitlab_http_status(:not_modified)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -382,7 +382,7 @@ describe API::GroupLabels do
|
|||
it 'returns 404 error' do
|
||||
post api("/groups/#{group.id}/labels/1234/unsubscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ describe API::GroupVariables do
|
|||
it 'returns group variables' do
|
||||
get api("/groups/#{group.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)
|
||||
end
|
||||
end
|
||||
|
|
@ -26,7 +26,7 @@ describe API::GroupVariables do
|
|||
it 'does not return group variables' do
|
||||
get api("/groups/#{group.id}/variables", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ describe API::GroupVariables do
|
|||
it 'does not return group variables' do
|
||||
get api("/groups/#{group.id}/variables")
|
||||
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -50,7 +50,7 @@ describe API::GroupVariables do
|
|||
it 'returns group variable details' do
|
||||
get api("/groups/#{group.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['protected']).to eq(variable.protected?)
|
||||
expect(json_response['variable_type']).to eq(variable.variable_type)
|
||||
|
|
@ -59,7 +59,7 @@ describe API::GroupVariables do
|
|||
it 'responds with 404 Not Found if requesting non-existing variable' do
|
||||
get api("/groups/#{group.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
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ describe API::GroupVariables do
|
|||
it 'does not return group variable details' do
|
||||
get api("/groups/#{group.id}/variables/#{variable.key}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ describe API::GroupVariables do
|
|||
it 'does not return group variable details' do
|
||||
get api("/groups/#{group.id}/variables/#{variable.key}")
|
||||
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -93,7 +93,7 @@ describe API::GroupVariables do
|
|||
post api("/groups/#{group.id}/variables", user), params: { key: 'TEST_VARIABLE_2', value: 'PROTECTED_VALUE_2', protected: true, masked: true }
|
||||
end.to change {group.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['value']).to eq('PROTECTED_VALUE_2')
|
||||
expect(json_response['protected']).to be_truthy
|
||||
|
|
@ -106,7 +106,7 @@ describe API::GroupVariables do
|
|||
post api("/groups/#{group.id}/variables", user), params: { variable_type: 'file', key: 'TEST_VARIABLE_2', value: 'VALUE_2' }
|
||||
end.to change {group.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['value']).to eq('VALUE_2')
|
||||
expect(json_response['protected']).to be_falsey
|
||||
|
|
@ -119,7 +119,7 @@ describe API::GroupVariables do
|
|||
post api("/groups/#{group.id}/variables", user), params: { key: variable.key, value: 'VALUE_2' }
|
||||
end.to change {group.variables.count}.by(0)
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ describe API::GroupVariables do
|
|||
it 'does not create variable' do
|
||||
post api("/groups/#{group.id}/variables", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ describe API::GroupVariables do
|
|||
it 'does not create variable' do
|
||||
post api("/groups/#{group.id}/variables")
|
||||
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -156,7 +156,7 @@ describe API::GroupVariables do
|
|||
|
||||
updated_variable = group.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(updated_variable.value).to eq('VALUE_1_UP')
|
||||
expect(updated_variable).to be_protected
|
||||
|
|
@ -167,7 +167,7 @@ describe API::GroupVariables do
|
|||
it 'responds with 404 Not Found if requesting non-existing variable' do
|
||||
put api("/groups/#{group.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
|
||||
|
||||
|
|
@ -175,7 +175,7 @@ describe API::GroupVariables do
|
|||
it 'does not update variable' do
|
||||
put api("/groups/#{group.id}/variables/#{variable.key}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -183,7 +183,7 @@ describe API::GroupVariables do
|
|||
it 'does not update variable' do
|
||||
put api("/groups/#{group.id}/variables/#{variable.key}")
|
||||
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -200,14 +200,14 @@ describe API::GroupVariables do
|
|||
expect do
|
||||
delete api("/groups/#{group.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 {group.variables.count}.by(-1)
|
||||
end
|
||||
|
||||
it 'responds with 404 Not Found if requesting non-existing variable' do
|
||||
delete api("/groups/#{group.id}/variables/non_existing_variable", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it_behaves_like '412 response' do
|
||||
|
|
@ -219,7 +219,7 @@ describe API::GroupVariables do
|
|||
it 'does not delete variable' do
|
||||
delete api("/groups/#{group.id}/variables/#{variable.key}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -227,7 +227,7 @@ describe API::GroupVariables do
|
|||
it 'does not delete variable' do
|
||||
delete api("/groups/#{group.id}/variables/#{variable.key}")
|
||||
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ describe API::Groups do
|
|||
it "returns public groups" do
|
||||
get api("/groups")
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(1)
|
||||
|
|
@ -54,7 +54,7 @@ describe API::Groups do
|
|||
it "normal user: returns an array of groups of user1" do
|
||||
get api("/groups", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(1)
|
||||
|
|
@ -65,7 +65,7 @@ describe API::Groups do
|
|||
it "does not include runners_token information" do
|
||||
get api("/groups", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(1)
|
||||
|
|
@ -75,7 +75,7 @@ describe API::Groups do
|
|||
it "does not include statistics" do
|
||||
get api("/groups", user1), params: { statistics: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.first).not_to include 'statistics'
|
||||
|
|
@ -86,7 +86,7 @@ describe API::Groups do
|
|||
it "admin: returns an array of all groups" do
|
||||
get api("/groups", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(2)
|
||||
|
|
@ -95,7 +95,7 @@ describe API::Groups do
|
|||
it "does not include runners_token information" do
|
||||
get api("/groups", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(2)
|
||||
|
|
@ -105,7 +105,7 @@ describe API::Groups do
|
|||
it "does not include statistics by default" do
|
||||
get api("/groups", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.first).not_to include('statistics')
|
||||
|
|
@ -126,7 +126,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups", admin), params: { statistics: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response)
|
||||
|
|
@ -138,7 +138,7 @@ describe API::Groups do
|
|||
it "returns all groups excluding skipped groups" do
|
||||
get api("/groups", admin), params: { skip_groups: [group2.id] }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(1)
|
||||
|
|
@ -153,7 +153,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups", user1), params: { all_available: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups).to contain_exactly(public_group.name, group1.name)
|
||||
|
|
@ -176,7 +176,7 @@ describe API::Groups do
|
|||
it "sorts by name ascending by default" do
|
||||
get api("/groups", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups).to eq(groups_visible_to_user(user1).order(:name).pluck(:name))
|
||||
|
|
@ -185,7 +185,7 @@ describe API::Groups do
|
|||
it "sorts in descending order when passed" do
|
||||
get api("/groups", user1), params: { sort: "desc" }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups).to eq(groups_visible_to_user(user1).order(name: :desc).pluck(:name))
|
||||
|
|
@ -194,7 +194,7 @@ describe API::Groups do
|
|||
it "sorts by path in order_by param" do
|
||||
get api("/groups", user1), params: { order_by: "path" }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups).to eq(groups_visible_to_user(user1).order(:path).pluck(:name))
|
||||
|
|
@ -203,7 +203,7 @@ describe API::Groups do
|
|||
it "sorts by id in the order_by param" do
|
||||
get api("/groups", user1), params: { order_by: "id" }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups).to eq(groups_visible_to_user(user1).order(:id).pluck(:name))
|
||||
|
|
@ -212,7 +212,7 @@ describe API::Groups do
|
|||
it "sorts also by descending id with pagination fix" do
|
||||
get api("/groups", user1), params: { order_by: "id", sort: "desc" }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups).to eq(groups_visible_to_user(user1).order(id: :desc).pluck(:name))
|
||||
|
|
@ -221,7 +221,7 @@ describe API::Groups do
|
|||
it "sorts identical keys by id for good pagination" do
|
||||
get api("/groups", user1), params: { search: "same-name", order_by: "name" }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups_ids).to eq(Group.select { |group| group['name'] == 'same-name' }.map { |group| group['id'] }.sort)
|
||||
|
|
@ -230,7 +230,7 @@ describe API::Groups do
|
|||
it "sorts descending identical keys by id for good pagination" do
|
||||
get api("/groups", user1), params: { search: "same-name", order_by: "name", sort: "desc" }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups_ids).to eq(Group.select { |group| group['name'] == 'same-name' }.map { |group| group['id'] }.sort)
|
||||
|
|
@ -247,7 +247,7 @@ describe API::Groups do
|
|||
|
||||
get api('/groups', user2), params: { owned: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(1)
|
||||
|
|
@ -267,7 +267,7 @@ describe API::Groups do
|
|||
it 'returns an array of groups the user has at least master access' do
|
||||
get api('/groups', user2), params: { min_access_level: 40 }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(response_groups).to eq([group2.id, group3.id])
|
||||
|
|
@ -308,13 +308,13 @@ describe API::Groups do
|
|||
it 'returns 404 for a private group' do
|
||||
get api("/groups/#{group2.id}")
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'returns 200 for a public group' do
|
||||
get api("/groups/#{group1.id}")
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).not_to include('runners_token')
|
||||
end
|
||||
|
||||
|
|
@ -346,7 +346,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups/#{group1.id}", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['id']).to eq(group1.id)
|
||||
expect(json_response['name']).to eq(group1.name)
|
||||
expect(json_response['path']).to eq(group1.path)
|
||||
|
|
@ -379,7 +379,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups/#{group1.id}", user1), params: { with_projects: false }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['projects']).to be_nil
|
||||
expect(json_response['shared_projects']).to be_nil
|
||||
expect(json_response).not_to include('runners_token')
|
||||
|
|
@ -388,7 +388,7 @@ describe API::Groups do
|
|||
it "doesn't return runners_token if the user is not the owner of the group" do
|
||||
get api("/groups/#{group1.id}", user3)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).not_to include('runners_token')
|
||||
end
|
||||
|
||||
|
|
@ -396,20 +396,20 @@ describe API::Groups do
|
|||
group1.add_owner(user3)
|
||||
get api("/groups/#{group1.id}", user3)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).to include('runners_token')
|
||||
end
|
||||
|
||||
it "does not return a non existing group" do
|
||||
get api("/groups/1328", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it "does not return a group not attached to user1" do
|
||||
get api("/groups/#{group2.id}", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'returns only public and internal projects in the group' do
|
||||
|
|
@ -451,21 +451,21 @@ describe API::Groups do
|
|||
it "returns any existing group" do
|
||||
get api("/groups/#{group2.id}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq(group2.name)
|
||||
end
|
||||
|
||||
it "returns information of the runners_token for the group" do
|
||||
get api("/groups/#{group2.id}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).to include('runners_token')
|
||||
end
|
||||
|
||||
it "does not return a non existing group" do
|
||||
get api("/groups/1328", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -473,20 +473,20 @@ describe API::Groups do
|
|||
it 'returns any existing group' do
|
||||
get api("/groups/#{group1.path}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq(group1.name)
|
||||
end
|
||||
|
||||
it 'does not return a non existing group' do
|
||||
get api('/groups/unknown', admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'does not return a group not attached to user1' do
|
||||
get api("/groups/#{group2.path}", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -548,7 +548,7 @@ describe API::Groups do
|
|||
subgroup_creation_level: "maintainer"
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq(new_group_name)
|
||||
expect(json_response['description']).to eq('')
|
||||
expect(json_response['visibility']).to eq('public')
|
||||
|
|
@ -571,7 +571,7 @@ describe API::Groups do
|
|||
it 'returns 404 for a non existing group' do
|
||||
put api('/groups/1328', user1), params: { name: new_group_name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
context 'within a subgroup' do
|
||||
|
|
@ -585,14 +585,14 @@ describe API::Groups do
|
|||
it 'does not change visibility when not requested' do
|
||||
put api("/groups/#{group3.id}", user3), params: { description: 'Bug #23083' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['visibility']).to eq('public')
|
||||
end
|
||||
|
||||
it 'prevents making private a group containing public subgroups' do
|
||||
put api("/groups/#{group3.id}", user3), params: { visibility: 'private' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['message']['visibility_level']).to contain_exactly('private is not allowed since there are sub-groups with higher visibility.')
|
||||
end
|
||||
end
|
||||
|
|
@ -602,7 +602,7 @@ describe API::Groups do
|
|||
it 'updates the group' do
|
||||
put api("/groups/#{group1.id}", admin), params: { name: new_group_name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq(new_group_name)
|
||||
end
|
||||
end
|
||||
|
|
@ -611,7 +611,7 @@ describe API::Groups do
|
|||
it 'does not updates the group' do
|
||||
put api("/groups/#{group1.id}", user2), params: { name: new_group_name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -619,7 +619,7 @@ describe API::Groups do
|
|||
it 'returns 404 when trying to update the group' do
|
||||
put api("/groups/#{group2.id}", user1), params: { name: new_group_name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -645,7 +645,7 @@ describe API::Groups do
|
|||
it "returns the group's projects" do
|
||||
get api("/groups/#{group1.id}/projects", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response.length).to eq(2)
|
||||
project_names = json_response.map { |proj| proj['name'] }
|
||||
|
|
@ -656,7 +656,7 @@ describe API::Groups do
|
|||
it "returns the group's projects with simple representation" do
|
||||
get api("/groups/#{group1.id}/projects", user1), params: { simple: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response.length).to eq(2)
|
||||
project_names = json_response.map { |proj| proj['name'] }
|
||||
|
|
@ -669,7 +669,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups/#{group1.id}/projects", user1), params: { visibility: 'public' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an(Array)
|
||||
expect(json_response.length).to eq(1)
|
||||
|
|
@ -683,7 +683,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups/#{group1.id}/projects", user1), params: { with_shared: false }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an(Array)
|
||||
expect(json_response.length).to eq(2)
|
||||
|
|
@ -696,7 +696,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups/#{group1.id}/projects", user1), params: { include_subgroups: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an(Array)
|
||||
expect(json_response.length).to eq(4)
|
||||
|
|
@ -705,13 +705,13 @@ describe API::Groups do
|
|||
it "does not return a non existing group" do
|
||||
get api("/groups/1328/projects", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it "does not return a group not attached to user1" do
|
||||
get api("/groups/#{group2.id}/projects", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it "only returns projects to which user has access" do
|
||||
|
|
@ -719,7 +719,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups/#{group1.id}/projects", user3)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response.length).to eq(1)
|
||||
expect(json_response.first['name']).to eq(project3.name)
|
||||
|
|
@ -730,7 +730,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups/#{project2.group.id}/projects", user3), params: { owned: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response.length).to eq(1)
|
||||
expect(json_response.first['name']).to eq(project2.name)
|
||||
end
|
||||
|
|
@ -740,7 +740,7 @@ describe API::Groups do
|
|||
|
||||
get api("/groups/#{group1.id}/projects", user1), params: { starred: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response.length).to eq(1)
|
||||
expect(json_response.first['name']).to eq(project1.name)
|
||||
end
|
||||
|
|
@ -750,7 +750,7 @@ describe API::Groups do
|
|||
it "returns any existing group" do
|
||||
get api("/groups/#{group2.id}/projects", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response.length).to eq(1)
|
||||
expect(json_response.first['name']).to eq(project2.name)
|
||||
|
|
@ -759,7 +759,7 @@ describe API::Groups do
|
|||
it "does not return a non existing group" do
|
||||
get api("/groups/1328/projects", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'avoids N+1 queries' do
|
||||
|
|
@ -781,7 +781,7 @@ describe API::Groups do
|
|||
it 'returns any existing group' do
|
||||
get api("/groups/#{group1.path}/projects", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
project_names = json_response.map { |proj| proj['name'] }
|
||||
expect(project_names).to match_array([project1.name, project3.name])
|
||||
|
|
@ -790,13 +790,13 @@ describe API::Groups do
|
|||
it 'does not return a non existing group' do
|
||||
get api('/groups/unknown/projects', admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'does not return a group not attached to user1' do
|
||||
get api("/groups/#{group2.path}/projects", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -810,7 +810,7 @@ describe API::Groups do
|
|||
it 'returns only public subgroups' do
|
||||
get api("/groups/#{group1.id}/subgroups")
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(1)
|
||||
|
|
@ -821,7 +821,7 @@ describe API::Groups do
|
|||
it 'returns 404 for a private group' do
|
||||
get api("/groups/#{group2.id}/subgroups")
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -830,7 +830,7 @@ describe API::Groups do
|
|||
it 'returns no subgroups for the public group' do
|
||||
get api("/groups/#{group1.id}/subgroups", user2)
|
||||
|
||||
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.length).to eq(0)
|
||||
end
|
||||
|
|
@ -839,7 +839,7 @@ describe API::Groups do
|
|||
it 'returns public subgroups' do
|
||||
get api("/groups/#{group1.id}/subgroups", user2), params: { all_available: 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.length).to eq(1)
|
||||
expect(json_response[0]['id']).to eq(subgroup1.id)
|
||||
|
|
@ -852,7 +852,7 @@ describe API::Groups do
|
|||
it 'returns 404 for the private group' do
|
||||
get api("/groups/#{group2.id}/subgroups", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -864,7 +864,7 @@ describe API::Groups do
|
|||
it 'returns private subgroups' do
|
||||
get api("/groups/#{group1.id}/subgroups", user2)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.length).to eq(2)
|
||||
|
|
@ -878,7 +878,7 @@ describe API::Groups do
|
|||
it 'does not include statistics' do
|
||||
get api("/groups/#{group1.id}/subgroups", user2), params: { statistics: 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.first).not_to include 'statistics'
|
||||
end
|
||||
|
|
@ -893,7 +893,7 @@ describe API::Groups do
|
|||
it 'returns subgroups' do
|
||||
get api("/groups/#{group2.id}/subgroups", user1)
|
||||
|
||||
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.length).to eq(1)
|
||||
expect(json_response.first['id']).to eq(subgroup3.id)
|
||||
|
|
@ -906,7 +906,7 @@ describe API::Groups do
|
|||
it 'returns private subgroups of a public group' do
|
||||
get api("/groups/#{group1.id}/subgroups", 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.length).to eq(2)
|
||||
end
|
||||
|
|
@ -914,7 +914,7 @@ describe API::Groups do
|
|||
it 'returns subgroups of a private group' do
|
||||
get api("/groups/#{group2.id}/subgroups", 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.length).to eq(1)
|
||||
end
|
||||
|
|
@ -922,7 +922,7 @@ describe API::Groups do
|
|||
it 'does not include statistics by default' do
|
||||
get api("/groups/#{group1.id}/subgroups", 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.first).not_to include('statistics')
|
||||
end
|
||||
|
|
@ -930,7 +930,7 @@ describe API::Groups do
|
|||
it 'includes statistics if requested' do
|
||||
get api("/groups/#{group1.id}/subgroups", admin), params: { statistics: 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.first).to include('statistics')
|
||||
end
|
||||
|
|
@ -944,7 +944,7 @@ describe API::Groups do
|
|||
|
||||
post api("/groups", user1), params: group
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
|
||||
context 'as owner' do
|
||||
|
|
@ -955,7 +955,7 @@ describe API::Groups do
|
|||
it 'can create subgroups' do
|
||||
post api("/groups", user1), params: { parent_id: group2.id, name: 'foo', path: 'foo' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -967,7 +967,7 @@ describe API::Groups do
|
|||
it 'can create subgroups' do
|
||||
post api("/groups", user1), params: { parent_id: group2.id, name: 'foo', path: 'foo' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -978,7 +978,7 @@ describe API::Groups do
|
|||
|
||||
post api("/groups", user3), params: group
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
|
||||
expect(json_response["name"]).to eq(group[:name])
|
||||
expect(json_response["path"]).to eq(group[:path])
|
||||
|
|
@ -993,7 +993,7 @@ describe API::Groups do
|
|||
|
||||
post api("/groups", user3), params: group
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
|
||||
expect(json_response["full_path"]).to eq("#{parent.path}/#{group[:path]}")
|
||||
expect(json_response["parent_id"]).to eq(parent.id)
|
||||
|
|
@ -1002,20 +1002,20 @@ describe API::Groups do
|
|||
it "does not create group, duplicate" do
|
||||
post api("/groups", user3), params: { name: 'Duplicate Test', path: group2.path }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(response.message).to eq("Bad Request")
|
||||
end
|
||||
|
||||
it "returns 400 bad request error if name not given" do
|
||||
post api("/groups", user3), params: { path: group2.path }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it "returns 400 bad request error if path not given" do
|
||||
post api("/groups", user3), params: { name: 'test' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1027,7 +1027,7 @@ describe API::Groups do
|
|||
expect { delete api("/groups/#{group1.id}", user1) }.to change(GroupDestroyWorker.jobs, :size).by(1)
|
||||
end
|
||||
|
||||
expect(response).to have_gitlab_http_status(202)
|
||||
expect(response).to have_gitlab_http_status(:accepted)
|
||||
end
|
||||
|
||||
it_behaves_like '412 response' do
|
||||
|
|
@ -1041,19 +1041,19 @@ describe API::Groups do
|
|||
|
||||
delete api("/groups/#{group1.id}", user3)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
|
||||
it "does not remove a non existing group" do
|
||||
delete api("/groups/1328", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it "does not remove a group not attached to user1" do
|
||||
delete api("/groups/#{group2.id}", user1)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -1061,13 +1061,13 @@ describe API::Groups do
|
|||
it "removes any existing group" do
|
||||
delete api("/groups/#{group2.id}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(202)
|
||||
expect(response).to have_gitlab_http_status(:accepted)
|
||||
end
|
||||
|
||||
it "does not remove a non existing group" do
|
||||
delete api("/groups/1328", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1086,7 +1086,7 @@ describe API::Groups do
|
|||
it "does not transfer project to group" do
|
||||
post api("/groups/#{group1.id}/projects/#{project.id}", user2)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -1094,7 +1094,7 @@ describe API::Groups do
|
|||
it "transfers project to group" do
|
||||
post api("/groups/#{group1.id}/projects/#{project.id}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
end
|
||||
|
||||
context 'when using project path in URL' do
|
||||
|
|
@ -1102,7 +1102,7 @@ describe API::Groups do
|
|||
it "transfers project to group" do
|
||||
post api("/groups/#{group1.id}/projects/#{project_path}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -1110,7 +1110,7 @@ describe API::Groups do
|
|||
it "does not transfer project to group" do
|
||||
post api("/groups/#{group1.id}/projects/nogroup%2Fnoproject", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1120,7 +1120,7 @@ describe API::Groups do
|
|||
it "transfers project to group" do
|
||||
post api("/groups/#{group1.path}/projects/#{project_path}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -1128,7 +1128,7 @@ describe API::Groups do
|
|||
it "does not transfer project to group" do
|
||||
post api("/groups/noexist/projects/#{project_path}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ describe API::Helpers do
|
|||
|
||||
# The 500 status is expected as we're testing a case where an exception
|
||||
# is raised, but Grape shouldn't raise an additional exception
|
||||
expect(response).to have_gitlab_http_status(500)
|
||||
expect(response).to have_gitlab_http_status(:internal_server_error)
|
||||
expect(json_response['message']).not_to include("undefined local variable or method `request'")
|
||||
expect(json_response['message']).to start_with("\nRuntimeError (Runtime Error!):")
|
||||
end
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ describe API::ImportGithub do
|
|||
personal_access_token: token,
|
||||
repo_id: 1234
|
||||
}
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response).to be_a Hash
|
||||
expect(json_response['name']).to eq(project.name)
|
||||
end
|
||||
|
|
@ -50,7 +50,7 @@ describe API::ImportGithub do
|
|||
repo_id: 1234
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(422)
|
||||
expect(response).to have_gitlab_http_status(:unprocessable_entity)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ describe API::Jobs do
|
|||
|
||||
context 'authorized user' do
|
||||
it 'returns project jobs' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
end
|
||||
|
|
@ -122,7 +122,7 @@ describe API::Jobs do
|
|||
let(:query) { { 'scope' => 'pending' } }
|
||||
|
||||
it do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).to be_an Array
|
||||
end
|
||||
end
|
||||
|
|
@ -131,7 +131,7 @@ describe API::Jobs do
|
|||
let(:query) { { scope: %w(pending running) } }
|
||||
|
||||
it do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).to be_an Array
|
||||
end
|
||||
end
|
||||
|
|
@ -139,7 +139,7 @@ describe API::Jobs do
|
|||
context 'respond 400 when scope contains invalid state' do
|
||||
let(:query) { { scope: %w(unknown running) } }
|
||||
|
||||
it { expect(response).to have_gitlab_http_status(400) }
|
||||
it { expect(response).to have_gitlab_http_status(:bad_request) }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -148,7 +148,7 @@ describe API::Jobs do
|
|||
let(:api_user) { nil }
|
||||
|
||||
it 'does not return project jobs' do
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ describe API::Jobs do
|
|||
let(:api_user) { guest }
|
||||
|
||||
it 'does not return project jobs' do
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -178,7 +178,7 @@ describe API::Jobs do
|
|||
|
||||
context 'authorized user' do
|
||||
it 'returns pipeline jobs' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
end
|
||||
|
|
@ -210,7 +210,7 @@ describe API::Jobs do
|
|||
let(:query) { { 'scope' => 'pending' } }
|
||||
|
||||
it do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).to be_an Array
|
||||
end
|
||||
end
|
||||
|
|
@ -219,7 +219,7 @@ describe API::Jobs do
|
|||
let(:query) { { scope: %w(pending running) } }
|
||||
|
||||
it do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).to be_an Array
|
||||
end
|
||||
end
|
||||
|
|
@ -227,7 +227,7 @@ describe API::Jobs do
|
|||
context 'respond 400 when scope contains invalid state' do
|
||||
let(:query) { { scope: %w(unknown running) } }
|
||||
|
||||
it { expect(response).to have_gitlab_http_status(400) }
|
||||
it { expect(response).to have_gitlab_http_status(:bad_request) }
|
||||
end
|
||||
|
||||
context 'jobs in different pipelines' do
|
||||
|
|
@ -257,7 +257,7 @@ describe API::Jobs do
|
|||
let(:api_user) { nil }
|
||||
|
||||
it 'does not return jobs' do
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -265,7 +265,7 @@ describe API::Jobs do
|
|||
let(:api_user) { guest }
|
||||
|
||||
it 'does not return jobs' do
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -280,7 +280,7 @@ describe API::Jobs do
|
|||
|
||||
context 'authorized user' do
|
||||
it 'returns specific job data' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['id']).to eq(job.id)
|
||||
expect(json_response['status']).to eq(job.status)
|
||||
expect(json_response['stage']).to eq(job.stage)
|
||||
|
|
@ -319,7 +319,7 @@ describe API::Jobs do
|
|||
let(:api_user) { nil }
|
||||
|
||||
it 'does not return specific job data' do
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -339,7 +339,7 @@ describe API::Jobs do
|
|||
end
|
||||
|
||||
it 'returns status 401 (unauthorized)' do
|
||||
expect(response).to have_http_status :unauthorized
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -349,7 +349,7 @@ describe API::Jobs do
|
|||
end
|
||||
|
||||
it 'returns status 403 (forbidden)' do
|
||||
expect(response).to have_http_status :forbidden
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -362,7 +362,7 @@ describe API::Jobs do
|
|||
end
|
||||
|
||||
it 'returns status 204 (no content)' do
|
||||
expect(response).to have_http_status :no_content
|
||||
expect(response).to have_gitlab_http_status(:no_content)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -386,7 +386,7 @@ describe API::Jobs do
|
|||
|
||||
get_artifact_file(artifact)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -398,7 +398,7 @@ describe API::Jobs do
|
|||
|
||||
get_artifact_file(artifact)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -410,7 +410,7 @@ describe API::Jobs do
|
|||
|
||||
get_artifact_file(artifact)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -423,7 +423,7 @@ describe API::Jobs do
|
|||
|
||||
get_artifact_file(artifact)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response.headers.to_h)
|
||||
.to include('Content-Type' => 'application/json',
|
||||
'Gitlab-Workhorse-Send-Data' => /artifacts-entry/)
|
||||
|
|
@ -435,7 +435,7 @@ describe API::Jobs do
|
|||
it 'does not return job artifact file' do
|
||||
get_artifact_file('some/artifact')
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -453,7 +453,7 @@ describe API::Jobs do
|
|||
end
|
||||
|
||||
it 'returns specific job artifacts' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response.headers.to_h).to include(download_headers)
|
||||
expect(response.body).to match_file(job.artifacts_file.file.file)
|
||||
end
|
||||
|
|
@ -476,7 +476,7 @@ describe API::Jobs do
|
|||
let(:api_user) { nil }
|
||||
|
||||
it 'does not return specific job artifacts' do
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -507,7 +507,7 @@ describe API::Jobs do
|
|||
|
||||
context 'when proxy download is disabled' do
|
||||
it 'returns location redirect' do
|
||||
expect(response).to have_gitlab_http_status(302)
|
||||
expect(response).to have_gitlab_http_status(:found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -521,7 +521,7 @@ describe API::Jobs do
|
|||
let(:api_user) { nil }
|
||||
|
||||
it 'does not return specific job artifacts' do
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -557,7 +557,7 @@ describe API::Jobs do
|
|||
|
||||
it 'does not find a resource in a private project' do
|
||||
expect(project).to be_private
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -569,7 +569,7 @@ describe API::Jobs do
|
|||
end
|
||||
|
||||
it 'gives 403' do
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -604,7 +604,7 @@ describe API::Jobs do
|
|||
%Q(attachment; filename="#{job.artifacts_file.filename}"; filename*=UTF-8''#{job.artifacts_file.filename}) }
|
||||
end
|
||||
|
||||
it { expect(response).to have_http_status(:ok) }
|
||||
it { expect(response).to have_gitlab_http_status(:ok) }
|
||||
it { expect(response.headers.to_h).to include(download_headers) }
|
||||
end
|
||||
|
||||
|
|
@ -619,7 +619,7 @@ describe API::Jobs do
|
|||
end
|
||||
|
||||
it 'returns location redirect' do
|
||||
expect(response).to have_http_status(:found)
|
||||
expect(response).to have_gitlab_http_status(:found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -677,7 +677,7 @@ describe API::Jobs do
|
|||
let(:public_builds) { true }
|
||||
|
||||
it 'allows to access artifacts', :sidekiq_might_not_need_inline do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response.headers.to_h)
|
||||
.to include('Content-Type' => 'application/json',
|
||||
'Gitlab-Workhorse-Send-Data' => /artifacts-entry/)
|
||||
|
|
@ -689,7 +689,7 @@ describe API::Jobs do
|
|||
let(:public_builds) { false }
|
||||
|
||||
it 'rejects access to artifacts' do
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
expect(json_response).to have_key('message')
|
||||
expect(response.headers.to_h)
|
||||
.not_to include('Gitlab-Workhorse-Send-Data' => /artifacts-entry/)
|
||||
|
|
@ -701,7 +701,7 @@ describe API::Jobs do
|
|||
let(:public_builds) { true }
|
||||
|
||||
it 'rejects access and hides existence of artifacts' do
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
expect(json_response).to have_key('message')
|
||||
expect(response.headers.to_h)
|
||||
.not_to include('Gitlab-Workhorse-Send-Data' => /artifacts-entry/)
|
||||
|
|
@ -720,7 +720,7 @@ describe API::Jobs do
|
|||
|
||||
get_artifact_file(artifact)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response.headers.to_h)
|
||||
.to include('Content-Type' => 'application/json',
|
||||
'Gitlab-Workhorse-Send-Data' => /artifacts-entry/)
|
||||
|
|
@ -737,7 +737,7 @@ describe API::Jobs do
|
|||
it 'returns a specific artifact file for a valid path', :sidekiq_might_not_need_inline do
|
||||
get_artifact_file(artifact, 'improve/awesome')
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response.headers.to_h)
|
||||
.to include('Content-Type' => 'application/json',
|
||||
'Gitlab-Workhorse-Send-Data' => /artifacts-entry/)
|
||||
|
|
@ -773,7 +773,7 @@ describe API::Jobs do
|
|||
it 'does not return job artifact file' do
|
||||
get_artifact_file('some/artifact')
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -803,7 +803,7 @@ describe API::Jobs do
|
|||
end
|
||||
|
||||
it 'returns specific job trace' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response.body).to eq(job.trace.raw)
|
||||
end
|
||||
end
|
||||
|
|
@ -812,7 +812,7 @@ describe API::Jobs do
|
|||
let(:job) { create(:ci_build, :trace_artifact, pipeline: pipeline) }
|
||||
|
||||
it 'returns specific job trace' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response.body).to eq(job.trace.raw)
|
||||
end
|
||||
end
|
||||
|
|
@ -821,7 +821,7 @@ describe API::Jobs do
|
|||
let(:job) { create(:ci_build, :trace_live, pipeline: pipeline) }
|
||||
|
||||
it 'returns specific job trace' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response.body).to eq(job.trace.raw)
|
||||
end
|
||||
end
|
||||
|
|
@ -831,7 +831,7 @@ describe API::Jobs do
|
|||
let(:api_user) { nil }
|
||||
|
||||
it 'does not return specific job trace' do
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -844,7 +844,7 @@ describe API::Jobs do
|
|||
context 'authorized user' do
|
||||
context 'user with :update_build persmission' do
|
||||
it 'cancels running or pending job' do
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(project.builds.first.status).to eq('success')
|
||||
end
|
||||
end
|
||||
|
|
@ -853,7 +853,7 @@ describe API::Jobs do
|
|||
let(:api_user) { reporter }
|
||||
|
||||
it 'does not cancel job' do
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -862,7 +862,7 @@ describe API::Jobs do
|
|||
let(:api_user) { nil }
|
||||
|
||||
it 'does not cancel job' do
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -877,7 +877,7 @@ describe API::Jobs do
|
|||
context 'authorized user' do
|
||||
context 'user with :update_build permission' do
|
||||
it 'retries non-running job' do
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(project.builds.first.status).to eq('canceled')
|
||||
expect(json_response['status']).to eq('pending')
|
||||
end
|
||||
|
|
@ -887,7 +887,7 @@ describe API::Jobs do
|
|||
let(:api_user) { reporter }
|
||||
|
||||
it 'does not retry job' do
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -896,7 +896,7 @@ describe API::Jobs do
|
|||
let(:api_user) { nil }
|
||||
|
||||
it 'does not retry job' do
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -914,7 +914,7 @@ describe API::Jobs do
|
|||
let(:job) { create(:ci_build, :trace_artifact, :artifacts, :test_reports, :success, project: project, pipeline: pipeline) }
|
||||
|
||||
it 'erases job content' do
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(job.job_artifacts.count).to eq(0)
|
||||
expect(job.trace.exist?).to be_falsy
|
||||
expect(job.artifacts_file.present?).to be_falsy
|
||||
|
|
@ -934,7 +934,7 @@ describe API::Jobs do
|
|||
let(:job) { create(:ci_build, :trace_live, project: project, pipeline: pipeline) }
|
||||
|
||||
it 'responds with forbidden' do
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -945,13 +945,13 @@ describe API::Jobs do
|
|||
context 'when the build was created by the developer' do
|
||||
let(:owner) { user }
|
||||
|
||||
it { expect(response).to have_gitlab_http_status(201) }
|
||||
it { expect(response).to have_gitlab_http_status(:created) }
|
||||
end
|
||||
|
||||
context 'when the build was created by the other' do
|
||||
let(:owner) { create(:user) }
|
||||
|
||||
it { expect(response).to have_gitlab_http_status(403) }
|
||||
it { expect(response).to have_gitlab_http_status(:forbidden) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -968,7 +968,7 @@ describe API::Jobs do
|
|||
end
|
||||
|
||||
it 'keeps artifacts' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(job.reload.artifacts_expire_at).to be_nil
|
||||
end
|
||||
end
|
||||
|
|
@ -977,7 +977,7 @@ describe API::Jobs do
|
|||
let(:job) { create(:ci_build, project: project, pipeline: pipeline) }
|
||||
|
||||
it 'responds with not found' do
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -992,7 +992,7 @@ describe API::Jobs do
|
|||
|
||||
context 'when user is authorized to trigger a manual action' do
|
||||
it 'plays the job' do
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['user']['id']).to eq(user.id)
|
||||
expect(json_response['id']).to eq(job.id)
|
||||
expect(job.reload).to be_pending
|
||||
|
|
@ -1005,7 +1005,7 @@ describe API::Jobs do
|
|||
|
||||
it 'does not trigger a manual action' do
|
||||
expect(job.reload).to be_manual
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -1014,7 +1014,7 @@ describe API::Jobs do
|
|||
|
||||
it 'does not trigger a manual action' do
|
||||
expect(job.reload).to be_manual
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1022,7 +1022,7 @@ describe API::Jobs do
|
|||
|
||||
context 'on a non-playable job' do
|
||||
it 'returns a status code 400, Bad Request' do
|
||||
expect(response).to have_gitlab_http_status 400
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(response.body).to match("Unplayable Job")
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -12,21 +12,21 @@ describe API::Keys do
|
|||
context 'when unauthenticated' do
|
||||
it 'returns authentication error' do
|
||||
get api("/keys/#{key.id}")
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when authenticated' do
|
||||
it 'returns 404 for non-existing key' do
|
||||
get api('/keys/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 Not found')
|
||||
end
|
||||
|
||||
it 'returns single ssh key with user information' do
|
||||
user.keys << key
|
||||
get api("/keys/#{key.id}", admin)
|
||||
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['user']['id']).to eq(user.id)
|
||||
expect(json_response['user']['username']).to eq(user.username)
|
||||
|
|
@ -44,27 +44,27 @@ describe API::Keys do
|
|||
it 'returns authentication error' do
|
||||
get api("/keys?fingerprint=#{key.fingerprint}")
|
||||
|
||||
expect(response).to have_gitlab_http_status(401)
|
||||
expect(response).to have_gitlab_http_status(:unauthorized)
|
||||
end
|
||||
|
||||
it 'returns authentication error when authenticated as user' do
|
||||
get api("/keys?fingerprint=#{key.fingerprint}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
|
||||
context 'when authenticated as admin' do
|
||||
it 'returns 404 for non-existing SSH md5 fingerprint' do
|
||||
get api("/keys?fingerprint=11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11", 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')
|
||||
end
|
||||
|
||||
it 'returns 404 for non-existing SSH sha256 fingerprint' do
|
||||
get api("/keys?fingerprint=#{URI.encode_www_form_component("SHA256:nUhzNyftwADy8AH3wFY31tAKs7HufskYTte2aXo1lCg")}", 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')
|
||||
end
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ describe API::Keys do
|
|||
|
||||
get api("/keys?fingerprint=#{key.fingerprint}", admin)
|
||||
|
||||
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['user']['id']).to eq(user.id)
|
||||
expect(json_response['user']['username']).to eq(user.username)
|
||||
|
|
@ -84,7 +84,7 @@ describe API::Keys do
|
|||
|
||||
get api("/keys?fingerprint=#{URI.encode_www_form_component("SHA256:" + key.fingerprint_sha256)}", admin)
|
||||
|
||||
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['user']['id']).to eq(user.id)
|
||||
expect(json_response['user']['username']).to eq(user.username)
|
||||
|
|
@ -95,7 +95,7 @@ describe API::Keys do
|
|||
|
||||
get api("/keys?fingerprint=#{URI.encode_www_form_component("sha256:" + key.fingerprint_sha256)}", admin)
|
||||
|
||||
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['user']['id']).to eq(user.id)
|
||||
expect(json_response['user']['username']).to eq(user.username)
|
||||
|
|
@ -125,7 +125,7 @@ describe API::Keys do
|
|||
|
||||
get api("/keys?fingerprint=#{URI.encode_www_form_component("SHA256:" + deploy_key.fingerprint_sha256)}", admin)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['title']).to eq(deploy_key.title)
|
||||
expect(json_response['user']['id']).to eq(user.id)
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ describe API::Labels do
|
|||
it "returns 200 if name is changed (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params, new_name: 'New Label')
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq('New Label')
|
||||
expect(json_response['color']).to eq(label1.color)
|
||||
end
|
||||
|
|
@ -35,7 +35,7 @@ describe API::Labels do
|
|||
it "returns 200 if colors is changed (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params, color: '#FFFFFF')
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq(label1.name)
|
||||
expect(json_response['color']).to eq('#FFFFFF')
|
||||
end
|
||||
|
|
@ -51,7 +51,7 @@ describe API::Labels do
|
|||
it "returns 400 if no new parameters given (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params)
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['error']).to eq('new_name, color, description, priority are missing, '\
|
||||
'at least one parameter must be provided')
|
||||
end
|
||||
|
|
@ -59,27 +59,27 @@ describe API::Labels do
|
|||
it "returns 400 when color code is too short (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params, color: '#FF')
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['message']['color']).to eq(['must be a valid color code'])
|
||||
end
|
||||
|
||||
it "returns 400 for too long color code (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params, color: '#FFAAFFFF')
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['message']['color']).to eq(['must be a valid color code'])
|
||||
end
|
||||
|
||||
it "returns 400 for invalid priority (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params, priority: 'foo')
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it "returns 200 if name and colors and description are changed (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params, new_name: 'New Label', color: '#FFFFFF', description: 'test')
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq('New Label')
|
||||
expect(json_response['color']).to eq('#FFFFFF')
|
||||
expect(json_response['description']).to eq('test')
|
||||
|
|
@ -88,14 +88,14 @@ describe API::Labels do
|
|||
it "returns 400 for invalid name (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params, new_name: ',', color: '#FFFFFF')
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['message']['title']).to eq(['is invalid'])
|
||||
end
|
||||
|
||||
it "returns 200 if description is changed (#{route_type} route)" do
|
||||
put_labels_api(route_type, user, spec_params, description: 'test')
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['id']).to eq(expected_response_label_id)
|
||||
expect(json_response['description']).to eq('test')
|
||||
end
|
||||
|
|
@ -162,14 +162,14 @@ describe API::Labels do
|
|||
it 'returns 204 for existing label (deprecated route)' do
|
||||
delete api("/projects/#{project.id}/labels", user), params: spec_params
|
||||
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
expect(response).to have_gitlab_http_status(:no_content)
|
||||
end
|
||||
|
||||
it 'returns 204 for existing label (rest route)' do
|
||||
label_id = spec_params[:name] || spec_params[:label_id]
|
||||
delete api("/projects/#{project.id}/labels/#{label_id}", user), params: spec_params.except(:name, :label_id)
|
||||
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
expect(response).to have_gitlab_http_status(:no_content)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -188,7 +188,7 @@ describe API::Labels do
|
|||
it 'returns all available labels to the project' do
|
||||
get api("/projects/#{project.id}/labels", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to all(match_schema('public_api/v4/labels/project_label'))
|
||||
expect(json_response.size).to eq(3)
|
||||
|
|
@ -205,7 +205,7 @@ describe API::Labels do
|
|||
it 'includes counts in the response' do
|
||||
get api("/projects/#{project.id}/labels", user), params: { with_counts: true }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to all(match_schema('public_api/v4/labels/project_label_with_counts'))
|
||||
expect(json_response.size).to eq(3)
|
||||
|
|
@ -264,7 +264,7 @@ describe API::Labels do
|
|||
it 'returns all available labels for the project, parent group and ancestor groups' do
|
||||
get api("/projects/#{project.id}/labels", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response).to all(match_schema('public_api/v4/labels/label'))
|
||||
|
|
@ -287,7 +287,7 @@ describe API::Labels do
|
|||
it 'returns all available labels for the project and the parent group only' do
|
||||
get api("/projects/#{project.id}/labels", user), params: { include_ancestor_groups: false }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response).to all(match_schema('public_api/v4/labels/label'))
|
||||
|
|
@ -307,7 +307,7 @@ describe API::Labels do
|
|||
priority: 2
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response['name']).to eq('Foo')
|
||||
expect(json_response['color']).to eq('#FFAABB')
|
||||
expect(json_response['description']).to eq('test')
|
||||
|
|
@ -345,12 +345,12 @@ describe API::Labels do
|
|||
|
||||
it 'returns a 400 bad request if name not given' do
|
||||
post api("/projects/#{project.id}/labels", user), params: { color: '#FFAABB' }
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'returns a 400 bad request if color not given' do
|
||||
post api("/projects/#{project.id}/labels", user), params: { name: 'Foobar' }
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'returns 400 for invalid color' do
|
||||
|
|
@ -359,7 +359,7 @@ describe API::Labels do
|
|||
name: 'Foo',
|
||||
color: '#FFAA'
|
||||
}
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['message']['color']).to eq(['must be a valid color code'])
|
||||
end
|
||||
|
||||
|
|
@ -369,7 +369,7 @@ describe API::Labels do
|
|||
name: 'Foo',
|
||||
color: '#FFAAFFFF'
|
||||
}
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['message']['color']).to eq(['must be a valid color code'])
|
||||
end
|
||||
|
||||
|
|
@ -379,7 +379,7 @@ describe API::Labels do
|
|||
name: ',',
|
||||
color: '#FFAABB'
|
||||
}
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['message']['title']).to eq(['is invalid'])
|
||||
end
|
||||
|
||||
|
|
@ -394,7 +394,7 @@ describe API::Labels do
|
|||
color: '#FFAABB'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(409)
|
||||
expect(response).to have_gitlab_http_status(:conflict)
|
||||
expect(json_response['message']).to eq('Label already exists')
|
||||
end
|
||||
|
||||
|
|
@ -406,7 +406,7 @@ describe API::Labels do
|
|||
priority: 'foo'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'returns 409 if label already exists in project' do
|
||||
|
|
@ -415,7 +415,7 @@ describe API::Labels do
|
|||
name: 'label1',
|
||||
color: '#FFAABB'
|
||||
}
|
||||
expect(response).to have_gitlab_http_status(409)
|
||||
expect(response).to have_gitlab_http_status(:conflict)
|
||||
expect(json_response['message']).to eq('Label already exists')
|
||||
end
|
||||
end
|
||||
|
|
@ -432,14 +432,14 @@ describe API::Labels do
|
|||
it 'returns 404 for non existing label' do
|
||||
delete api("/projects/#{project.id}/labels", user), params: { name: 'label2' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
expect(json_response['message']).to eq('404 Label Not Found')
|
||||
end
|
||||
|
||||
it 'returns 400 for wrong parameters' do
|
||||
delete api("/projects/#{project.id}/labels", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it 'fails if label_id and name are given in params' do
|
||||
|
|
@ -449,7 +449,7 @@ describe API::Labels do
|
|||
name: priority_label.name
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
|
||||
it_behaves_like '412 response' do
|
||||
|
|
@ -480,7 +480,7 @@ describe API::Labels do
|
|||
new_name: 'label3'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'returns 404 if label by id does not exist' do
|
||||
|
|
@ -490,13 +490,13 @@ describe API::Labels do
|
|||
new_name: 'label3'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'returns 400 if no label name and id is given' do
|
||||
put api("/projects/#{project.id}/labels", user), params: { new_name: 'label2' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['error']).to eq('label_id, name are missing, exactly one parameter must be provided')
|
||||
end
|
||||
|
||||
|
|
@ -508,7 +508,7 @@ describe API::Labels do
|
|||
new_name: 'New Label'
|
||||
}
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -523,7 +523,7 @@ describe API::Labels do
|
|||
it 'returns 200 if label is promoted' do
|
||||
put api("/projects/#{project.id}/labels/promote", user), params: { name: label1.name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['name']).to eq(label1.name)
|
||||
expect(json_response['color']).to eq(label1.color)
|
||||
end
|
||||
|
|
@ -535,7 +535,7 @@ describe API::Labels do
|
|||
.to change(project.labels, :count).by(-1)
|
||||
.and change(group.labels, :count).by(0)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
end
|
||||
|
||||
it 'returns 403 if guest promotes label' do
|
||||
|
|
@ -544,19 +544,19 @@ describe API::Labels do
|
|||
|
||||
put api("/projects/#{project.id}/labels/promote", guest), params: { name: label1.name }
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
expect(response).to have_gitlab_http_status(:forbidden)
|
||||
end
|
||||
|
||||
it 'returns 404 if label does not exist' do
|
||||
put api("/projects/#{project.id}/labels/promote", user), params: { name: 'unknown' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
|
||||
it 'returns 400 if no label name given' do
|
||||
put api("/projects/#{project.id}/labels/promote", user)
|
||||
|
||||
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')
|
||||
end
|
||||
end
|
||||
|
|
@ -566,7 +566,7 @@ describe API::Labels do
|
|||
it "subscribes to the label" do
|
||||
post api("/projects/#{project.id}/labels/#{label1.title}/subscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response["name"]).to eq(label1.title)
|
||||
expect(json_response["subscribed"]).to be_truthy
|
||||
end
|
||||
|
|
@ -576,7 +576,7 @@ describe API::Labels do
|
|||
it "subscribes to the label" do
|
||||
post api("/projects/#{project.id}/labels/#{label1.id}/subscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response["name"]).to eq(label1.title)
|
||||
expect(json_response["subscribed"]).to be_truthy
|
||||
end
|
||||
|
|
@ -590,7 +590,7 @@ describe API::Labels do
|
|||
it "returns 304" do
|
||||
post api("/projects/#{project.id}/labels/#{label1.id}/subscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(304)
|
||||
expect(response).to have_gitlab_http_status(:not_modified)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -598,7 +598,7 @@ describe API::Labels do
|
|||
it "returns 404 error" do
|
||||
post api("/projects/#{project.id}/labels/1234/subscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -612,7 +612,7 @@ describe API::Labels do
|
|||
it "unsubscribes from the label" do
|
||||
post api("/projects/#{project.id}/labels/#{label1.title}/unsubscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response["name"]).to eq(label1.title)
|
||||
expect(json_response["subscribed"]).to be_falsey
|
||||
end
|
||||
|
|
@ -622,7 +622,7 @@ describe API::Labels do
|
|||
it "unsubscribes from the label" do
|
||||
post api("/projects/#{project.id}/labels/#{label1.id}/unsubscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(201)
|
||||
expect(response).to have_gitlab_http_status(:created)
|
||||
expect(json_response["name"]).to eq(label1.title)
|
||||
expect(json_response["subscribed"]).to be_falsey
|
||||
end
|
||||
|
|
@ -636,7 +636,7 @@ describe API::Labels do
|
|||
it "returns 304" do
|
||||
post api("/projects/#{project.id}/labels/#{label1.id}/unsubscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(304)
|
||||
expect(response).to have_gitlab_http_status(:not_modified)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -644,7 +644,7 @@ describe API::Labels do
|
|||
it "returns 404 error" do
|
||||
post api("/projects/#{project.id}/labels/1234/unsubscribe", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
expect(response).to have_gitlab_http_status(:not_found)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ describe API::Lint do
|
|||
it 'passes validation' do
|
||||
post api('/ci/lint'), params: { content: yaml_content }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response).to be_an Hash
|
||||
expect(json_response['status']).to eq('valid')
|
||||
expect(json_response['errors']).to eq([])
|
||||
|
|
@ -23,7 +23,7 @@ describe API::Lint do
|
|||
it 'responds with errors about invalid syntax' do
|
||||
post api('/ci/lint'), params: { content: 'invalid content' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['status']).to eq('invalid')
|
||||
expect(json_response['errors']).to eq(['Invalid configuration format'])
|
||||
end
|
||||
|
|
@ -31,7 +31,7 @@ describe API::Lint do
|
|||
it "responds with errors about invalid configuration" do
|
||||
post api('/ci/lint'), params: { content: '{ image: "ruby:2.1", services: ["postgres"] }' }
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to have_gitlab_http_status(:ok)
|
||||
expect(json_response['status']).to eq('invalid')
|
||||
expect(json_response['errors']).to eq(['jobs config should contain at least one visible job'])
|
||||
end
|
||||
|
|
@ -41,7 +41,7 @@ describe API::Lint do
|
|||
it 'responds with validation error about missing content' do
|
||||
post api('/ci/lint')
|
||||
|
||||
expect(response).to have_gitlab_http_status(400)
|
||||
expect(response).to have_gitlab_http_status(:bad_request)
|
||||
expect(json_response['error']).to eq('content is missing')
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue