1. Add validation to BaseSvgScrapingService and update readthedocs accordingly. 2. Rewrite vso and add more tests. Rename it internally to azure-devops. URLs are still `/vso` for now. Should we make a way to let a service register multiple URL patterns? 3. Handle shared code using a functional pattern instead of inheritance. This comes from a discussion https://github.com/badges/shields/pull/2031#issuecomment-417893819. I like the functional approach because it's more direct, nimble, and easy to reason about; plus it allows services to grow from a family of one to two more easily.
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
'use strict'
|
|
|
|
const Joi = require('joi')
|
|
const { isBuildStatus } = require('../test-validators')
|
|
const t = require('../create-service-tester')()
|
|
module.exports = t
|
|
|
|
// https://dev.azure.com/totodem/Shields.io is a public Azure DevOps project
|
|
// solely created for Shields.io testing.
|
|
|
|
t.create('release status is succeeded')
|
|
.get(
|
|
'/azure-devops/release/totodem/8cf3ec0e-d0c2-4fcd-8206-ad204f254a96/1/1.json'
|
|
)
|
|
.expectJSONTypes(
|
|
Joi.object().keys({
|
|
name: 'deployment',
|
|
value: isBuildStatus,
|
|
})
|
|
)
|
|
|
|
t.create('unknown environment')
|
|
.get(
|
|
'/azure-devops/release/totodem/8cf3ec0e-d0c2-4fcd-8206-ad204f254a96/1/515.json'
|
|
)
|
|
.expectJSON({ name: 'deployment', value: 'user or environment not found' })
|
|
|
|
t.create('unknown definition')
|
|
.get(
|
|
'/azure-devops/release/totodem/8cf3ec0e-d0c2-4fcd-8206-ad204f254a96/515/515.json'
|
|
)
|
|
.expectJSON({
|
|
name: 'deployment',
|
|
value: 'inaccessible or definition not found',
|
|
})
|
|
|
|
t.create('unknown project')
|
|
.get('/azure-devops/release/totodem/515/515/515.json')
|
|
.expectJSON({ name: 'deployment', value: 'project not found' })
|
|
|
|
t.create('unknown user')
|
|
.get('/azure-devops/release/this-repo/does-not-exist/1/2.json')
|
|
.expectJSON({ name: 'deployment', value: 'user or environment not found' })
|