diff --git a/test/integration/ContainerCreation.test.ts b/test/integration/ContainerCreation.test.ts deleted file mode 100644 index 5f44ebee0..000000000 --- a/test/integration/ContainerCreation.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import 'jest-rdf'; -import type { Server } from 'http'; -import { join } from 'path'; -import arrayifyStream from 'arrayify-stream'; -import fetch from 'cross-fetch'; -import { DataFactory, StreamParser } from 'n3'; -import type { Quad } from 'n3'; -import type { HttpServerFactory } from '../../src/server/HttpServerFactory'; -import { instantiateFromConfig } from './Config'; -const { literal, namedNode, quad } = DataFactory; - -const port = 6003; -const baseUrl = `http://localhost:${port}/`; - -describe('A server', (): void => { - let server: Server; - - beforeAll(async(): Promise => { - const factory = await instantiateFromConfig( - 'urn:solid-server:default:ServerFactory', 'server-without-auth.json', { - 'urn:solid-server:default:variable:port': port, - 'urn:solid-server:default:variable:baseUrl': baseUrl, - 'urn:solid-server:default:variable:podTemplateFolder': join(__dirname, '../assets/templates'), - }, - ) as HttpServerFactory; - server = factory.startServer(port); - }); - - afterAll(async(): Promise => { - await new Promise((resolve, reject): void => { - server.close((error): void => error ? reject(error) : resolve()); - }); - }); - - it('creates a container.', async(): Promise => { - const slug = 'my-container'; - let response = await fetch(baseUrl, { - method: 'POST', - headers: { - 'content-type': 'text/turtle', - link: '; rel="type"', - slug, - }, - body: '<> "My Container" .', - }); - expect(response.status).toBe(201); - expect(response.headers.get('location')).toBe(`${baseUrl}${slug}/`); - - response = await fetch(`${baseUrl}${slug}/`, { - headers: { - accept: 'text/turtle', - }, - }); - expect(response.status).toBe(200); - - const quads: Quad[] = await arrayifyStream((response.body as any).pipe(new StreamParser({ baseIRI: baseUrl }))); - expect(quads.some((entry): boolean => entry.equals(quad( - namedNode(`${baseUrl}${slug}/`), - namedNode('http://www.w3.org/2000/01/rdf-schema#label'), - literal('My Container'), - )))).toBeTruthy(); - }); -}); diff --git a/test/integration/LdpHandlerWithoutAuth.test.ts b/test/integration/LdpHandlerWithoutAuth.test.ts index a4c34001f..f9168ad20 100644 --- a/test/integration/LdpHandlerWithoutAuth.test.ts +++ b/test/integration/LdpHandlerWithoutAuth.test.ts @@ -1,7 +1,11 @@ +import { DataFactory, Parser } from 'n3'; +import type { MockResponse } from 'node-mocks-http'; +import { ensureTrailingSlash } from '../../src/'; import type { HttpHandler, Initializer, ResourceStore } from '../../src/'; import { LDP } from '../../src/util/Vocabularies'; import { ResourceHelper } from '../util/TestHelpers'; import { BASE, getTestFolder, createFolder, removeFolder, instantiateFromConfig } from './Config'; +const { literal, namedNode, quad } = DataFactory; const rootFilePath = getTestFolder('full-config-no-auth'); const stores: [string, any][] = [ @@ -229,4 +233,34 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn, await resourceHelper.deleteResource(fileId); await resourceHelper.shouldNotExist(fileId); }); + + it('can create a container with a diamond identifier in the data.', async(): Promise => { + const slug = 'my-container'; + + let response: MockResponse = await resourceHelper.performRequestWithBody( + new URL(ensureTrailingSlash(BASE)), + 'POST', + { + 'content-type': 'text/turtle', + 'transfer-encoding': 'chunked', + link: '; rel="type"', + slug, + }, + Buffer.from('<> "My Container" .', 'utf-8'), + ); + + expect(response.statusCode).toBe(201); + expect(response._getHeaders().location).toBe(`${BASE}/${slug}/`); + + response = await resourceHelper.performRequest(new URL(`${BASE}/${slug}/`), 'GET', { accept: 'text/turtle' }); + expect(response.statusCode).toBe(200); + + const parser = new Parser(); + const quads = parser.parse(response._getData()); + expect(quads.some((entry): boolean => entry.equals(quad( + namedNode(`${BASE}/${slug}/`), + namedNode('http://www.w3.org/2000/01/rdf-schema#label'), + literal('My Container'), + )))).toBeTruthy(); + }); });