diff options
author | Rémy Coutable <remy@rymai.me> | 2018-08-28 09:59:34 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2018-08-28 09:59:34 +0000 |
commit | 3b9eb5631fa17bbf525b5e869d8e36665638cd5a (patch) | |
tree | f68e1f71a10d071a10a5dda577f15da249ab4c09 /spec/requests | |
parent | e78f5bf8d67b6c37266dc486bc645e209384087f (diff) | |
parent | 0f269f9c99e72e082fef6283387366b2831702d8 (diff) | |
download | gitlab-ce-3b9eb5631fa17bbf525b5e869d8e36665638cd5a.tar.gz |
Merge branch 'fldubois/gitlab-ce-fix-api-group-createdat' into 'master'
Allow date parameters on Issues, Notes, and Discussions API for group owners
Closes #40059
See merge request gitlab-org/gitlab-ce!21342
Diffstat (limited to 'spec/requests')
-rw-r--r-- | spec/requests/api/issues_spec.rb | 61 |
1 files changed, 54 insertions, 7 deletions
diff --git a/spec/requests/api/issues_spec.rb b/spec/requests/api/issues_spec.rb index 28ba00c7293..f64815feffa 100644 --- a/spec/requests/api/issues_spec.rb +++ b/spec/requests/api/issues_spec.rb @@ -1023,6 +1023,20 @@ describe API::Issues do end end + context 'by a group owner' do + let(:group) { create(:group) } + let(:group_project) { create(:project, :public, namespace: group) } + + it 'sets the internal ID on the new issue' do + group.add_owner(user2) + post api("/projects/#{group_project.id}/issues", user2), + title: 'new issue', iid: 9001 + + expect(response).to have_gitlab_http_status(201) + expect(json_response['iid']).to eq 9001 + end + end + context 'by another user' do it 'ignores the given internal ID' do post api("/projects/#{project.id}/issues", user2), @@ -1154,14 +1168,47 @@ describe API::Issues do end end - context 'when an admin or owner makes the request' do - it 'accepts the creation date to be set' do - creation_time = 2.weeks.ago - post api("/projects/#{project.id}/issues", user), - title: 'new issue', labels: 'label, label2', created_at: creation_time + context 'setting created_at' do + let(:creation_time) { 2.weeks.ago } + let(:params) { { title: 'new issue', labels: 'label, label2', created_at: creation_time } } - expect(response).to have_gitlab_http_status(201) - expect(Time.parse(json_response['created_at'])).to be_like_time(creation_time) + context 'by an admin' do + it 'sets the creation time on the new issue' do + post api("/projects/#{project.id}/issues", admin), params + + expect(response).to have_gitlab_http_status(201) + expect(Time.parse(json_response['created_at'])).to be_like_time(creation_time) + end + end + + context 'by a project owner' do + it 'sets the creation time on the new issue' do + post api("/projects/#{project.id}/issues", user), params + + expect(response).to have_gitlab_http_status(201) + expect(Time.parse(json_response['created_at'])).to be_like_time(creation_time) + end + end + + context 'by a group owner' do + it 'sets the creation time on the new issue' do + group = create(:group) + group_project = create(:project, :public, namespace: group) + group.add_owner(user2) + post api("/projects/#{group_project.id}/issues", user2), params + + expect(response).to have_gitlab_http_status(201) + expect(Time.parse(json_response['created_at'])).to be_like_time(creation_time) + end + end + + context 'by another user' do + it 'ignores the given creation time' do + post api("/projects/#{project.id}/issues", user2), params + + expect(response).to have_gitlab_http_status(201) + expect(Time.parse(json_response['created_at'])).not_to be_like_time(creation_time) + end end end |