Add create feature to variables API
This commit is contained in:
parent
c5177dd5e2
commit
937567b767
|
@ -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:
|
||||
|
@ -75,6 +93,8 @@ module API
|
|||
return not_found!('Variable') unless variable
|
||||
|
||||
variable.destroy
|
||||
|
||||
present variable, with: Entities::Variable
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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'
|
||||
|
||||
|
|
|
@ -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…
Reference in New Issue