Fix optional args for POST :id/variables

Always use declared_params(include_missing: false)
so that we don't give nils for optional arguments
This commit is contained in:
Lin Jen-Shin 2017-06-27 15:20:11 +08:00
parent ad3843aee1
commit 01960fce25
2 changed files with 12 additions and 1 deletions

View File

@ -45,7 +45,7 @@ module API
optional :protected, type: String, desc: 'Whether the variable is protected'
end
post ':id/variables' do
variable = user_project.variables.create(declared(params, include_parent_namespaces: false).to_h)
variable = user_project.variables.create(declared_params(include_missing: false))
if variable.valid?
present variable, with: Entities::Variable

View File

@ -82,6 +82,17 @@ describe API::Variables do
expect(json_response['protected']).to be_truthy
end
it 'creates variable with optional attributes' 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).to have_http_status(201)
expect(json_response['key']).to eq('TEST_VARIABLE_2')
expect(json_response['value']).to eq('VALUE_2')
expect(json_response['protected']).to be_falsey
end
it 'does not allow to duplicate variable key' do
expect do
post api("/projects/#{project.id}/variables", user), key: variable.key, value: 'VALUE_2'