|
|
@@ -4,6 +4,7 @@ import { db } from '../src/db';
|
|
|
import { users } from '../src/db/schema/auth';
|
|
|
import { media } from '../src/db/schema/media';
|
|
|
import { resources } from '../src/db/schema/resource';
|
|
|
+import { cleanupMediaRecord } from './helpers/media-cleanup';
|
|
|
|
|
|
async function upsertUser(email: string, name: string) {
|
|
|
const [existing] = await db.select().from(users).where(eq(users.email, email)).limit(1);
|
|
|
@@ -23,6 +24,7 @@ async function upsertUser(email: string, name: string) {
|
|
|
|
|
|
async function runTest() {
|
|
|
console.log('Testing media list visibility and filters...');
|
|
|
+ const createdMediaIds: string[] = [];
|
|
|
|
|
|
const owner = await upsertUser('media-list-owner@ekb.com', 'Media List Owner');
|
|
|
const outsider = await upsertUser('media-list-outsider@ekb.com', 'Media List Outsider');
|
|
|
@@ -43,6 +45,7 @@ async function runTest() {
|
|
|
size: BigInt(1),
|
|
|
status: 'pending',
|
|
|
}).returning();
|
|
|
+ createdMediaIds.push(createdMedia.id);
|
|
|
|
|
|
const [completedResource] = await db.insert(resources).values({
|
|
|
name: `media-list-filter-${suffix}.mp4`,
|
|
|
@@ -59,35 +62,40 @@ async function runTest() {
|
|
|
size: BigInt(1),
|
|
|
status: 'completed',
|
|
|
}).returning();
|
|
|
-
|
|
|
- const ownerList = await listMedia({ auth: { userId: owner.id, groupIds: [] } });
|
|
|
- const outsiderList = await listMedia({ auth: { userId: outsider.id, groupIds: [] } });
|
|
|
-
|
|
|
- const ownerCanSee = ownerList.some((item) => item.id === createdMedia.id);
|
|
|
- const outsiderCanSee = outsiderList.some((item) => item.id === createdMedia.id);
|
|
|
-
|
|
|
- if (!ownerCanSee || outsiderCanSee) {
|
|
|
- console.error('Media list visibility did not respect ownership permissions.');
|
|
|
- process.exit(1);
|
|
|
- }
|
|
|
-
|
|
|
- const queryList = await listMedia({
|
|
|
- auth: { userId: owner.id, groupIds: [] },
|
|
|
- query: `filter-${suffix}`,
|
|
|
- });
|
|
|
- const completedList = await listMedia({
|
|
|
- auth: { userId: owner.id, groupIds: [] },
|
|
|
- status: 'completed',
|
|
|
- });
|
|
|
-
|
|
|
- const queryMatched = queryList.some((item) => item.id === completedMedia.id)
|
|
|
- && !queryList.some((item) => item.id === createdMedia.id);
|
|
|
- const statusMatched = completedList.some((item) => item.id === completedMedia.id)
|
|
|
- && !completedList.some((item) => item.id === createdMedia.id);
|
|
|
-
|
|
|
- if (!queryMatched || !statusMatched) {
|
|
|
- console.error('Media list filters did not match expected results.');
|
|
|
- process.exit(1);
|
|
|
+ createdMediaIds.push(completedMedia.id);
|
|
|
+
|
|
|
+ try {
|
|
|
+ const ownerList = await listMedia({ auth: { userId: owner.id, groupIds: [] } });
|
|
|
+ const outsiderList = await listMedia({ auth: { userId: outsider.id, groupIds: [] } });
|
|
|
+
|
|
|
+ const ownerCanSee = ownerList.some((item) => item.id === createdMedia.id);
|
|
|
+ const outsiderCanSee = outsiderList.some((item) => item.id === createdMedia.id);
|
|
|
+
|
|
|
+ if (!ownerCanSee || outsiderCanSee) {
|
|
|
+ throw new Error('Media list visibility did not respect ownership permissions.');
|
|
|
+ }
|
|
|
+
|
|
|
+ const queryList = await listMedia({
|
|
|
+ auth: { userId: owner.id, groupIds: [] },
|
|
|
+ query: `filter-${suffix}`,
|
|
|
+ });
|
|
|
+ const completedList = await listMedia({
|
|
|
+ auth: { userId: owner.id, groupIds: [] },
|
|
|
+ status: 'completed',
|
|
|
+ });
|
|
|
+
|
|
|
+ const queryMatched = queryList.some((item) => item.id === completedMedia.id)
|
|
|
+ && !queryList.some((item) => item.id === createdMedia.id);
|
|
|
+ const statusMatched = completedList.some((item) => item.id === completedMedia.id)
|
|
|
+ && !completedList.some((item) => item.id === createdMedia.id);
|
|
|
+
|
|
|
+ if (!queryMatched || !statusMatched) {
|
|
|
+ throw new Error('Media list filters did not match expected results.');
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ for (const mediaId of createdMediaIds) {
|
|
|
+ await cleanupMediaRecord(mediaId);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
console.log('Media list visibility and filters passed.');
|