summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorToon Claes <toon@gitlab.com>2017-02-28 14:55:21 +0100
committerToon Claes <toon@gitlab.com>2017-02-28 15:34:38 +0100
commit8c569e21d5224128e28fcc2392dc4777f9b839c2 (patch)
treef54d755279e81d49a4db6828aa1dfaaa054de1a1 /spec
parent54f6357ba3d7f31bdb0009a041e48c3a6be8e2ff (diff)
downloadgitlab-ce-8c569e21d5224128e28fcc2392dc4777f9b839c2.tar.gz
Add endpoint to stop an environment through the API.
Diffstat (limited to 'spec')
-rw-r--r--spec/requests/api/environments_spec.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/requests/api/environments_spec.rb b/spec/requests/api/environments_spec.rb
index d66eb63fd0a..8aac0546513 100644
--- a/spec/requests/api/environments_spec.rb
+++ b/spec/requests/api/environments_spec.rb
@@ -141,4 +141,39 @@ describe API::Environments, api: true do
end
end
end
+
+ describe 'POST /projects/:id/environments/:environment_id/stop' do
+ context 'as a master' do
+ context 'with a stoppable environment' do
+ before do
+ environment.update(state: :available)
+
+ post api("/projects/#{project.id}/environments/#{environment.id}/stop", user)
+ end
+
+ it 'returns a 200' do
+ expect(response).to have_http_status(200)
+ end
+
+ it 'actually stops the environment' do
+ expect(environment.reload).to be_stopped
+ end
+ end
+
+ it 'returns a 404 for non existing id' do
+ post api("/projects/#{project.id}/environments/12345/stop", user)
+
+ expect(response).to have_http_status(404)
+ expect(json_response['message']).to eq('404 Not found')
+ end
+ end
+
+ context 'a non member' do
+ it 'rejects the request' do
+ post api("/projects/#{project.id}/environments/#{environment.id}/stop", non_member)
+
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
end