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

Add update feature for variables API

parent ea4777ff
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -24,7 +24,7 @@ module API
# id (required) - The ID of a project
# variable_id (required) - The ID OR `key` of variable to show; if variable_id contains only digits it's treated
# as ID other ways it's treated as `key`
# Example Reuest:
# Example Request:
# GET /projects/:id/variables/:variable_id
get ':id/variables/:variable_id' do
variable_id = params[:variable_id]
Loading
Loading
@@ -38,6 +38,25 @@ module API
 
present variables.first, with: Entities::Variable
end
# Update existing variable of a project
#
# Parameters:
# id (required) - The ID of a project
# variable_id (required) - The ID of a variable
# key (optional) - new value for `key` field of variable
# value (optional) - new value for `value` field of variable
# Example Request:
# PUT /projects/:id/variables/:variable_id
put ':id/variables/:variable_id' do
variable = user_project.variables.where(id: params[:variable_id].to_i).first
variable.key = params[:key]
variable.value = params[:value]
variable.save!
present variable, with: Entities::Variable
end
end
end
end
Loading
Loading
@@ -40,25 +40,25 @@ describe API::API, api: true do
describe 'GET /projects/:id/variables/:variable_id' do
context 'authorized user with proper permissions' do
it 'should return project variable details when ID is used as :variable_id' do
get api("/projects/#{project.id}/variables/1", user)
get api("/projects/#{project.id}/variables/#{variable.id}", user)
 
expect(response.status).to eq(200)
expect(json_response['key']).to eq('TEST_VARIABLE_1')
expect(json_response['value']).to eq('VALUE_1')
expect(json_response['key']).to eq(variable.key)
expect(json_response['value']).to eq(variable.value)
end
 
it 'should return project variable details when `key` is used as :variable_id' do
get api("/projects/#{project.id}/variables/TEST_VARIABLE_1", user)
get api("/projects/#{project.id}/variables/#{variable.key}", user)
 
expect(response.status).to eq(200)
expect(json_response['id']).to eq(1)
expect(json_response['value']).to eq('VALUE_1')
expect(json_response['id']).to eq(variable.id)
expect(json_response['value']).to eq(variable.value)
end
end
 
context 'authorized user with invalid permissions' do
it 'should not return project variable details' do
get api("/projects/#{project.id}/variables/1", user2)
get api("/projects/#{project.id}/variables/#{variable.id}", user2)
 
expect(response.status).to eq(403)
end
Loading
Loading
@@ -66,7 +66,43 @@ describe API::API, api: true do
 
context 'unauthorized user' do
it 'should not return project variable details' do
get api("/projects/#{project.id}/variables/1")
get api("/projects/#{project.id}/variables/#{variable.id}")
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
initial_variable = project.variables.first
key_before = initial_variable.key
value_before = initial_variable.value
put api("/projects/#{project.id}/variables/#{variable.id}", user), key: 'TEST_VARIABLE_1_UP', value: 'VALUE_1_UP'
updated_variable = project.variables.first
expect(response.status).to eq(200)
expect(key_before).to eq(variable.key)
expect(value_before).to eq(variable.value)
expect(updated_variable.key).to eq('TEST_VARIABLE_1_UP')
expect(updated_variable.value).to eq('VALUE_1_UP')
end
end
context 'authorized user with invalid permissions' do
it 'should not update variable' do
put api("/projects/#{project.id}/variables/#{variable.id}", user2)
expect(response.status).to eq(403)
end
end
context 'unauthorized user' do
it 'should not return project variable details' do
put api("/projects/#{project.id}/variables/#{variable.id}")
 
expect(response.status).to eq(401)
end
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