test: Remove root folder creation from integration tests

This should be handled by the initializer
This commit is contained in:
Joachim Van Herwegen 2021-02-11 13:51:29 +01:00
parent bb65630441
commit 49a04c4d0a
3 changed files with 22 additions and 22 deletions

View File

@ -1,4 +1,3 @@
import { mkdirSync } from 'fs';
import type { IModuleState } from 'componentsjs'; import type { IModuleState } from 'componentsjs';
import { ComponentsManager } from 'componentsjs'; import { ComponentsManager } from 'componentsjs';
import * as rimraf from 'rimraf'; import * as rimraf from 'rimraf';
@ -27,10 +26,6 @@ export function getTestFolder(name: string): string {
return joinFilePath(__dirname, '../tmp', name); return joinFilePath(__dirname, '../tmp', name);
} }
export function createFolder(folder: string): void {
mkdirSync(folder, { recursive: true });
}
export function removeFolder(folder: string): void { export function removeFolder(folder: string): void {
rimraf.sync(folder, { glob: false }); rimraf.sync(folder, { glob: false });
} }

View File

@ -2,30 +2,26 @@ import { createReadStream } from 'fs';
import type { HttpHandler, Initializer, ResourceStore } from '../../src/'; import type { HttpHandler, Initializer, ResourceStore } from '../../src/';
import { LDP, BasicRepresentation, joinFilePath } from '../../src/'; import { LDP, BasicRepresentation, joinFilePath } from '../../src/';
import { AclHelper, ResourceHelper } from '../util/TestHelpers'; import { AclHelper, ResourceHelper } from '../util/TestHelpers';
import { BASE, getTestFolder, createFolder, removeFolder, instantiateFromConfig } from './Config'; import { BASE, getTestFolder, removeFolder, instantiateFromConfig } from './Config';
const rootFilePath = getTestFolder('full-config-acl'); const rootFilePath = getTestFolder('full-config-acl');
const stores: [string, any][] = [ const stores: [string, any][] = [
[ 'in-memory storage', { [ 'in-memory storage', {
storeUrn: 'urn:solid-server:default:MemoryResourceStore', storeUrn: 'urn:solid-server:default:MemoryResourceStore',
setup: jest.fn(),
teardown: jest.fn(), teardown: jest.fn(),
}], }],
[ 'on-disk storage', { [ 'on-disk storage', {
storeUrn: 'urn:solid-server:default:FileResourceStore', storeUrn: 'urn:solid-server:default:FileResourceStore',
setup: (): void => createFolder(rootFilePath),
teardown: (): void => removeFolder(rootFilePath), teardown: (): void => removeFolder(rootFilePath),
}], }],
]; ];
describe.each(stores)('An LDP handler with auth using %s', (name, { storeUrn, setup, teardown }): void => { describe.each(stores)('An LDP handler with auth using %s', (name, { storeUrn, teardown }): void => {
let handler: HttpHandler; let handler: HttpHandler;
let aclHelper: AclHelper; let aclHelper: AclHelper;
let resourceHelper: ResourceHelper; let resourceHelper: ResourceHelper;
beforeAll(async(): Promise<void> => { beforeAll(async(): Promise<void> => {
// Set up the internal store
await setup();
const variables: Record<string, any> = { const variables: Record<string, any> = {
'urn:solid-server:default:variable:baseUrl': BASE, 'urn:solid-server:default:variable:baseUrl': BASE,
'urn:solid-server:default:variable:rootFilePath': rootFilePath, 'urn:solid-server:default:variable:rootFilePath': rootFilePath,
@ -46,6 +42,8 @@ describe.each(stores)('An LDP handler with auth using %s', (name, { storeUrn, se
variables, variables,
) as Record<string, any>; ) as Record<string, any>;
({ handler, store, initializer } = instances); ({ handler, store, initializer } = instances);
// Set up the internal store
await initializer.handleSafe(); await initializer.handleSafe();
// Create test helpers for manipulating the components // Create test helpers for manipulating the components

View File

@ -1,33 +1,29 @@
import { DataFactory, Parser } from 'n3'; import { DataFactory, Parser } from 'n3';
import type { MockResponse } from 'node-mocks-http'; import type { MockResponse } from 'node-mocks-http';
import { ensureTrailingSlash } from '../../src/'; import { ensureTrailingSlash, PIM, RDF } from '../../src/';
import type { HttpHandler, Initializer, ResourceStore } from '../../src/'; import type { HttpHandler, Initializer, ResourceStore } from '../../src/';
import { LDP } from '../../src/util/Vocabularies'; import { LDP } from '../../src/util/Vocabularies';
import { ResourceHelper } from '../util/TestHelpers'; import { ResourceHelper } from '../util/TestHelpers';
import { BASE, getTestFolder, createFolder, removeFolder, instantiateFromConfig } from './Config'; import { BASE, getTestFolder, removeFolder, instantiateFromConfig } from './Config';
const { literal, namedNode, quad } = DataFactory; const { literal, namedNode, quad } = DataFactory;
const rootFilePath = getTestFolder('full-config-no-auth'); const rootFilePath = getTestFolder('full-config-no-auth');
const stores: [string, any][] = [ const stores: [string, any][] = [
[ 'in-memory storage', { [ 'in-memory storage', {
storeUrn: 'urn:solid-server:default:MemoryResourceStore', storeUrn: 'urn:solid-server:default:MemoryResourceStore',
setup: jest.fn(),
teardown: jest.fn(), teardown: jest.fn(),
}], }],
[ 'on-disk storage', { [ 'on-disk storage', {
storeUrn: 'urn:solid-server:default:FileResourceStore', storeUrn: 'urn:solid-server:default:FileResourceStore',
setup: (): void => createFolder(rootFilePath),
teardown: (): void => removeFolder(rootFilePath), teardown: (): void => removeFolder(rootFilePath),
}], }],
]; ];
describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn, setup, teardown }): void => { describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn, teardown }): void => {
let handler: HttpHandler; let handler: HttpHandler;
let resourceHelper: ResourceHelper; let resourceHelper: ResourceHelper;
beforeAll(async(): Promise<void> => { beforeAll(async(): Promise<void> => {
// Set up the internal store
await setup();
const variables: Record<string, any> = { const variables: Record<string, any> = {
'urn:solid-server:default:variable:baseUrl': BASE, 'urn:solid-server:default:variable:baseUrl': BASE,
'urn:solid-server:default:variable:rootFilePath': rootFilePath, 'urn:solid-server:default:variable:rootFilePath': rootFilePath,
@ -47,6 +43,8 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
variables, variables,
) as Record<string, any>; ) as Record<string, any>;
({ handler, initializer } = instances); ({ handler, initializer } = instances);
// Set up the internal store
await initializer.handleSafe(); await initializer.handleSafe();
// Create test helpers for manipulating the components // Create test helpers for manipulating the components
@ -63,10 +61,15 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
expect(response.statusCode).toBe(200); expect(response.statusCode).toBe(200);
expect(response.getHeaders()).toHaveProperty('content-type', 'text/turtle'); expect(response.getHeaders()).toHaveProperty('content-type', 'text/turtle');
const data = response._getData().toString(); const parser = new Parser({ baseIRI: `${BASE}/` });
expect(data).toContain(`<> a ldp:Container`); const quads = parser.parse(response._getData().toString());
expect(quads.some((entry): boolean => entry.equals(
quad(namedNode(`${BASE}/`), RDF.terms.type, LDP.terms.Container),
))).toBeTruthy();
expect(response.getHeaders().link).toContain(`<${LDP.Container}>; rel="type"`); expect(response.getHeaders().link).toContain(`<${LDP.Container}>; rel="type"`);
expect(response.getHeaders().link).toContain(`<${BASE}/.acl>; rel="acl"`); expect(response.getHeaders().link).toContain(`<${BASE}/.acl>; rel="acl"`);
// This is only here because we're accessing the root container
expect(response.getHeaders().link).toContain(`<${PIM.Storage}>; rel="type"`);
}); });
it('can read a folder listing with a query string.', async(): it('can read a folder listing with a query string.', async():
@ -75,10 +78,14 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
expect(response.statusCode).toBe(200); expect(response.statusCode).toBe(200);
expect(response.getHeaders()).toHaveProperty('content-type', 'text/turtle'); expect(response.getHeaders()).toHaveProperty('content-type', 'text/turtle');
const data = response._getData().toString(); const parser = new Parser({ baseIRI: `${BASE}/` });
expect(data).toContain(`<> a ldp:Container`); const quads = parser.parse(response._getData().toString());
expect(quads.some((entry): boolean => entry.equals(
quad(namedNode(`${BASE}/`), RDF.terms.type, LDP.terms.Container),
))).toBeTruthy();
expect(response.getHeaders().link).toContain(`<${LDP.Container}>; rel="type"`); expect(response.getHeaders().link).toContain(`<${LDP.Container}>; rel="type"`);
expect(response.getHeaders().link).toContain(`<${BASE}/.acl>; rel="acl"`); expect(response.getHeaders().link).toContain(`<${BASE}/.acl>; rel="acl"`);
expect(response.getHeaders().link).toContain(`<${PIM.Storage}>; rel="type"`);
}); });
it('can add a file to the store, read it and delete it.', async(): it('can add a file to the store, read it and delete it.', async():