summaryrefslogtreecommitdiff
path: root/spec/requests/api/services_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/api/services_spec.rb')
-rw-r--r--spec/requests/api/services_spec.rb30
1 files changed, 23 insertions, 7 deletions
diff --git a/spec/requests/api/services_spec.rb b/spec/requests/api/services_spec.rb
index e260aa21e25..76a70ab6e9e 100644
--- a/spec/requests/api/services_spec.rb
+++ b/spec/requests/api/services_spec.rb
@@ -19,13 +19,22 @@ describe API::Services do
expect(response).to have_gitlab_http_status(200)
current_service = project.services.first
- event = current_service.event_names.empty? ? "foo" : current_service.event_names.first
- state = current_service[event] || false
+ events = current_service.event_names.empty? ? ["foo"].freeze : current_service.event_names
+ query_strings = []
+ events.each do |event|
+ query_strings << "#{event}=#{!current_service[event]}"
+ end
+ query_strings = query_strings.join('&')
- put api("/projects/#{project.id}/services/#{dashed_service}?#{event}=#{!state}", user), params: service_attrs
+ put api("/projects/#{project.id}/services/#{dashed_service}?#{query_strings}", user), params: service_attrs
expect(response).to have_gitlab_http_status(200)
- expect(project.services.first[event]).not_to eq(state) unless event == "foo"
+ events.each do |event|
+ next if event == "foo"
+
+ expect(project.services.first[event]).not_to eq(current_service[event]),
+ "expected #{!current_service[event]} for event #{event} for service #{current_service.title}, got #{current_service[event]}"
+ end
end
it "returns if required fields missing" do
@@ -70,9 +79,7 @@ describe API::Services do
include_context service
# inject some properties into the service
- before do
- initialize_service(service)
- end
+ let!(:initialized_service) { initialize_service(service) }
it 'returns authentication error when unauthenticated' do
get api("/projects/#{project.id}/services/#{dashed_service}")
@@ -93,6 +100,15 @@ describe API::Services do
expect(json_response['properties'].keys).to match_array(service_instance.api_field_names)
end
+ it "returns empty hash if properties are empty" do
+ # deprecated services are not valid for update
+ initialized_service.update_attribute(:properties, {})
+ get api("/projects/#{project.id}/services/#{dashed_service}", user)
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response['properties'].keys).to be_empty
+ end
+
it "returns error when authenticated but not a project owner" do
project.add_developer(user2)
get api("/projects/#{project.id}/services/#{dashed_service}", user2)