Radish alpha
r
rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
Radicle web interface
Radicle
Git
Add seed validation test
Archived did:key:z6MkkfM3...sVz5 opened 1 year ago

This commit adds a new test that calls all httpd endpoints and parses them against the corresponding zod schemas.

This will allow us to see the current state of the deployed nodes we test against in this new test.

3 files changed +89 -0 82ca7c3e cd9f7555
added http-client/tests/validate.test.ts
@@ -0,0 +1,61 @@
+
import { test, expect } from "vitest";
+

+
const seeds = [
+
  "seed.rhizoma.dev",
+
  "seed.radicle.xyz",
+
  "seed.radicle.garden",
+
  "ash.radicle.garden",
+
  "rad.levitte.org",
+
  "seed.radicle.at",
+
  "seed.radicle.gr",
+
];
+

+
const cloudheadNID = "z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT";
+
const heartwoodRID = "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5";
+
const head = "a4989b7ce79590fdab3b16e41a8b6049fed3ed4b";
+
const issueId = "922a6a9d79f28500b66568b79668883ed4242529";
+
const patchId = "75cc875d3e77b76032328fc659c504469e1ba805";
+

+
const routes = [
+
  { route: "/api/v1" },
+
  { route: "/api/v1/node" },
+
  { route: "/api/v1/stats" },
+
  { route: `/api/v1/nodes/${cloudheadNID}` },
+
  { route: `/api/v1/nodes/${cloudheadNID}/inventory` },
+
  { route: "/api/v1/node/policies/repos" },
+
  { route: `/api/v1/node/policies/repos/${heartwoodRID}` },
+
  { route: `/api/v1/repos` },
+
  { route: `/api/v1/repos/${heartwoodRID}` },
+
  { route: `/api/v1/repos/${heartwoodRID}/activity` },
+
  { route: `/api/v1/repos/${heartwoodRID}/readme/${head}` },
+
  { route: `/api/v1/repos/${heartwoodRID}/blob/${head}/README.md` },
+
  { route: `/api/v1/repos/${heartwoodRID}/tree/${head}/` },
+
  { route: `/api/v1/repos/${heartwoodRID}/stats/tree/${head}` },
+
  { route: `/api/v1/repos/${heartwoodRID}/remotes` },
+
  { route: `/api/v1/repos/${heartwoodRID}/remotes/${cloudheadNID}` },
+
  { route: `/api/v1/repos/${heartwoodRID}/remotes/${cloudheadNID}` },
+
  { route: `/api/v1/repos/${heartwoodRID}/commits` },
+
  { route: `/api/v1/repos/${heartwoodRID}/commits/${head}` },
+
  { route: `/api/v1/repos/${heartwoodRID}/diff/${head}/${head}` },
+
  { route: `/api/v1/repos/${heartwoodRID}/issues/${issueId}` },
+
  { route: `/api/v1/repos/${heartwoodRID}/issues` },
+
  { route: `/api/v1/repos/${heartwoodRID}/patches` },
+
  { route: `/api/v1/repos/${heartwoodRID}/patches/${patchId}` },
+
  { route: `/api/v1/delegates/did:key:${cloudheadNID}/repos` },
+
];
+

+
const seedRoutes = seeds.reduce(
+
  (acc, seed) => {
+
    routes.forEach(({ route }) => {
+
      acc.push([seed, route]);
+
    });
+

+
    return acc;
+
  },
+
  [] as [string, string][],
+
);
+

+
test.each(seedRoutes)("%s%s", async (seed, route) => {
+
  const response = await fetch(`https://${seed}${route}`);
+
  expect(response.ok).toBe(true);
+
});
added http-client/validate.config.ts
@@ -0,0 +1,27 @@
+
import nodeConfig from "config";
+
import path from "node:path";
+
import virtual from "vite-plugin-virtual";
+
import { defineConfig } from "vite";
+

+
export default defineConfig({
+
  plugins: [
+
    virtual({
+
      "virtual:config": nodeConfig.util.toObject(),
+
    }),
+
  ],
+
  test: {
+
    chaiConfig: {
+
      truncateThreshold: 0,
+
    },
+
    environment: "node",
+
    include: ["http-client/tests/validate.test.ts"],
+
    reporters: "verbose",
+
  },
+
  resolve: {
+
    alias: {
+
      "@tests": path.resolve("./tests"),
+
      "@app": path.resolve("./src"),
+
      "@http-client": path.resolve("./http-client"),
+
    },
+
  },
+
});
modified package.json
@@ -13,6 +13,7 @@
    "test:unit": "TZ='UTC' vitest run",
    "test:e2e": "NODE_CONFIG_ENV='test' TZ='UTC' playwright test",
    "test:http-client:unit": "NODE_CONFIG_ENV='test' TZ='UTC' vitest run --config http-client/vite.config.ts --reporter verbose",
+
    "test:http-client:validate": "NODE_CONFIG_ENV='test' TZ='UTC' vitest run --config http-client/validate.config.ts --reporter verbose",
    "test:radicle-httpd": "cd radicle-httpd && cargo test --all-features"
  },
  "type": "module",