mirror of
https://github.com/tiennm99/is-a-dev.git
synced 2026-10-15 18:15:56 +00:00
add special tests + remove n.is-a.dev as dupe single letter
This commit is contained in:
1 parent
c01bea88f4
commit
b159edb6c3
4 files changed
+50
-19
No files matched your search
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"owner": {
|
|
||||||
"username": "syedtahseen",
|
|
||||||
"email": "itxtahseen@gmail.com"
|
|
||||||
},
|
|
||||||
"record": {
|
|
||||||
"TXT": ["vc-domain-verify=n.is-a.dev,8435c76be2d4e8aaa229"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"owner": {
|
|
||||||
"username": "syedtahseen",
|
|
||||||
"email": "itxtahseen@gmail.com"
|
|
||||||
},
|
|
||||||
"record": {
|
|
||||||
"CNAME": "xproject-xi.vercel.app"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,7 @@ const fs = require("fs-extra");
|
|||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
const domainsPath = path.resolve("domains");
|
const domainsPath = path.resolve("domains");
|
||||||
const files = fs.readdirSync(domainsPath);
|
const files = fs.readdirSync(domainsPath).filter((file) => file.endsWith(".json"));
|
||||||
|
|
||||||
const domainCache = {};
|
const domainCache = {};
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
const t = require("ava");
|
||||||
|
const fs = require("fs-extra");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const domainsPath = path.resolve("domains");
|
||||||
|
const files = fs.readdirSync(domainsPath).filter((file) => file.endsWith(".json"));
|
||||||
|
|
||||||
|
const bypassedUsernames = require("../util/bypassed-usernames.json").map((username) => username.toLowerCase());
|
||||||
|
|
||||||
|
function getDomainData(subdomain) {
|
||||||
|
try {
|
||||||
|
const data = fs.readJsonSync(path.join(domainsPath, `${subdomain}.json`));
|
||||||
|
return data;
|
||||||
|
} catch (error) {
|
||||||
|
throw new Error(`Failed to read JSON for ${subdomain}: ${error.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
t("Users are limited to one single character subdomain", (t) => {
|
||||||
|
const results = [];
|
||||||
|
|
||||||
|
files.forEach((file) => {
|
||||||
|
const subdomain = file.replace(/\.json$/, "");
|
||||||
|
const data = getDomainData(subdomain);
|
||||||
|
|
||||||
|
if (subdomain.length === 1 && !bypassedUsernames.includes(data.owner.username.toLowerCase())) {
|
||||||
|
results.push({
|
||||||
|
subdomain,
|
||||||
|
owner: data.owner.username.toLowerCase(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const duplicates = results.filter((result) => results.filter((r) => r.owner === result.owner).length > 1);
|
||||||
|
|
||||||
|
// Combine duplicates into multiple strings, only one per user, with list of their domains
|
||||||
|
const output = duplicates.reduce((acc, curr) => {
|
||||||
|
if (!acc[curr.owner]) {
|
||||||
|
acc[curr.owner] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
acc[curr.owner].push(`${curr.subdomain}.is-a.dev`);
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
t.is(duplicates.length, 0, Object.keys(output).map((owner) => `${owner} - ${output[owner].join(", ")}`).join("\n"));
|
||||||
|
|
||||||
|
t.pass();
|
||||||
|
})
|
||||||
Reference in new issue
Block a user