migrate some services from examples to openApi part 43; affects [jenkins] (#9918)

* update jenkins service tests

* migrate some services from examples to openApi
This commit is contained in:
chris48s
2024-02-04 21:01:53 +00:00
committed by GitHub
parent 8e7d44c349
commit 1ed54400aa
5 changed files with 67 additions and 55 deletions

View File

@@ -1,4 +1,5 @@
import Joi from 'joi'
import { queryParam } from '../index.js'
import { renderBuildStatusBadge } from '../build-status.js'
import JenkinsBase from './jenkins-base.js'
import {
@@ -40,16 +41,20 @@ export default class JenkinsBuild extends JenkinsBase {
queryParamSchema,
}
static examples = [
{
title: 'Jenkins',
namedParams: {},
queryParams: {
jobUrl: 'https://wso2.org/jenkins/view/All%20Builds/job/archetypes',
static openApi = {
'/jenkins/build': {
get: {
summary: 'Jenkins Build',
parameters: [
queryParam({
name: 'jobUrl',
example: 'https://ci.eclipse.org/jgit/job/jgit',
required: true,
}),
],
},
staticPreview: renderBuildStatusBadge({ status: 'passing' }),
},
]
}
static defaultBadgeData = { label: 'build' }

View File

@@ -14,9 +14,7 @@ t.create('build job not found')
t.create('build found (view)')
.get(
`/build.json?jobUrl=${encodeURIComponent(
'https://wso2.org/jenkins/view/All Builds/job/archetypes',
)}`,
'/build.json?jobUrl=https://jenkins.sqlalchemy.org/view/alembic/job/alembic_coverage/',
)
.expectBadge({ label: 'build', message: isJenkinsBuildStatus })

View File

@@ -1,4 +1,5 @@
import Joi from 'joi'
import { pathParam, queryParam } from '../index.js'
import { coveragePercentage } from '../color-formatters.js'
import JenkinsBase from './jenkins-base.js'
import {
@@ -87,7 +88,7 @@ const formatMap = {
},
}
const documentation = `
const description = `
<p>
We support coverage metrics from a variety of Jenkins plugins:
<ul>
@@ -107,20 +108,26 @@ export default class JenkinsCoverage extends JenkinsBase {
queryParamSchema,
}
static examples = [
{
title: 'Jenkins Coverage',
namedParams: {
format: 'cobertura',
static openApi = {
'/jenkins/coverage/{format}': {
get: {
summary: 'Jenkins Coverage',
description,
parameters: [
pathParam({
name: 'format',
example: 'cobertura',
schema: { type: 'string', enum: this.getEnum('format') },
}),
queryParam({
name: 'jobUrl',
example: 'https://jenkins.sqlalchemy.org/job/alembic_coverage',
required: true,
}),
],
},
queryParams: {
jobUrl: 'https://jenkins.sqlalchemy.org/job/alembic_coverage',
},
keywords: ['jacoco', 'cobertura', 'llvm-cov', 'istanbul'],
staticPreview: this.render({ coverage: 95 }),
documentation,
},
]
}
static defaultBadgeData = { label: 'coverage' }

View File

@@ -10,13 +10,13 @@ export const t = await createServiceTester()
t.create('jacoco: job found')
.get(
`/jacoco.json?jobUrl=${encodeURIComponent(
'https://wso2.org/jenkins/view/All%20Builds/job/archetypes',
'https://ci-maven.apache.org/job/Maven/job/maven-box/job/maven-surefire/job/master',
)}`,
)
.expectBadge({ label: 'coverage', message: isIntegerPercentage })
t.create('jacoco: job not found')
.get('/jacoco.json?jobUrl=https://wso2.org/jenkins/job/does-not-exist')
.get('/jacoco.json?jobUrl=https://ci-maven.apache.org/job/does-not-exist')
.expectBadge({ label: 'coverage', message: 'job or coverage not found' })
t.create('cobertura: job not found')
@@ -31,12 +31,6 @@ t.create('cobertura: job found')
)
.expectBadge({ label: 'coverage', message: isIntegerPercentage })
t.create('code coverage API v1: job not found')
.get(
'/apiv1.json?jobUrl=https://jenkins.library.illinois.edu/job/does-not-exist',
)
.expectBadge({ label: 'coverage', message: 'job or coverage not found' })
const coverageApiV1Response = {
_class: 'io.jenkins.plugins.coverage.targets.CoverageResult',
results: {
@@ -66,9 +60,17 @@ t.create('code coverage API v1: job found')
)
.expectBadge({ label: 'coverage', message: isIntegerPercentage })
t.create('code coverage API v4+: job not found')
t.create('code coverage API v1: job not found')
.get(
'/apiv4.json?jobUrl=https://jenkins.library.illinois.edu/job/does-not-exist',
'/apiv1.json?jobUrl=http://loneraver.duckdns.org:8082/job/does-not-exist',
)
.intercept(nock =>
nock(
'http://loneraver.duckdns.org:8082/job/does-not-exist/lastCompletedBuild',
)
.get('/coverage/result/api/json')
.query(true)
.reply(404),
)
.expectBadge({ label: 'coverage', message: 'job or coverage not found' })
@@ -77,3 +79,7 @@ t.create('code coverage API v4+: job found')
'/apiv4.json?jobUrl=https://jenkins.mm12.xyz/jenkins/job/nmfu/job/master',
)
.expectBadge({ label: 'coverage', message: isIntegerPercentage })
t.create('code coverage API v4+: job not found')
.get('/apiv4.json?jobUrl=https://jenkins.mm12.xyz/jenkins/job/does-not-exist')
.expectBadge({ label: 'coverage', message: 'job or coverage not found' })

View File

@@ -1,11 +1,12 @@
import Joi from 'joi'
import {
documentation,
documentation as description,
testResultQueryParamSchema,
testResultOpenApiQueryParams,
renderTestResultBadge,
} from '../test-results.js'
import { optionalNonNegativeInteger } from '../validators.js'
import { InvalidResponse } from '../index.js'
import { InvalidResponse, queryParam } from '../index.js'
import JenkinsBase from './jenkins-base.js'
import {
buildTreeParamQueryString,
@@ -41,27 +42,22 @@ export default class JenkinsTests extends JenkinsBase {
queryParamSchema: queryParamSchema.concat(testResultQueryParamSchema),
}
static examples = [
{
title: 'Jenkins tests',
namedParams: {},
queryParams: {
compact_message: null,
passed_label: 'passed',
failed_label: 'failed',
skipped_label: 'skipped',
jobUrl: 'https://jenkins.sqlalchemy.org/job/alembic_gerrit',
static openApi = {
'/jenkins/tests': {
get: {
summary: 'Jenkins Tests',
description,
parameters: [
queryParam({
name: 'jobUrl',
example: 'https://jenkins.sqlalchemy.org/job/alembic_gerrit',
required: true,
}),
...testResultOpenApiQueryParams,
],
},
staticPreview: this.render({
passed: 477,
failed: 2,
skipped: 0,
total: 479,
isCompact: false,
}),
documentation,
},
]
}
static defaultBadgeData = { label: 'tests' }