Commit a99f32d0 authored by Timo Furrer's avatar Timo Furrer

Validate System Hook responses against schema

parent 83556144
{
"type": "object",
"required": [
"id",
"url",
"created_at",
"push_events",
"tag_push_events",
"merge_requests_events",
"repository_update_events",
"enable_ssl_verification"
],
"properties": {
"id": { "type": "integer" },
"url": { "type": "string" },
"created_at": { "type": "string" },
"push_events": { "type": "boolean" },
"tag_push_events": { "type": "boolean" },
"merge_requests_events": { "type": "boolean" },
"repository_update_events": { "type": "boolean" },
"enable_ssl_verification": { "type": "boolean" }
},
"additionalProperties": false
}
{
"type": "array",
"items": {
"type": "object",
"properties" : {
"$ref": "./system_hook.json"
}
}
}
...@@ -36,7 +36,7 @@ RSpec.describe API::SystemHooks do ...@@ -36,7 +36,7 @@ RSpec.describe API::SystemHooks do
expect(response).to have_gitlab_http_status(:ok) expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(response).to match_response_schema('public_api/v4/system_hooks')
expect(json_response.first).not_to have_key("token") expect(json_response.first).not_to have_key("token")
expect(json_response.first['url']).to eq(hook.url) expect(json_response.first['url']).to eq(hook.url)
expect(json_response.first['push_events']).to be false expect(json_response.first['push_events']).to be false
...@@ -70,6 +70,7 @@ RSpec.describe API::SystemHooks do ...@@ -70,6 +70,7 @@ RSpec.describe API::SystemHooks do
get api("/hooks/#{hook.id}", admin) get api("/hooks/#{hook.id}", admin)
expect(response).to have_gitlab_http_status(:ok) expect(response).to have_gitlab_http_status(:ok)
expect(response).to match_response_schema('public_api/v4/system_hook')
expect(json_response).to match( expect(json_response).to match(
'id' => be(hook.id), 'id' => be(hook.id),
'url' => eq(hook.url), 'url' => eq(hook.url),
...@@ -121,6 +122,7 @@ RSpec.describe API::SystemHooks do ...@@ -121,6 +122,7 @@ RSpec.describe API::SystemHooks do
post api('/hooks', admin), params: { url: 'http://mep.mep' } post api('/hooks', admin), params: { url: 'http://mep.mep' }
expect(response).to have_gitlab_http_status(:created) expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/system_hook')
expect(json_response['enable_ssl_verification']).to be true expect(json_response['enable_ssl_verification']).to be true
expect(json_response['push_events']).to be false expect(json_response['push_events']).to be false
expect(json_response['tag_push_events']).to be false expect(json_response['tag_push_events']).to be false
...@@ -142,6 +144,7 @@ RSpec.describe API::SystemHooks do ...@@ -142,6 +144,7 @@ RSpec.describe API::SystemHooks do
} }
expect(response).to have_gitlab_http_status(:created) expect(response).to have_gitlab_http_status(:created)
expect(response).to match_response_schema('public_api/v4/system_hook')
expect(json_response['enable_ssl_verification']).to be false expect(json_response['enable_ssl_verification']).to be false
expect(json_response['push_events']).to be true expect(json_response['push_events']).to be true
expect(json_response['tag_push_events']).to be true expect(json_response['tag_push_events']).to be true
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment