diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-08 06:09:54 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-08 06:09:54 +0000 |
commit | f6cdec670b9b757fc2225a2c6627ab79765e5b8a (patch) | |
tree | 7a1fde030f117b69332d01b22deefd1c81fff458 /spec/requests | |
parent | e2ee1eec50aa8df8543d7ecc585ec0ba5ee544ac (diff) | |
download | gitlab-ce-f6cdec670b9b757fc2225a2c6627ab79765e5b8a.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/requests')
-rw-r--r-- | spec/requests/api/graphql/project/base_service_spec.rb | 47 | ||||
-rw-r--r-- | spec/requests/api/graphql/project/jira_service_spec.rb | 44 | ||||
-rw-r--r-- | spec/requests/api/graphql/project_query_spec.rb | 22 |
3 files changed, 112 insertions, 1 deletions
diff --git a/spec/requests/api/graphql/project/base_service_spec.rb b/spec/requests/api/graphql/project/base_service_spec.rb new file mode 100644 index 00000000000..8199f331fbf --- /dev/null +++ b/spec/requests/api/graphql/project/base_service_spec.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'query Jira service' do + include GraphqlHelpers + + let_it_be(:current_user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:jira_service) { create(:jira_service, project: project) } + let_it_be(:bugzilla_service) { create(:bugzilla_service, project: project) } + let_it_be(:redmine_service) { create(:redmine_service, project: project) } + + let(:query) do + %( + query { + project(fullPath: "#{project.full_path}") { + services { + nodes { + type + active + } + } + } + } + ) + end + + let(:services) { graphql_data.dig('project', 'services', 'nodes')} + + it_behaves_like 'unauthorized users cannot read services' + + context 'when user can access project services' do + before do + project.add_maintainer(current_user) + post_graphql(query, current_user: current_user) + end + + it_behaves_like 'a working graphql query' + + it 'retuns list of jira imports' do + service_types = services.map { |s| s['type'] } + + expect(service_types).to match_array(%w(BugzillaService JiraService RedmineService)) + end + end +end diff --git a/spec/requests/api/graphql/project/jira_service_spec.rb b/spec/requests/api/graphql/project/jira_service_spec.rb new file mode 100644 index 00000000000..4ac598b789f --- /dev/null +++ b/spec/requests/api/graphql/project/jira_service_spec.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'query Jira service' do + include GraphqlHelpers + + let_it_be(:current_user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:jira_service) { create(:jira_service, project: project) } + + let(:query) do + %( + query { + project(fullPath: "#{project.full_path}") { + services(active: true, type: JIRA_SERVICE) { + nodes { + type + } + } + } + } + ) + end + + let(:services) { graphql_data.dig('project', 'services', 'nodes')} + + it_behaves_like 'unauthorized users cannot read services' + + context 'when user can access project services' do + before do + project.add_maintainer(current_user) + post_graphql(query, current_user: current_user) + end + + it_behaves_like 'a working graphql query' + + it 'retuns list of jira imports' do + service = services.first + + expect(service['type']).to eq('JiraService') + end + end +end diff --git a/spec/requests/api/graphql/project_query_spec.rb b/spec/requests/api/graphql/project_query_spec.rb index fbb22958d51..035894c8022 100644 --- a/spec/requests/api/graphql/project_query_spec.rb +++ b/spec/requests/api/graphql/project_query_spec.rb @@ -9,7 +9,27 @@ describe 'getting project information' do let(:current_user) { create(:user) } let(:query) do - graphql_query_for('project', 'fullPath' => project.full_path) + graphql_query_for( + 'project', + { 'fullPath' => project.full_path }, + all_graphql_fields_for('project'.to_s.classify, excluded: %w(jiraImports services)) + ) + end + + context 'when the user has full access to the project' do + let(:full_access_query) do + graphql_query_for('project', 'fullPath' => project.full_path) + end + + before do + project.add_maintainer(current_user) + end + + it 'includes the project' do + post_graphql(query, current_user: current_user) + + expect(graphql_data['project']).not_to be_nil + end end context 'when the user has access to the project' do |