fix: Incorrect calculation of subdomain when previously used more than once

This commit is contained in:
Tom Moor 2021-03-15 18:04:41 -07:00
parent d86b7babb9
commit ffc270b567
2 changed files with 17 additions and 3 deletions

View File

@ -133,9 +133,13 @@ const uploadAvatar = async (model) => {
}
};
Team.prototype.provisionSubdomain = async function (subdomain, options = {}) {
Team.prototype.provisionSubdomain = async function (
requestedSubdomain: string,
options = {}
) {
if (this.subdomain) return this.subdomain;
let subdomain = requestedSubdomain;
let append = 0;
while (true) {
try {
@ -143,7 +147,7 @@ Team.prototype.provisionSubdomain = async function (subdomain, options = {}) {
break;
} catch (err) {
// subdomain was invalid or already used, try again
subdomain = `${subdomain}${++append}`;
subdomain = `${requestedSubdomain}${++append}`;
}
}

View File

@ -11,7 +11,7 @@ it("should set subdomain if available", async () => {
expect(team.subdomain).toEqual("testy");
});
it("should set subdomain with append if unavailable", async () => {
it("should set subdomain append if unavailable", async () => {
await buildTeam({ subdomain: "myteam" });
const team = await buildTeam();
@ -20,6 +20,16 @@ it("should set subdomain with append if unavailable", async () => {
expect(team.subdomain).toEqual("myteam1");
});
it("should increment subdomain append if unavailable", async () => {
await buildTeam({ subdomain: "myteam" });
await buildTeam({ subdomain: "myteam1" });
const team = await buildTeam();
const subdomain = await team.provisionSubdomain("myteam");
expect(subdomain).toEqual("myteam2");
expect(team.subdomain).toEqual("myteam2");
});
it("should do nothing if subdomain already set", async () => {
const team = await buildTeam({ subdomain: "example" });
const subdomain = await team.provisionSubdomain("myteam");