From ae9f91885f44fcf411e0126d352174f5cad01d27 Mon Sep 17 00:00:00 2001 From: adrinr Date: Wed, 5 Apr 2023 12:17:02 +0100 Subject: [PATCH 1/2] Fix flaky tests --- .../server/src/api/routes/tests/user.spec.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/packages/server/src/api/routes/tests/user.spec.js b/packages/server/src/api/routes/tests/user.spec.js index afb3acfe0d..5f90b174f6 100644 --- a/packages/server/src/api/routes/tests/user.spec.js +++ b/packages/server/src/api/routes/tests/user.spec.js @@ -57,6 +57,7 @@ describe("/users", () => { it("should be able to update the user", async () => { const user = await config.createUser({ id: `us_update${utils.newid()}` }) user.roleId = BUILTIN_ROLE_IDS.BASIC + delete user._rev const res = await request .put(`/api/users/metadata`) .set(config.defaultHeaders()) @@ -65,6 +66,46 @@ describe("/users", () => { .expect("Content-Type", /json/) expect(res.body.ok).toEqual(true) }) + + it("should be able to update the user multiple times", async () => { + const user = await config.createUser() + delete user._rev + + const res1 = await request + .put(`/api/users/metadata`) + .set(config.defaultHeaders()) + .send({ ...user, roleId: BUILTIN_ROLE_IDS.BASIC }) + .expect(200) + .expect("Content-Type", /json/) + + const res = await request + .put(`/api/users/metadata`) + .set(config.defaultHeaders()) + .send({ ...user, _rev: res1.body.rev, roleId: BUILTIN_ROLE_IDS.POWER }) + .expect(200) + .expect("Content-Type", /json/) + + expect(res.body.ok).toEqual(true) + }) + + it("should require the _rev field for multiple updates", async () => { + const user = await config.createUser() + delete user._rev + + await request + .put(`/api/users/metadata`) + .set(config.defaultHeaders()) + .send({ ...user, roleId: BUILTIN_ROLE_IDS.BASIC }) + .expect(200) + .expect("Content-Type", /json/) + + await request + .put(`/api/users/metadata`) + .set(config.defaultHeaders()) + .send({ ...user, roleId: BUILTIN_ROLE_IDS.POWER }) + .expect(409) + .expect("Content-Type", /json/) + }) }) describe("destroy", () => { From 38535e8ef4fe8b8d6c90f566c90cedf3e0354ab7 Mon Sep 17 00:00:00 2001 From: adrinr Date: Wed, 5 Apr 2023 12:17:32 +0100 Subject: [PATCH 2/2] Format --- .../server/src/api/routes/tests/user.spec.js | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/packages/server/src/api/routes/tests/user.spec.js b/packages/server/src/api/routes/tests/user.spec.js index 5f90b174f6..0a2b02364a 100644 --- a/packages/server/src/api/routes/tests/user.spec.js +++ b/packages/server/src/api/routes/tests/user.spec.js @@ -133,6 +133,7 @@ describe("/users", () => { expect(res.body.tableId).toBeDefined() }) }) + describe("setFlag", () => { it("should throw an error if a flag is not provided", async () => { await config.createUser() @@ -142,8 +143,9 @@ describe("/users", () => { .send({ value: "test" }) .expect(400) .expect("Content-Type", /json/) - expect(res.body.message).toEqual("Must supply a 'flag' field in request body.") - + expect(res.body.message).toEqual( + "Must supply a 'flag' field in request body." + ) }) it("should be able to set a flag on the user", async () => { @@ -187,8 +189,9 @@ describe("/users", () => { .send({ value: "test" }) .expect(400) .expect("Content-Type", /json/) - expect(res.body.message).toEqual("Must supply a 'flag' field in request body.") - + expect(res.body.message).toEqual( + "Must supply a 'flag' field in request body." + ) }) it("should be able to set a flag on the user", async () => { @@ -206,33 +209,37 @@ describe("/users", () => { describe("syncUser", () => { it("should sync the user", async () => { let user = await config.createUser() - await config.createApp('New App') + await config.createApp("New App") let res = await request .post(`/api/users/metadata/sync/${user._id}`) .set(config.defaultHeaders()) .expect(200) .expect("Content-Type", /json/) - expect(res.body.message).toEqual('User synced.') + expect(res.body.message).toEqual("User synced.") }) - it("should sync the user when a previous user is specified", async () => { - const app1 = await config.createApp('App 1') - const app2 = await config.createApp('App 2') + const app1 = await config.createApp("App 1") + const app2 = await config.createApp("App 2") let user = await config.createUser({ builder: false, admin: true, - roles: { [app1.appId]: 'ADMIN' } - }) + roles: { [app1.appId]: "ADMIN" }, + }) let res = await request .post(`/api/users/metadata/sync/${user._id}`) .set(config.defaultHeaders()) - .send({ previousUser: { ...user, roles: { ...user.roles, [app2.appId]: 'BASIC' } } }) + .send({ + previousUser: { + ...user, + roles: { ...user.roles, [app2.appId]: "BASIC" }, + }, + }) .expect(200) .expect("Content-Type", /json/) - expect(res.body.message).toEqual('User synced.') + expect(res.body.message).toEqual("User synced.") }) }) })