portfolio/test/cdn.spec.ts

108 lines
3.2 KiB
TypeScript
Raw Permalink Normal View History

/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { ListObjectsV2Command, S3Client } from "@aws-sdk/client-s3";
import { describe, it, expect } from "vitest";
import { Art } from "../src/config/Art";
import { Certifications } from "../src/config/Certifications";
import { Games } from "../src/config/Games";
import { Koikatsu } from "../src/config/Koikatsu";
const s3 = new S3Client({
credentials: {
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
accessKeyId: process.env.DO_ACCESS_KEY as string,
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
secretAccessKey: process.env.DO_SECRET_KEY as string,
},
endpoint: "https://sfo3.digitaloceanspaces.com",
region: "sfo3",
});
describe("cdn files", () => {
describe("for games", async() => {
const command = new ListObjectsV2Command({
Bucket: "nhcarrigan-cdn",
Prefix: "games",
});
const { Contents } = await s3.send(command);
const names = Contents?.map((content) => {
return content.Key?.replace("games/", "");
}).filter(Boolean) || [];
it.each(names)("should have %s in the Games config", (name) => {
expect.assertions(1);
const isGameInConfig = Games.some((game) => {
return game.img === name;
});
expect(isGameInConfig, "is not in config").toBeTruthy();
});
});
describe("for koikatsu", async() => {
const command = new ListObjectsV2Command({
Bucket: "nhcarrigan-cdn",
Prefix: "koikatsu",
});
const { Contents } = await s3.send(command);
const names = Contents?.map((content) => {
return content.Key?.replace("koikatsu/", "");
}).filter(Boolean) || [];
it.each(names)("should have %s in the Koikatsu config", (name) => {
expect.assertions(1);
const isKoikatsuInConfig = Koikatsu.includes(name);
expect(isKoikatsuInConfig, "is not in config").toBeTruthy();
});
});
describe("for art", async() => {
const command = new ListObjectsV2Command({
Bucket: "nhcarrigan-cdn",
Prefix: "art",
});
const { Contents } = await s3.send(command);
const names = Contents?.map((content) => {
return content.Key?.replace("art/", "");
}).filter(Boolean) || [];
it.each(names)("should have %s in the Art config", (name) => {
expect.assertions(1);
const isArtInConfig = Art.some((art) => {
return art.img === name;
});
expect(isArtInConfig, "is not in config").toBeTruthy();
});
});
describe("for certifications", async() => {
const command = new ListObjectsV2Command({
Bucket: "nhcarrigan-cdn",
Prefix: "certifications",
});
const { Contents } = await s3.send(command);
const names = Contents?.map((content) => {
return content.Key?.replace("certifications/", "");
}).filter(Boolean) || [];
it.each(names)("should have %s in the Certifications config", (name) => {
expect.assertions(1);
const isCertInConfig = Certifications.some((cert) => {
return cert.fileName === name;
});
expect(isCertInConfig, "is not in config").toBeTruthy();
});
});
});