Skip to content

Commit

Permalink
Test explicit disabling of rate limiting
Browse files Browse the repository at this point in the history
  • Loading branch information
ben-obringer committed Aug 9, 2024
1 parent bef97f3 commit 6da28a3
Showing 1 changed file with 29 additions and 4 deletions.
33 changes: 29 additions & 4 deletions test/test-musicbrainz-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -894,16 +894,24 @@ describe('MusicBrainz-api', function () {

describe("Rate limiting", () => {
let mbTestApiNoLimit: MusicBrainzApi;
let mbTestApiLimit: MusicBrainzApi;
let mbApiNoLimit: MusicBrainzApi;
let mbApiLimit: MusicBrainzApi;
let rateLimiterSpy: sinon.SinonSpy;

before(async () => {
mbApiNoLimit = new MusicBrainzApi(await makeSearchApiConfig({
disableRateLimiting: true
}));
mbApiLimit = new MusicBrainzApi(await makeSearchApiConfig({
disableRateLimiting: false
}));
mbTestApiNoLimit = new MusicBrainzApi(await makeTestApiConfig({
disableRateLimiting: true
}));
mbTestApiLimit = new MusicBrainzApi(await makeTestApiConfig({
disableRateLimiting: false
}));
});

beforeEach(() => {
Expand All @@ -921,13 +929,20 @@ describe('MusicBrainz-api', function () {
sinon.stub(got, "get").resolves({});
});

it("rate limits when disableRateLimiting is false", async () => {
it("rate limits by default", async () => {
await mbApi.restGet<IRecording>(
`/recording/${mbid.recording.Formidable}`
);
assert.isTrue(rateLimiterSpy.calledOnce);
});

it("rate limits when disableRateLimiting is false", async () => {
await mbApiLimit.restGet<IRecording>(
`/recording/${mbid.recording.Formidable}`
);
assert.isTrue(rateLimiterSpy.calledOnce);
});

it("does not rate limit when disableRateLimiting is true", async () => {
await mbApiNoLimit.restGet<IRecording>(
`/recording/${mbid.recording.Formidable}`
Expand All @@ -947,11 +962,16 @@ describe('MusicBrainz-api', function () {
sinon.stub(got, "post").resolves({});
});

it("rate limits when disableRateLimiting is false", async () => {
it("rate limits by default", async () => {
await mbTestApi.post("recording", new XmlMetadata());
assert.isTrue(rateLimiterSpy.calledOnce);
});

it("rate limits when disableRateLimiting is false", async () => {
await mbTestApiLimit.post("recording", new XmlMetadata());
assert.isTrue(rateLimiterSpy.calledOnce);
});

it("does not rate limit when disableRateLimiting is true", async () => {
await mbTestApiNoLimit.post("recording", new XmlMetadata());
assert.isFalse(rateLimiterSpy.called);
Expand All @@ -966,14 +986,19 @@ describe('MusicBrainz-api', function () {

beforeEach(() => {
// Stub to avoid unecessary HTTP requests in the context of these tests
sinon.stub(got, "post").resolves({ body: {} });
sinon.stub(got, "post").resolves({});
});

it("rate limits when disableRateLimiting is false", async () => {
it("rate limits by default", async () => {
await mbTestApi.editEntity("recording", mbid.recording.Formidable, {});
assert.isTrue(rateLimiterSpy.calledOnce);
});

it("rate limits when disableRateLimiting is false", async () => {
await mbTestApiLimit.editEntity("recording", mbid.recording.Formidable, {});
assert.isTrue(rateLimiterSpy.calledOnce);
});

it("does not rate limit when disableRateLimiting is true", async () => {
await mbTestApiNoLimit.editEntity(
"recording",
Expand Down

0 comments on commit 6da28a3

Please sign in to comment.