summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Maczukin <tomasz@maczukin.pl>2015-12-31 16:56:03 +0100
committerTomasz Maczukin <tomasz@maczukin.pl>2015-12-31 16:56:03 +0100
commit0d014feb1d216e692882976f0d70c3227eaec4ca (patch)
tree235784b5251e437efe88edc86d70ae09b949c2f4
parenta692ce1c079703c4f3947e1d0a29547189e94d0f (diff)
downloadgitlab-ce-0d014feb1d216e692882976f0d70c3227eaec4ca.tar.gz
Add delete feature to variables API
-rw-r--r--lib/api/variables.rb12
-rw-r--r--spec/requests/api/variables_spec.rb29
2 files changed, 40 insertions, 1 deletions
diff --git a/lib/api/variables.rb b/lib/api/variables.rb
index 6522ecba70c..c70c7cd9d7b 100644
--- a/lib/api/variables.rb
+++ b/lib/api/variables.rb
@@ -57,6 +57,18 @@ module API
present variable, with: Entities::Variable
end
+
+ # Delete existing variable of a project
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # variable_id (required) - The ID of a variable
+ # Exanoke Reqyest:
+ # DELETE /projects/:id/variables/:variable_id
+ delete ':id/variables/:variable_id' do
+ variable = user_project.variables.where(id: params[:variable_id].to_i).first
+ variable.destroy
+ end
end
end
end
diff --git a/spec/requests/api/variables_spec.rb b/spec/requests/api/variables_spec.rb
index 3f58277c4ae..385db2409bd 100644
--- a/spec/requests/api/variables_spec.rb
+++ b/spec/requests/api/variables_spec.rb
@@ -101,11 +101,38 @@ describe API::API, api: true do
end
context 'unauthorized user' do
- it 'should not return project variable details' do
+ it 'should not update variable' do
put api("/projects/#{project.id}/variables/#{variable.id}")
expect(response.status).to eq(401)
end
end
end
+
+ describe 'DELETE /projects/:id/variables/:variable_id' do
+ context 'authorized user with proper permissions' do
+ it 'should delete variable' do
+ expect do
+ delete api("/projects/#{project.id}/variables/#{variable.id}", user)
+ end.to change{project.variables.count}.by(-1)
+ expect(response.status).to eq(200)
+ end
+ end
+
+ context 'authorized user with invalid permissions' do
+ it 'should not delete variable' do
+ delete api("/projects/#{project.id}/variables/#{variable.id}", user2)
+
+ expect(response.status).to eq(403)
+ end
+ end
+
+ context 'unauthorized user' do
+ it 'should not delete variable' do
+ delete api("/projects/#{project.id}/variables/#{variable.id}")
+
+ expect(response.status).to eq(401)
+ end
+ end
+ end
end