git: checkConfig no longer checks repo url. Git being down or latest version being unfetchable should not stop services from starting up.
Package: Remove beta flag, is stable enough for now
This commit is contained in:
parent
33b3d98a37
commit
63a06a2a34
5 changed files with 13 additions and 28 deletions
|
@ -94,7 +94,7 @@ export default class Core {
|
||||||
hasCluster = true
|
hasCluster = true
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.log.error(err, `Error creating application ${name} with provider ${this.db.config[name].provider}: ${err.message}`)
|
this.log.error(err, `Error creating application ${name} with provider ${this.db.config[name].provider} with config ${JSON.stringify(this.db.config[name])}: ${err.message}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,6 +128,7 @@ export default class Core {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (names.length && !this.applications.length) {
|
if (names.length && !this.applications.length) {
|
||||||
|
this.log.error('None of the application were successful in running')
|
||||||
return Promise.reject(new Error('None of the application were successful in running'))
|
return Promise.reject(new Error('None of the application were successful in running'))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,10 +55,5 @@ export default class GitProvider {
|
||||||
if (typeof(this.config.url) !== 'string') return Promise.reject(new Error('url was not a valid url'))
|
if (typeof(this.config.url) !== 'string') return Promise.reject(new Error('url was not a valid url'))
|
||||||
try { new URL(this.config.url) }
|
try { new URL(this.config.url) }
|
||||||
catch (err) { return Promise.reject(new Error('url was not a valid url: ' + err.message)) }
|
catch (err) { return Promise.reject(new Error('url was not a valid url: ' + err.message)) }
|
||||||
|
|
||||||
return this.getLatestVersion()
|
|
||||||
.catch(function(err) {
|
|
||||||
return Promise.reject(new Error(`Error fetching latest release: ${err.message}`))
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "service-core",
|
"name": "service-core",
|
||||||
"version": "3.0.0-beta.16",
|
"version": "3.0.0",
|
||||||
"description": "Core boiler plate code to install node server as windows service",
|
"description": "Core boiler plate code to install node server as windows service",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -18,26 +18,24 @@ t.timeout(5000).describe('#getLatestVersion()', function() {
|
||||||
assert.ok(version.link)
|
assert.ok(version.link)
|
||||||
assert.match(version.link, /\/attachments\//)
|
assert.match(version.link, /\/attachments\//)
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
t.timeout(5000).describe('#checkConfig()', function() {
|
|
||||||
t.test('should fail if link does not return json repository object', async function() {
|
t.test('should fail if link does not return json repository object', async function() {
|
||||||
let err = await assert.isRejected(new GitProvider({ url: 'http://git.nfp.is/api/v1/repos/thething/ProgramQueuer' }).checkConfig())
|
let err = await assert.isRejected(new GitProvider({ url: 'http://git.nfp.is/api/v1/repos/thething/ProgramQueuer' }).getLatestVersion())
|
||||||
assert.match(err.message, /valid/i)
|
assert.match(err.message, /valid/i)
|
||||||
assert.match(err.message, /repository/i)
|
assert.match(err.message, /repository/i)
|
||||||
err = await assert.isRejected(new GitProvider({ url: 'http://git.nfp.is/api/v1/orgs/nfp/repos' }).checkConfig())
|
err = await assert.isRejected(new GitProvider({ url: 'http://git.nfp.is/api/v1/orgs/nfp/repos' }).getLatestVersion())
|
||||||
assert.match(err.message, /service-core/i)
|
assert.match(err.message, /service-core/i)
|
||||||
assert.match(err.message, /release/i)
|
assert.match(err.message, /release/i)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.test('should fail if no active release repository with assets', async function() {
|
t.test('should fail if no active release repository with assets', async function() {
|
||||||
let err = await assert.isRejected(new GitProvider({ url: 'https://git.nfp.is/api/v1/repos/thething/eltro/releases' }).checkConfig())
|
let err = await assert.isRejected(new GitProvider({ url: 'https://git.nfp.is/api/v1/repos/thething/eltro/releases' }).getLatestVersion())
|
||||||
assert.match(err.message, /service-core/i)
|
assert.match(err.message, /service-core/i)
|
||||||
assert.match(err.message, /release/i)
|
assert.match(err.message, /release/i)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.test('should fail on private repositories', async function() {
|
t.test('should fail on private repositories', async function() {
|
||||||
let err = await assert.isRejected(new GitProvider({ url: 'https://git.nfp.is/api/v1/repos/TheThing/privateexample/releases' }).checkConfig())
|
let err = await assert.isRejected(new GitProvider({ url: 'https://git.nfp.is/api/v1/repos/TheThing/privateexample/releases' }).getLatestVersion())
|
||||||
assert.match(err.message, /fail/i)
|
assert.match(err.message, /fail/i)
|
||||||
assert.match(err.message, /404/i)
|
assert.match(err.message, /404/i)
|
||||||
assert.match(err.message, /release/i)
|
assert.match(err.message, /release/i)
|
||||||
|
@ -45,19 +43,19 @@ t.timeout(5000).describe('#checkConfig()', function() {
|
||||||
|
|
||||||
t.test('should otherwise succeed', function() {
|
t.test('should otherwise succeed', function() {
|
||||||
return new GitProvider({ url: 'https://git.nfp.is/api/v1/repos/TheThing/sc-helloworld/releases' })
|
return new GitProvider({ url: 'https://git.nfp.is/api/v1/repos/TheThing/sc-helloworld/releases' })
|
||||||
.checkConfig()
|
.getLatestVersion()
|
||||||
})
|
})
|
||||||
|
|
||||||
let test = t
|
let test = t
|
||||||
if (!process.env.gittesttoken) {
|
if (!process.env.gittesttoken) {
|
||||||
console.log('Skipping "git.test.integration: #checkConfig() should succeed on private repo with token"')
|
console.log('Skipping "git.test.integration: #getLatestVersion() should succeed on private repo with token"')
|
||||||
test = test.skip()
|
test = test.skip()
|
||||||
}
|
}
|
||||||
test.test('should succeed on private repo with token', function() {
|
test.test('should succeed on private repo with token', function() {
|
||||||
return new GitProvider({
|
return new GitProvider({
|
||||||
token: process.env.gittesttoken.trim(),
|
token: process.env.gittesttoken.trim(),
|
||||||
url: 'https://git.nfp.is/api/v1/repos/TheThing/privateexample/releases',
|
url: 'https://git.nfp.is/api/v1/repos/TheThing/privateexample/releases',
|
||||||
}).checkConfig()
|
}).getLatestVersion()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -190,19 +190,10 @@ t.describe('#checkConfig()', function() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
t.test('should call requester with correct config and url', async function() {
|
t.test('should not call requester with correct config and url', async function() {
|
||||||
const assertError = new Error('Toki wo Koeta Yoru')
|
|
||||||
const assertRequestConfig = { a: 1 }
|
|
||||||
const assertUrl = 'http://test'
|
const assertUrl = 'http://test'
|
||||||
|
|
||||||
let provider = new GitProvider({ url: assertUrl }, stub())
|
let provider = new GitProvider({ url: assertUrl }, stub())
|
||||||
provider.requestConfig = assertRequestConfig
|
let err = await provider.checkConfig()
|
||||||
provider.requester.rejects(assertError)
|
assert.notOk(provider.requester.called)
|
||||||
|
|
||||||
let err = await assert.isRejected(provider.checkConfig())
|
|
||||||
assert.notStrictEqual(err, assertError)
|
|
||||||
assert.match(err.message, new RegExp(assertError.message))
|
|
||||||
assert.strict(provider.requester.firstCall[0], assertRequestConfig)
|
|
||||||
assert.strict(provider.requester.firstCall[1], assertUrl)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue