Tested list endpoints

This commit is contained in:
Owen Schwartz 2024-10-02 22:17:43 -04:00
parent afe3d0659c
commit bbc06245fa
No known key found for this signature in database
GPG key ID: 8271FDFFD9E0CCBD
4 changed files with 25 additions and 33 deletions

View file

@ -30,26 +30,20 @@ async function insertDummyData() {
.get(); .get();
// Insert dummy users // Insert dummy users
await db.insert(users).values([ // await db.insert(users).values([
{ // {
orgId: org1.orgId, // email: "john@fossorial.com",
name: "John Doe", // groups: "admin,developer",
email: "john@fossorial.com", // },
groups: "admin,developer", // {
}, // email: "jane@fossorial.com",
{ // groups: "developer",
orgId: org1.orgId, // },
name: "Jane Smith", // {
email: "jane@fossorial.com", // email: "bob@fosrl.io",
groups: "developer", // groups: "admin",
}, // },
{ // ]);
orgId: org2.orgId,
name: "Bob Johnson",
email: "bob@fosrl.io",
groups: "admin",
},
]);
// Insert dummy exit nodes // Insert dummy exit nodes
const exitNode1 = db const exitNode1 = db
@ -107,6 +101,7 @@ async function insertDummyData() {
.values({ .values({
resourceId: `web.${site1.subdomain}.${org1.domain}`, resourceId: `web.${site1.subdomain}.${org1.domain}`,
siteId: site1.siteId, siteId: site1.siteId,
orgId: site1.orgId,
name: "Web Server", name: "Web Server",
subdomain: "web", subdomain: "web",
}) })
@ -118,6 +113,7 @@ async function insertDummyData() {
.values({ .values({
resourceId: `web2.${site1.subdomain}.${org1.domain}`, resourceId: `web2.${site1.subdomain}.${org1.domain}`,
siteId: site1.siteId, siteId: site1.siteId,
orgId: site1.orgId,
name: "Web Server 2", name: "Web Server 2",
subdomain: "web2", subdomain: "web2",
}) })
@ -129,6 +125,7 @@ async function insertDummyData() {
.values({ .values({
resourceId: `db.${site2.subdomain}.${org2.domain}`, resourceId: `db.${site2.subdomain}.${org2.domain}`,
siteId: site2.siteId, siteId: site2.siteId,
orgId: site2.orgId,
name: "Database", name: "Database",
subdomain: "db", subdomain: "db",
}) })

View file

@ -43,7 +43,7 @@ authenticated.post("/target/:targetId", target.updateTarget);
authenticated.delete("/target/:targetId", target.deleteTarget); authenticated.delete("/target/:targetId", target.deleteTarget);
authenticated.get("/users", user.listUsers); authenticated.get("/users", user.listUsers);
authenticated.get("/org/:orgId/users", user.listUsers); // authenticated.get("/org/:orgId/users", user.???); // TODO: Implement this
authenticated.get("/user/:userId", user.getUser); authenticated.get("/user/:userId", user.getUser);
authenticated.delete("/user/:userId", user.deleteUser); authenticated.delete("/user/:userId", user.deleteUser);

View file

@ -8,13 +8,15 @@ import createHttpError from 'http-errors';
import { sql, eq } from 'drizzle-orm'; import { sql, eq } from 'drizzle-orm';
const listResourcesParamsSchema = z.object({ const listResourcesParamsSchema = z.object({
siteId: z.string().optional().transform(Number).pipe(z.number().int().positive()), siteId: z.coerce.number().int().positive().optional(),
orgId: z.string().optional().transform(Number).pipe(z.number().int().positive()), orgId: z.coerce.number().int().positive().optional(),
}).refine(data => !!data.siteId !== !!data.orgId, {
message: "Either siteId or orgId must be provided, but not both",
}); });
const listResourcesSchema = z.object({ const listResourcesSchema = z.object({
limit: z.string().optional().transform(Number).pipe(z.number().int().positive().default(10)), limit: z.coerce.number().int().positive().default(10),
offset: z.string().optional().transform(Number).pipe(z.number().int().nonnegative().default(0)), offset: z.coerce.number().int().nonnegative().default(0),
}); });
export async function listResources(req: Request, res: Response, next: NextFunction): Promise<any> { export async function listResources(req: Request, res: Response, next: NextFunction): Promise<any> {
@ -59,13 +61,6 @@ export async function listResources(req: Request, res: Response, next: NextFunct
} else if (orgId) { } else if (orgId) {
baseQuery = baseQuery.where(eq(resources.orgId, orgId)); baseQuery = baseQuery.where(eq(resources.orgId, orgId));
countQuery = countQuery.where(eq(resources.orgId, orgId)); countQuery = countQuery.where(eq(resources.orgId, orgId));
} else {
return next(
createHttpError(
HttpCode.BAD_REQUEST,
'Either siteId or orgId must be provided'
)
);
} }
const resourcesList = await baseQuery.limit(limit).offset(offset); const resourcesList = await baseQuery.limit(limit).offset(offset);

View file

@ -8,7 +8,7 @@ import createHttpError from 'http-errors';
import { sql, eq } from 'drizzle-orm'; import { sql, eq } from 'drizzle-orm';
const listTargetsParamsSchema = z.object({ const listTargetsParamsSchema = z.object({
resourceId: z.string().optional(), resourceId: z.string().optional()
}); });
const listTargetsSchema = z.object({ const listTargetsSchema = z.object({