Skip to content
Snippets Groups Projects
Commit 937567b7 authored by Tomasz Maczukin's avatar Tomasz Maczukin
Browse files

Add create feature to variables API

parent c5177dd5
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -41,6 +41,24 @@ module API
present variables.first, with: Entities::Variable
end
 
# Create a new variable in project
#
# Parameters:
# id (required) - The ID of a project
# key (required) - The key of variable being created
# value (required) - The value of variable being created
# Example Request:
# POST /projects/:id/variables
post ':id/variables' do
required_attributes! [:key, :value]
variable = user_project.variables.create(key: params[:key], value: params[:value])
return render_validation_error!(variable) unless variable.valid?
variable.save!
present variable, with: Entities::Variable
end
# Update existing variable of a project
#
# Parameters:
Loading
Loading
@@ -75,6 +93,8 @@ module API
return not_found!('Variable') unless variable
 
variable.destroy
present variable, with: Entities::Variable
end
end
end
Loading
Loading
Loading
Loading
@@ -16,7 +16,7 @@
 
FactoryGirl.define do
factory :ci_variable, class: Ci::Variable do
id 1
id 10
key 'TEST_VARIABLE_1'
value 'VALUE_1'
 
Loading
Loading
Loading
Loading
@@ -79,6 +79,44 @@ describe API::API, api: true do
end
end
 
describe 'POST /projects/:id/variables' do
context 'authorized user with proper permissions' do
it 'should create variable' do
expect do
post api("/projects/#{project.id}/variables", user), key: 'TEST_VARIABLE_2', value: 'VALUE_2'
end.to change{project.variables.count}.by(1)
expect(response.status).to eq(201)
expect(json_response['key']).to eq('TEST_VARIABLE_2')
expect(json_response['value']).to eq('VALUE_2')
end
it 'should not allow to duplicate variable key' do
expect do
post api("/projects/#{project.id}/variables", user), key: 'TEST_VARIABLE_1', value: 'VALUE_2'
end.to change{project.variables.count}.by(0)
expect(response.status).to eq(400)
end
end
context 'authorized user with invalid permissions' do
it 'should not create variable' do
post api("/projects/#{project.id}/variables", user2)
expect(response.status).to eq(403)
end
end
context 'unauthorized user' do
it 'should not create variable' do
post api("/projects/#{project.id}/variables")
expect(response.status).to eq(401)
end
end
end
describe 'PUT /projects/:id/variables/:variable_id' do
context 'authorized user with proper permissions' do
it 'should update variable data' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment