kosmos/akkounts-api
Archived
8
1

Compare commits

...

4 Commits

Author SHA1 Message Date
f3c7dc72dc
1.2.1 2019-10-18 15:43:52 +02:00
87173371b8
Merge pull request #8 from 67P/bugfix/webhook
Fix BTCPay webhook not returning response
2019-10-18 15:43:23 +02:00
154c778fea
Fix typo 2019-10-18 15:39:15 +02:00
4518cc84c2
Fix BTCPay webhook not returning response
Adds a test for successful Webhook responses and fixes the missing
return.
2019-10-18 15:35:14 +02:00
6 changed files with 42 additions and 5 deletions

View File

@ -36,13 +36,15 @@ class MastodonBtcPayHookRoute extends BaseRoute {
content: message
}).then(() => res.status(200))
.catch(err => this.handleError(res, err))
return res.status(200).json({ status: 'OK' })
}
private createMessage (inviteCode: String) {
const inviteUrl = `${process.env.MASTODON_HOST}/invite/${inviteCode}`
const message = 'Here\'s your invite link for creating an account on kosmos.social:'
+ `\n\n${inviteUrl}\n\n`
+ 'Thanks a lot for supporting community service providers!'
+ 'Welcome to the community!'
return message
}

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "akkounts-api",
"version": "1.2.0",
"version": "1.2.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "akkounts-api",
"version": "1.2.0",
"version": "1.2.1",
"private": true,
"description": "Back-end for Kosmos Accounts app",
"main": "release/index.js",

View File

@ -39,13 +39,14 @@ class MastodonBtcPayHookRoute extends base_1.default {
content: message
}).then(() => res.status(200))
.catch(err => this.handleError(res, err));
return res.status(200).json({ status: 'OK' });
});
}
createMessage(inviteCode) {
const inviteUrl = `${process.env.MASTODON_HOST}/invite/${inviteCode}`;
const message = 'Here\'s your invite link for creating an account on kosmos.social:'
+ `\n\n${inviteUrl}\n\n`
+ 'Thanks a lot for supporting community service providers!';
+ 'Welcome to the community!';
return message;
}
createInvite() {

View File

@ -1 +1 @@
{"version":3,"file":"btcpay_hook.js","sourceRoot":"","sources":["../../../../../app/routes/accounts/mastodon/btcpay_hook.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,+BAA8B;AAE9B,qCAAkC;AAElC,wDAAkD;AAElD,MAAM,uBAAwB,SAAQ,cAAS;IAC7C,gBAAiB,KAAK,EAAE,CAAA,CAAC,CAAC;IAEnB,MAAM,CAAC,MAAM,CAAE,MAAc;QAClC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACzD,IAAI,uBAAuB,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,OAAO,CAAE,GAAY,EAAE,GAAa;;YAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,cAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;YACzC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,cAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;YAE5C,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAE3D,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC;mBAClC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;gBAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC1B,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;iBACnC,CAAC,CAAA;aACH;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;YACxC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAA;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAE/C,qBAAQ,CAAC;gBACP,SAAS;gBACT,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC3B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAC7C,CAAC;KAAA;IAEO,aAAa,CAAE,UAAkB;QACvC,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,UAAU,EAAE,CAAA;QACrE,MAAM,OAAO,GAAG,oEAAoE;cACpE,OAAO,SAAS,MAAM;cACtB,0DAA0D,CAAA;QAC1E,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,YAAY;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;aAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;aAC3B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;CACF;AAED,kBAAe,uBAAuB,CAAA"}
{"version":3,"file":"btcpay_hook.js","sourceRoot":"","sources":["../../../../../app/routes/accounts/mastodon/btcpay_hook.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,+BAA8B;AAE9B,qCAAkC;AAElC,wDAAkD;AAElD,MAAM,uBAAwB,SAAQ,cAAS;IAC7C,gBAAiB,KAAK,EAAE,CAAA,CAAC,CAAC;IAEnB,MAAM,CAAC,MAAM,CAAE,MAAc;QAClC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACzD,IAAI,uBAAuB,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,OAAO,CAAE,GAAY,EAAE,GAAa;;YAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,cAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;YACzC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,cAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;YAE5C,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAE3D,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC;mBAClC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;gBAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC1B,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;iBACnC,CAAC,CAAA;aACH;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;YACxC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAA;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAE/C,qBAAQ,CAAC;gBACP,SAAS;gBACT,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC3B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;YAE3C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,CAAC;KAAA;IAEO,aAAa,CAAE,UAAkB;QACvC,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,UAAU,EAAE,CAAA;QACrE,MAAM,OAAO,GAAG,oEAAoE;cACpE,OAAO,SAAS,MAAM;cACtB,2BAA2B,CAAA;QAC3C,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,YAAY;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;aAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;aAC3B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;CACF;AAED,kBAAe,uBAAuB,CAAA"}

View File

@ -6,6 +6,10 @@ setup()
describe('POST /accounts/mastodon/btcpay_hook', () => {
before(() => {
process.env.BTCPAY_WEBHOOK_TOKEN = 'supersecure'
})
describe('auth token missing', () => {
it('returns an error', async () => {
await supertest
@ -32,4 +36,34 @@ describe('POST /accounts/mastodon/btcpay_hook', () => {
})
})
describe('successful request', () => {
before(() => {
sandbox
.stub(BaseRoute.prototype, 'createMastodonClient')
.returns({
post: url => {
return Promise.resolve({
data: { code: '123abc' }
})
}
})
})
it('returns a 200', async () => {
await supertest
.post('/accounts/mastodon/btcpay_hook?token=supersecure')
.set('Content-Type', 'application/json')
.send({
buyerFields: {
buyerEmail: 'satoshi@kosmos.org'
},
status: 'confirmed'
})
.expect(200)
.then(res => {
expect(res.body.status).to.eq('OK')
})
})
})
})