Skip to content

Commit

Permalink
More extensive test
Browse files Browse the repository at this point in the history
  • Loading branch information
richardm-stripe committed Dec 13, 2023
1 parent 287a9fa commit 9ca217f
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions test/telemetry.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import http = require('http');
import {expect} from 'chai';
import {FAKE_API_KEY} from './testUtils.js';
import {StripeResource} from '../src/StripeResource.js';
let testServer = null;

function createTestServer(handlerFunc, cb) {
Expand Down Expand Up @@ -124,6 +125,66 @@ describe('Client Telemetry', () => {
}
);
});
it('Sends usage telemetry when registered', (done) => {
let numRequests = 0;

createTestServer(
(req, res) => {
numRequests += 1;

const telemetry = req.headers['x-stripe-client-telemetry'];

switch (numRequests) {
case 1:
expect(telemetry).to.not.exist;
break;
case 2:
expect(telemetry).to.exist;
expect(
JSON.parse(telemetry).last_request_metrics.request_id
).to.equal('req_1');
expect(
JSON.parse(telemetry).last_request_metrics.usage
).to.deep.equal(['llama', 'bufo' ]);

Check failure on line 148 in test/telemetry.spec.ts

View workflow job for this annotation

GitHub Actions / Build

Delete `·`
break;
default:
expect.fail(`Should not have reached request ${numRequests}`);
}

res.setHeader('Request-Id', `req_${numRequests}`);
res.writeHead(200, {'Content-Type': 'application/json'});
res.end('{}');
},
(host, port) => {
const stripe = require('../src/stripe.cjs.node.js')(
'sk_test_FEiILxKZwnmmocJDUjUNO6pa',
{
telemetry: true,
host,
port,
protocol: 'http',
}
);

const resource = new (StripeResource.extend({
boop: StripeResource.method({
method: 'POST',
fullPath: '/v1/widgets/{widget}/boop',
usage: ['llama', 'bufo' ],

Check failure on line 173 in test/telemetry.spec.ts

View workflow job for this annotation

GitHub Actions / Build

Delete `·`
})}))(stripe)

Check failure on line 174 in test/telemetry.spec.ts

View workflow job for this annotation

GitHub Actions / Build

Replace `}))(stripe)` with `,⏎········}))(stripe);`

return Promise.resolve()
.then(() => resource.boop('w_123'))
.then(() => resource.boop('w_123'))
.then(() => {
expect(numRequests).to.equal(2);
})
.catch(done)
.then(() => done())

Check failure on line 183 in test/telemetry.spec.ts

View workflow job for this annotation

GitHub Actions / Build

Replace `⏎` with `;`

}
);
});

it('Buffers metrics on concurrent requests', (done) => {
let numRequests = 0;
Expand Down

0 comments on commit 9ca217f

Please sign in to comment.