diff --git a/skills/pncli/checkmarx.md b/skills/pncli/checkmarx.md index 7a45a83..2bd4ac7 100644 --- a/skills/pncli/checkmarx.md +++ b/skills/pncli/checkmarx.md @@ -6,7 +6,7 @@ Enables: `pncli checkmarx project list/get`, `pncli checkmarx scan list/get/stat | Key | Env var | Description | |-----|---------|-------------| -| `checkmarx.baseUrl` | `PNCLI_CHECKMARX_BASE_URL` | Checkmarx One API base, e.g. `https://ast.checkmarx.net` | +| `checkmarx.baseUrl` | `PNCLI_CHECKMARX_BASE_URL` | Checkmarx One API base, e.g. `https://ast.checkmarx.net/api` | | `checkmarx.tenantName` | `PNCLI_CHECKMARX_TENANT_NAME` | IAM realm / tenant name, e.g. `mycompany` | | `checkmarx.apiKey` | `PNCLI_CHECKMARX_API_KEY` | API key created in Checkmarx One IAM (recommended) | | `checkmarx.clientId` | `PNCLI_CHECKMARX_CLIENT_ID` | OAuth2 client ID (alternative to API key) | @@ -18,7 +18,7 @@ short-lived bearer token automatically. No external tools are required. ## Config file (persistent) ``` -pncli config set checkmarx.baseUrl https://ast.checkmarx.net +pncli config set checkmarx.baseUrl https://ast.checkmarx.net/api pncli config set checkmarx.tenantName mycompany pncli config set checkmarx.apiKey ``` @@ -26,7 +26,7 @@ pncli config set checkmarx.apiKey ## Env vars (ephemeral / CI) ``` -export PNCLI_CHECKMARX_BASE_URL=https://ast.checkmarx.net +export PNCLI_CHECKMARX_BASE_URL=https://ast.checkmarx.net/api export PNCLI_CHECKMARX_TENANT_NAME=mycompany export PNCLI_CHECKMARX_API_KEY= ``` @@ -34,5 +34,5 @@ export PNCLI_CHECKMARX_API_KEY= ## Regional deployments For EU or other regional Checkmarx One instances, use the appropriate API base URL -(e.g. `https://eu.ast.checkmarx.net`). pncli derives the matching regional IAM host +(e.g. `https://eu.ast.checkmarx.net/api`). pncli derives the matching regional IAM host (e.g. `https://eu.iam.checkmarx.net`) from that URL. diff --git a/src/services/checkmarx/client.test.ts b/src/services/checkmarx/client.test.ts index 26aa50b..5e731f4 100644 --- a/src/services/checkmarx/client.test.ts +++ b/src/services/checkmarx/client.test.ts @@ -20,7 +20,7 @@ describe('CheckmarxClient', () => { }); await expect(client.listProjects()).resolves.toEqual([]); - expect(checkmarx).toHaveBeenCalledWith('/api/projects', { params: { limit: 100 } }); + expect(checkmarx).toHaveBeenCalledWith('projects', { params: { limit: 100 } }); }); it('returns an empty scan list when Checkmarx responds with null', async () => { @@ -31,7 +31,7 @@ describe('CheckmarxClient', () => { }); await expect(client.listScans({ projectId: 'project-id', last: 25 })).resolves.toEqual([]); - expect(checkmarx).toHaveBeenCalledWith('/api/scans', { + expect(checkmarx).toHaveBeenCalledWith('scans', { params: { limit: 25, 'project-id': 'project-id' } }); }); diff --git a/src/services/checkmarx/client.ts b/src/services/checkmarx/client.ts index 651139f..098480c 100644 --- a/src/services/checkmarx/client.ts +++ b/src/services/checkmarx/client.ts @@ -11,7 +11,7 @@ export class CheckmarxClient { constructor(private http: HttpClient) {} async listProjects(): Promise { - const res = await this.http.checkmarx('/api/projects', { params: { limit: 100 } }); + const res = await this.http.checkmarx('projects', { params: { limit: 100 } }); const projects = res.projects ?? []; if (res.filteredTotalCount > projects.length) { process.stderr.write(`warning: ${res.filteredTotalCount} projects found; only showing first ${projects.length}\n`); @@ -20,13 +20,13 @@ export class CheckmarxClient { } async getProject(id: string): Promise { - return this.http.checkmarx(`/api/projects/${id}`); + return this.http.checkmarx(`projects/${id}`); } async listScans(opts: { projectId?: string; last?: number } = {}): Promise { const params: Record = { limit: opts.last ?? 100 }; if (opts.projectId) params['project-id'] = opts.projectId; - const res = await this.http.checkmarx('/api/scans', { params }); + const res = await this.http.checkmarx('scans', { params }); const scans = res.scans ?? []; if (res.filteredTotalCount > scans.length) { process.stderr.write(`warning: ${res.filteredTotalCount} scans found; only showing first ${scans.length}\n`); @@ -35,11 +35,11 @@ export class CheckmarxClient { } async getScan(id: string): Promise { - return this.http.checkmarx(`/api/scans/${id}`); + return this.http.checkmarx(`scans/${id}`); } async getScanResultsStatistics(scanId: string): Promise { - return this.http.checkmarx('/api/results/summary', { + return this.http.checkmarx('results/summary', { params: { 'scan-id': scanId } }); }