-
Notifications
You must be signed in to change notification settings - Fork 990
/
Copy pathversionslist.spec.ts
105 lines (87 loc) · 3.5 KB
/
versionslist.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import { expect } from "chai";
import { remoteConfigApiOrigin } from "../api";
import * as nock from "nock";
import * as remoteconfig from "./versionslist";
import { ListVersionsResult, Version } from "./interfaces";
const PROJECT_ID = "the-remoteconfig-test-project";
function createVersion(version: string, date: string): Version {
return {
versionNumber: version,
updateTime: date,
updateUser: { email: "jackiechu@google.com" },
};
}
// Test template with limit of 2
const expectedProjectInfoLimit: ListVersionsResult = {
versions: [
createVersion("114", "2020-07-16T23:22:23.608Z"),
createVersion("113", "2020-06-18T21:10:08.992Z"),
],
};
// Test template with no limit (default template)
const expectedProjectInfoDefault: ListVersionsResult = {
versions: [
...expectedProjectInfoLimit.versions,
createVersion("112", "2020-06-16T22:20:34.549Z"),
createVersion("111", "2020-06-16T22:14:24.419Z"),
createVersion("110", "2020-06-16T22:05:03.116Z"),
createVersion("109", "2020-06-16T21:55:19.415Z"),
createVersion("108", "2020-06-16T21:54:55.799Z"),
createVersion("107", "2020-06-16T21:48:37.565Z"),
createVersion("106", "2020-06-16T21:44:41.043Z"),
createVersion("105", "2020-06-16T21:44:13.860Z"),
],
};
// Test template with limit of 0
const expectedProjectInfoNoLimit: ListVersionsResult = {
versions: [
...expectedProjectInfoDefault.versions,
createVersion("104", "2020-06-16T21:39:19.422Z"),
createVersion("103", "2020-06-16T21:37:40.858Z"),
],
};
describe("RemoteConfig ListVersions", () => {
describe("getVersionTemplate", () => {
afterEach(() => {
expect(nock.isDone()).to.equal(true, "all nock stubs should have been called");
nock.cleanAll();
});
it("should return the list of versions up to the limit", async () => {
nock(remoteConfigApiOrigin())
.get(`/v1/projects/${PROJECT_ID}/remoteConfig:listVersions?pageSize=${2}`)
.reply(200, expectedProjectInfoLimit);
const RCtemplate = await remoteconfig.getVersions(PROJECT_ID, 2);
expect(RCtemplate).to.deep.equal(expectedProjectInfoLimit);
});
it("should return all the versions when the limit is 0", async () => {
nock(remoteConfigApiOrigin())
.get(`/v1/projects/${PROJECT_ID}/remoteConfig:listVersions?pageSize=${300}`)
.reply(200, expectedProjectInfoNoLimit);
const RCtemplate = await remoteconfig.getVersions(PROJECT_ID, 0);
expect(RCtemplate).to.deep.equal(expectedProjectInfoNoLimit);
});
it("should return with default 10 versions when no limit is set", async () => {
nock(remoteConfigApiOrigin())
.get(`/v1/projects/${PROJECT_ID}/remoteConfig:listVersions?pageSize=${10}`)
.reply(200, expectedProjectInfoDefault);
const RCtemplateVersion = await remoteconfig.getVersions(PROJECT_ID);
expect(RCtemplateVersion.versions.length).to.deep.equal(10);
expect(RCtemplateVersion).to.deep.equal(expectedProjectInfoDefault);
});
it("should reject if the api call fails", async () => {
nock(remoteConfigApiOrigin())
.get(`/v1/projects/${PROJECT_ID}/remoteConfig:listVersions?pageSize=${10}`)
.reply(404, "Not Found");
let err;
try {
await remoteconfig.getVersions(PROJECT_ID);
} catch (e: any) {
err = e;
}
expect(err).to.not.be.undefined;
expect(err.message).to.equal(
`Failed to get Remote Config template versions for Firebase project ${PROJECT_ID}. `,
);
});
});
});