API and doc for protected variables
This commit is contained in:
parent
efebdba21d
commit
bd66bf08b5
|
@ -62,10 +62,11 @@ POST /projects/:id/variables
|
|||
```
|
||||
|
||||
| Attribute | Type | required | Description |
|
||||
|-----------|---------|----------|-----------------------|
|
||||
|-------------|---------|----------|-----------------------|
|
||||
| `id` | integer/string | yes | The ID of a project or [urlencoded NAMESPACE/PROJECT_NAME of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
|
||||
| `key` | string | yes | The `key` of a variable; must have no more than 255 characters; only `A-Z`, `a-z`, `0-9`, and `_` are allowed |
|
||||
| `value` | string | yes | The `value` of a variable |
|
||||
| `protected` | boolean | no | Whether the variable is protected |
|
||||
|
||||
```
|
||||
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/1/variables" --form "key=NEW_VARIABLE" --form "value=new value"
|
||||
|
@ -74,7 +75,8 @@ curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitl
|
|||
```json
|
||||
{
|
||||
"key": "NEW_VARIABLE",
|
||||
"value": "new value"
|
||||
"value": "new value",
|
||||
"protected": false
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -87,10 +89,11 @@ PUT /projects/:id/variables/:key
|
|||
```
|
||||
|
||||
| Attribute | Type | required | Description |
|
||||
|-----------|---------|----------|-------------------------|
|
||||
|-------------|---------|----------|-------------------------|
|
||||
| `id` | integer/string | yes | The ID of a project or [urlencoded NAMESPACE/PROJECT_NAME of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
|
||||
| `key` | string | yes | The `key` of a variable |
|
||||
| `value` | string | yes | The `value` of a variable |
|
||||
| `protected` | boolean | no | Whether the variable is protected |
|
||||
|
||||
```
|
||||
curl --request PUT --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/1/variables/NEW_VARIABLE" --form "value=updated value"
|
||||
|
@ -99,7 +102,8 @@ curl --request PUT --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitla
|
|||
```json
|
||||
{
|
||||
"key": "NEW_VARIABLE",
|
||||
"value": "updated value"
|
||||
"value": "updated value",
|
||||
"protected": true
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -670,6 +670,7 @@ module API
|
|||
|
||||
class Variable < Grape::Entity
|
||||
expose :key, :value
|
||||
expose :protected?, as: :protected
|
||||
end
|
||||
|
||||
class Pipeline < PipelineBasic
|
||||
|
|
|
@ -42,6 +42,7 @@ module API
|
|||
params do
|
||||
requires :key, type: String, desc: 'The key of the variable'
|
||||
requires :value, type: String, desc: 'The value of the variable'
|
||||
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)
|
||||
|
@ -59,13 +60,14 @@ module API
|
|||
params do
|
||||
optional :key, type: String, desc: 'The key of the variable'
|
||||
optional :value, type: String, desc: 'The value of the variable'
|
||||
optional :protected, type: String, desc: 'Whether the variable is protected'
|
||||
end
|
||||
put ':id/variables/:key' do
|
||||
variable = user_project.variables.find_by(key: params[:key])
|
||||
|
||||
return not_found!('Variable') unless variable
|
||||
|
||||
if variable.update(value: params[:value])
|
||||
if variable.update(declared_params(include_missing: false).except(:key))
|
||||
present variable, with: Entities::Variable
|
||||
else
|
||||
render_validation_error!(variable)
|
||||
|
|
|
@ -42,6 +42,7 @@ describe API::Variables do
|
|||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(json_response['value']).to eq(variable.value)
|
||||
expect(json_response['protected']).to eq(variable.protected?)
|
||||
end
|
||||
|
||||
it 'responds with 404 Not Found if requesting non-existing variable' do
|
||||
|
@ -72,12 +73,13 @@ describe API::Variables do
|
|||
context 'authorized user with proper permissions' do
|
||||
it 'creates variable' do
|
||||
expect do
|
||||
post api("/projects/#{project.id}/variables", user), key: 'TEST_VARIABLE_2', value: 'VALUE_2'
|
||||
post api("/projects/#{project.id}/variables", user), key: 'TEST_VARIABLE_2', value: 'VALUE_2', protected: true
|
||||
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 eq(true)
|
||||
end
|
||||
|
||||
it 'does not allow to duplicate variable key' do
|
||||
|
@ -112,13 +114,14 @@ describe API::Variables do
|
|||
initial_variable = project.variables.first
|
||||
value_before = initial_variable.value
|
||||
|
||||
put api("/projects/#{project.id}/variables/#{variable.key}", user), value: 'VALUE_1_UP'
|
||||
put api("/projects/#{project.id}/variables/#{variable.key}", user), value: 'VALUE_1_UP', protected: true
|
||||
|
||||
updated_variable = project.variables.first
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(value_before).to eq(variable.value)
|
||||
expect(updated_variable.value).to eq('VALUE_1_UP')
|
||||
expect(updated_variable).to be_protected
|
||||
end
|
||||
|
||||
it 'responds with 404 Not Found if requesting non-existing variable' do
|
||||
|
|
Loading…
Reference in New Issue