Commit 5b4dc684 authored by Ash McKenzie's avatar Ash McKenzie

Merge branch 'add-edit-path-to-dast-site-profiles-query-233401' into 'master'

Add editPath to DastSiteProfileType for GraphQL

See merge request gitlab-org/gitlab!38764
parents ad6947bb 0568c5e3
......@@ -2746,6 +2746,11 @@ type DastScannerProfileEdge {
Represents a DAST Site Profile.
"""
type DastSiteProfile {
"""
Relative web path to the edit page of a site profile
"""
editPath: String
"""
ID of the site profile
"""
......
......@@ -7395,6 +7395,20 @@
"name": "DastSiteProfile",
"description": "Represents a DAST Site Profile.",
"fields": [
{
"name": "editPath",
"description": "Relative web path to the edit page of a site profile",
"args": [
],
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "id",
"description": "ID of the site profile",
......@@ -453,6 +453,7 @@ Represents a DAST Site Profile.
| Name | Type | Description |
| --- | ---- | ---------- |
| `editPath` | String | Relative web path to the edit page of a site profile |
| `id` | DastSiteProfileID! | ID of the site profile |
| `profileName` | String | The name of the site profile |
| `targetUrl` | String | The URL of the target to be scanned |
......
......@@ -20,6 +20,12 @@ module Types
description: 'The URL of the target to be scanned',
resolve: -> (obj, _args, _ctx) { obj.dast_site.url }
field :edit_path, GraphQL::STRING_TYPE, null: true,
description: 'Relative web path to the edit page of a site profile',
resolve: -> (obj, _args, _ctx) do
Rails.application.routes.url_helpers.edit_project_dast_site_profile_path(obj.project, obj)
end
field :validation_status, Types::DastSiteProfileValidationStatusEnum, null: true,
description: 'The current validation status of the site profile',
resolve: -> (_obj, _args, _ctx) { Types::DastSiteProfileValidationStatusEnum.enum['pending_validation'] }
......
......@@ -6,7 +6,7 @@ RSpec.describe GitlabSchema.types['DastSiteProfile'] do
let_it_be(:dast_site_profile) { create(:dast_site_profile) }
let_it_be(:project) { dast_site_profile.project }
let_it_be(:user) { create(:user) }
let_it_be(:fields) { %i[id profileName targetUrl validationStatus userPermissions] }
let_it_be(:fields) { %i[id profileName targetUrl editPath validationStatus userPermissions] }
subject do
GitlabSchema.execute(
......@@ -44,6 +44,7 @@ RSpec.describe GitlabSchema.types['DastSiteProfile'] do
id
profileName
targetUrl
editPath
validationStatus
}
}
......@@ -74,10 +75,28 @@ RSpec.describe GitlabSchema.types['DastSiteProfile'] do
end
end
describe 'edit_path field' do
it 'is the relative path to edit the dast_site_profile' do
path = "/#{project.full_path}/-/on_demand_scans/profiles/dast_site_profiles/#{dast_site_profile.id}/edit"
expect(first_dast_site_profile['editPath']).to eq(path)
end
end
describe 'validation_status field' do
it 'is a placeholder validation status' do
expect(first_dast_site_profile['validationStatus']).to eq('PENDING_VALIDATION')
end
end
context 'when there are no dast_site_profiles' do
let(:project) { create(:project) }
it 'has no nodes' do
nodes = subject.dig('data', 'project', 'dastSiteProfiles', 'nodes')
expect(nodes).to be_empty
end
end
end
end
......@@ -21,6 +21,7 @@ RSpec.describe 'Query.project(fullPath).dastSiteProfiles' do
id
profileName
targetUrl
editPath
validationStatus
}
}
......
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