summaryrefslogtreecommitdiff
path: root/spec/requests/api/integrations_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/api/integrations_spec.rb')
-rw-r--r--spec/requests/api/integrations_spec.rb29
1 files changed, 24 insertions, 5 deletions
diff --git a/spec/requests/api/integrations_spec.rb b/spec/requests/api/integrations_spec.rb
index 220c58afbe9..96cc101e73a 100644
--- a/spec/requests/api/integrations_spec.rb
+++ b/spec/requests/api/integrations_spec.rb
@@ -55,7 +55,7 @@ RSpec.describe API::Integrations do
describe "PUT /projects/:id/#{endpoint}/#{integration.dasherize}" do
include_context integration
- it "updates #{integration} settings" do
+ it "updates #{integration} settings and returns the correct fields" do
put api("/projects/#{project.id}/#{endpoint}/#{dashed_integration}", user), params: integration_attrs
expect(response).to have_gitlab_http_status(:ok)
@@ -80,6 +80,8 @@ RSpec.describe API::Integrations do
expect(project.integrations.first[event]).not_to eq(current_integration[event]),
"expected #{!current_integration[event]} for event #{event} for #{endpoint} #{current_integration.title}, got #{current_integration[event]}"
end
+
+ assert_correct_response_fields(json_response['properties'].keys, current_integration)
end
it "returns if required fields missing" do
@@ -142,22 +144,24 @@ RSpec.describe API::Integrations do
expect(response).to have_gitlab_http_status(:unauthorized)
end
- it "returns all properties of active integration #{integration}" do
+ it "returns all properties of active integration #{integration}, except password fields" do
get api("/projects/#{project.id}/#{endpoint}/#{dashed_integration}", user)
expect(initialized_integration).to be_active
expect(response).to have_gitlab_http_status(:ok)
- expect(json_response['properties'].keys).to match_array(integration_instance.api_field_names)
+
+ assert_correct_response_fields(json_response['properties'].keys, integration_instance)
end
- it "returns all properties of inactive integration #{integration}" do
+ it "returns all properties of inactive integration #{integration}, except password fields" do
deactive_integration!
get api("/projects/#{project.id}/#{endpoint}/#{dashed_integration}", user)
expect(initialized_integration).not_to be_active
expect(response).to have_gitlab_http_status(:ok)
- expect(json_response['properties'].keys).to match_array(integration_instance.api_field_names)
+
+ assert_correct_response_fields(json_response['properties'].keys, integration_instance)
end
it "returns not found if integration does not exist" do
@@ -369,5 +373,20 @@ RSpec.describe API::Integrations do
end
end
end
+
+ private
+
+ def assert_correct_response_fields(response_keys, integration)
+ assert_fields_match_integration(response_keys, integration)
+ assert_secret_fields_filtered(response_keys, integration)
+ end
+
+ def assert_fields_match_integration(response_keys, integration)
+ expect(response_keys).to match_array(integration.api_field_names)
+ end
+
+ def assert_secret_fields_filtered(response_keys, integration)
+ expect(response_keys).not_to include(*integration.secret_fields)
+ end
end
end