Commit 3a44ee7e authored by Alan (Maciej) Paruszewski's avatar Alan (Maciej) Paruszewski Committed by charlie ablett

Update RemoveProjectFromSecurityDashboard mutation to use new GlobalID

This changes the RemoveProjectFromSecurityDashbiard  mutation to use
the new `GlobalID` types for arguments, with the temporary
compatibility layer.
parent 909b501f
......@@ -1274,7 +1274,6 @@ Graphql/IDType:
Exclude:
- 'ee/app/graphql/ee/mutations/issues/update.rb'
- 'ee/app/graphql/ee/types/boards/board_issue_input_base_type.rb'
- 'ee/app/graphql/mutations/instance_security_dashboard/remove_project.rb'
- 'ee/app/graphql/mutations/issues/set_epic.rb'
- 'ee/app/graphql/mutations/iterations/update.rb'
- 'ee/app/graphql/resolvers/iterations_resolver.rb'
......
......@@ -16396,7 +16396,7 @@ input RemoveProjectFromSecurityDashboardInput {
"""
ID of the project to remove from the Instance Security Dashboard
"""
id: ID!
id: ProjectID!
}
"""
......
......@@ -47191,7 +47191,7 @@
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "ID",
"name": "ProjectID",
"ofType": null
}
},
......@@ -7,7 +7,7 @@ module Mutations
authorize :read_instance_security_dashboard
argument :id, GraphQL::ID_TYPE,
argument :id, Types::GlobalIDType[::Project],
required: true,
description: 'ID of the project to remove from the Instance Security Dashboard'
......@@ -31,7 +31,9 @@ module Mutations
def extract_project_id(gid)
return unless gid.present?
GitlabSchema.parse_gid(gid, expected_type: ::Project).model_id
# TODO: remove explicit coercion once compatibility layer has been removed
# See: https://gitlab.com/gitlab-org/gitlab/-/issues/257883
Types::GlobalIDType[::Project].coerce_isolated_input(gid).model_id
end
def remove_project(project_id)
......
---
title: Update RemoveProjectFromSecurityDashboard mutation to use new Global IDs
merge_request: 45500
author:
type: changed
......@@ -45,6 +45,17 @@ RSpec.describe Mutations::InstanceSecurityDashboard::RemoveProject do
it { is_expected.to eq(errors: ['The project does not belong to your dashboard or you don\'t have permission to perform this action']) }
end
context 'when provided project_id is not a Project' do
let(:project_id) { 'gid://gitlab/Vulnerability/1' }
it 'raises an error' do
expect { subject }.to raise_error(
GraphQL::CoercionError,
"\"#{project_id}\" does not represent an instance of Project"
)
end
end
context 'when project is configured in security dashboard' do
let(:project_id) { GitlabSchema.id_from_object(already_added_project) }
......
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