* fix sonar tests * migrate some services from examples to openApi * migrate some services from examples to openApi
322 lines
7.5 KiB
JavaScript
322 lines
7.5 KiB
JavaScript
import Joi from 'joi'
|
|
import { ServiceTester } from '../tester.js'
|
|
import {
|
|
isDefaultTestTotals,
|
|
isDefaultCompactTestTotals,
|
|
isCustomTestTotals,
|
|
isCustomCompactTestTotals,
|
|
isIntegerPercentage,
|
|
isMetric,
|
|
} from '../test-validators.js'
|
|
export const t = new ServiceTester({
|
|
id: 'SonarTests',
|
|
title: 'SonarTests',
|
|
pathPrefix: '/sonar',
|
|
})
|
|
const isMetricAllowZero = Joi.alternatives(
|
|
isMetric,
|
|
Joi.number().valid(0).required(),
|
|
)
|
|
|
|
// The service tests targeting the legacy SonarQube API are mocked
|
|
// because of the lack of publicly accessible, self-hosted, legacy SonarQube instances
|
|
// See https://github.com/badges/shields/issues/4221#issuecomment-546611598 for more details
|
|
// This is an uncommon scenario Shields has to support for Sonar, and should not be used as a model
|
|
// for other service tests.
|
|
|
|
t.create('Tests')
|
|
.timeout(10000)
|
|
.get('/tests/WebExtensions.Net.json?server=https://sonarcloud.io')
|
|
.expectBadge({
|
|
label: 'tests',
|
|
message: isDefaultTestTotals,
|
|
})
|
|
|
|
t.create('Tests (branch)')
|
|
.timeout(10000)
|
|
.get('/tests/WebExtensions.Net/main.json?server=https://sonarcloud.io')
|
|
.expectBadge({
|
|
label: 'tests',
|
|
message: isDefaultTestTotals,
|
|
})
|
|
|
|
t.create('Tests (legacy API supported)')
|
|
.get(
|
|
'/tests/org.ow2.petals%3Apetals-se-ase.json?server=http://sonar.petalslink.com&sonarVersion=4.2',
|
|
)
|
|
.intercept(nock =>
|
|
nock('http://sonar.petalslink.com/api')
|
|
.get('/resources')
|
|
.query({
|
|
resource: 'org.ow2.petals:petals-se-ase',
|
|
depth: 0,
|
|
metrics: 'tests,test_failures,skipped_tests',
|
|
includeTrends: true,
|
|
})
|
|
.reply(200, [
|
|
{
|
|
msr: [
|
|
{
|
|
key: 'tests',
|
|
val: '71',
|
|
},
|
|
{
|
|
key: 'test_failures',
|
|
val: '2',
|
|
},
|
|
{
|
|
key: 'skipped_tests',
|
|
val: '1',
|
|
},
|
|
],
|
|
},
|
|
]),
|
|
)
|
|
.expectBadge({
|
|
label: 'tests',
|
|
message: '68 passed, 2 failed, 1 skipped',
|
|
})
|
|
|
|
t.create('Tests with compact message')
|
|
.timeout(10000)
|
|
.get('/tests/WebExtensions.Net.json', {
|
|
qs: {
|
|
compact_message: null,
|
|
server: 'https://sonarcloud.io',
|
|
},
|
|
})
|
|
.expectBadge({ label: 'tests', message: isDefaultCompactTestTotals })
|
|
|
|
t.create('Tests with custom labels')
|
|
.timeout(10000)
|
|
.get('/tests/WebExtensions.Net.json', {
|
|
qs: {
|
|
server: 'https://sonarcloud.io',
|
|
passed_label: 'good',
|
|
failed_label: 'bad',
|
|
skipped_label: 'n/a',
|
|
},
|
|
})
|
|
.expectBadge({ label: 'tests', message: isCustomTestTotals })
|
|
|
|
t.create('Tests with compact message and custom labels')
|
|
.timeout(10000)
|
|
.get('/tests/WebExtensions.Net.json', {
|
|
qs: {
|
|
server: 'https://sonarcloud.io',
|
|
compact_message: null,
|
|
passed_label: '💃',
|
|
failed_label: '🤦♀️',
|
|
skipped_label: '🤷',
|
|
},
|
|
})
|
|
.expectBadge({
|
|
label: 'tests',
|
|
message: isCustomCompactTestTotals,
|
|
})
|
|
|
|
t.create('Total Test Count')
|
|
.timeout(10000)
|
|
.get(
|
|
'/total_tests/swellaby:azdo-shellcheck.json?server=https://sonarcloud.io',
|
|
)
|
|
.expectBadge({
|
|
label: 'total tests',
|
|
message: isMetric,
|
|
})
|
|
|
|
t.create('Total Test Count (branch)')
|
|
.timeout(10000)
|
|
.get(
|
|
'/total_tests/swellaby:azdo-shellcheck/master.json?server=https://sonarcloud.io',
|
|
)
|
|
.expectBadge({
|
|
label: 'total tests',
|
|
message: isMetric,
|
|
})
|
|
|
|
t.create('Total Test Count (legacy API supported)')
|
|
.get(
|
|
'/total_tests/org.ow2.petals%3Apetals-se-ase.json?server=http://sonar.petalslink.com&sonarVersion=4.2',
|
|
)
|
|
.intercept(nock =>
|
|
nock('http://sonar.petalslink.com/api')
|
|
.get('/resources')
|
|
.query({
|
|
resource: 'org.ow2.petals:petals-se-ase',
|
|
depth: 0,
|
|
metrics: 'tests',
|
|
includeTrends: true,
|
|
})
|
|
.reply(200, [
|
|
{
|
|
msr: [
|
|
{
|
|
key: 'tests',
|
|
val: '132',
|
|
},
|
|
],
|
|
},
|
|
]),
|
|
)
|
|
.expectBadge({
|
|
label: 'total tests',
|
|
message: '132',
|
|
})
|
|
|
|
t.create('Test Failures Count')
|
|
.timeout(10000)
|
|
.get(
|
|
'/test_failures/swellaby:azdo-shellcheck.json?server=https://sonarcloud.io',
|
|
)
|
|
.expectBadge({
|
|
label: 'test failures',
|
|
message: isMetricAllowZero,
|
|
})
|
|
|
|
t.create('Test Failures Count (legacy API supported)')
|
|
.get(
|
|
'/test_failures/org.ow2.petals%3Apetals-se-ase.json?server=http://sonar.petalslink.com&sonarVersion=4.2',
|
|
)
|
|
.intercept(nock =>
|
|
nock('http://sonar.petalslink.com/api')
|
|
.get('/resources')
|
|
.query({
|
|
resource: 'org.ow2.petals:petals-se-ase',
|
|
depth: 0,
|
|
metrics: 'test_failures',
|
|
includeTrends: true,
|
|
})
|
|
.reply(200, [
|
|
{
|
|
msr: [
|
|
{
|
|
key: 'test_failures',
|
|
val: '2',
|
|
},
|
|
],
|
|
},
|
|
]),
|
|
)
|
|
.expectBadge({
|
|
label: 'test failures',
|
|
message: '2',
|
|
})
|
|
|
|
t.create('Test Errors Count')
|
|
.timeout(10000)
|
|
.get(
|
|
'/test_errors/swellaby:azdo-shellcheck.json?server=https://sonarcloud.io',
|
|
)
|
|
.expectBadge({
|
|
label: 'test errors',
|
|
message: isMetricAllowZero,
|
|
})
|
|
|
|
t.create('Test Errors Count (legacy API supported)')
|
|
.get(
|
|
'/test_errors/org.ow2.petals%3Apetals-se-ase.json?server=http://sonar.petalslink.com&sonarVersion=4.2',
|
|
)
|
|
.intercept(nock =>
|
|
nock('http://sonar.petalslink.com/api')
|
|
.get('/resources')
|
|
.query({
|
|
resource: 'org.ow2.petals:petals-se-ase',
|
|
depth: 0,
|
|
metrics: 'test_errors',
|
|
includeTrends: true,
|
|
})
|
|
.reply(200, [
|
|
{
|
|
msr: [
|
|
{
|
|
key: 'test_errors',
|
|
val: '3',
|
|
},
|
|
],
|
|
},
|
|
]),
|
|
)
|
|
.expectBadge({
|
|
label: 'test errors',
|
|
message: '3',
|
|
})
|
|
|
|
t.create('Skipped Tests Count')
|
|
.timeout(10000)
|
|
.get(
|
|
'/skipped_tests/swellaby:azdo-shellcheck.json?server=https://sonarcloud.io',
|
|
)
|
|
.expectBadge({
|
|
label: 'skipped tests',
|
|
message: isMetricAllowZero,
|
|
})
|
|
|
|
t.create('Skipped Tests Count (legacy API supported)')
|
|
.get(
|
|
'/skipped_tests/org.ow2.petals%3Apetals-se-ase.json?server=http://sonar.petalslink.com&sonarVersion=4.2',
|
|
)
|
|
.intercept(nock =>
|
|
nock('http://sonar.petalslink.com/api')
|
|
.get('/resources')
|
|
.query({
|
|
resource: 'org.ow2.petals:petals-se-ase',
|
|
depth: 0,
|
|
metrics: 'skipped_tests',
|
|
includeTrends: true,
|
|
})
|
|
.reply(200, [
|
|
{
|
|
msr: [
|
|
{
|
|
key: 'skipped_tests',
|
|
val: '1',
|
|
},
|
|
],
|
|
},
|
|
]),
|
|
)
|
|
.expectBadge({
|
|
label: 'skipped tests',
|
|
message: '1',
|
|
})
|
|
|
|
t.create('Test Success Rate')
|
|
.timeout(10000)
|
|
.get(
|
|
'/test_success_density/swellaby:azdo-shellcheck.json?server=https://sonarcloud.io',
|
|
)
|
|
.expectBadge({
|
|
label: 'tests',
|
|
message: isIntegerPercentage,
|
|
})
|
|
|
|
t.create('Test Success Rate (legacy API supported)')
|
|
.get(
|
|
'/test_success_density/org.ow2.petals%3Apetals-se-ase.json?server=http://sonar.petalslink.com&sonarVersion=4.2',
|
|
)
|
|
.intercept(nock =>
|
|
nock('http://sonar.petalslink.com/api')
|
|
.get('/resources')
|
|
.query({
|
|
resource: 'org.ow2.petals:petals-se-ase',
|
|
depth: 0,
|
|
metrics: 'test_success_density',
|
|
includeTrends: true,
|
|
})
|
|
.reply(200, [
|
|
{
|
|
msr: [
|
|
{
|
|
key: 'test_success_density',
|
|
val: '97',
|
|
},
|
|
],
|
|
},
|
|
]),
|
|
)
|
|
.expectBadge({
|
|
label: 'tests',
|
|
message: '97%',
|
|
})
|