mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
feat: Add acl link header writer
This writer will add a link to the corresponding acl file for all LDP requests.
This commit is contained in:
@@ -76,7 +76,8 @@ describe.each(stores)('An LDP handler with auth using %s', (name, { storeUrn, se
|
||||
response = await resourceHelper.getResource(id);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response._getBuffer().toString()).toContain('TESTFILE2');
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
|
||||
// DELETE file
|
||||
await resourceHelper.deleteResource(id);
|
||||
@@ -109,7 +110,8 @@ describe.each(stores)('An LDP handler with auth using %s', (name, { storeUrn, se
|
||||
// GET permanent file
|
||||
response = await resourceHelper.getResource('http://test.com/permanent.txt');
|
||||
expect(response._getBuffer().toString()).toContain('TEST');
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<http://test.com/permanent.txt.acl>; rel="acl"`);
|
||||
|
||||
// Try to delete permanent file
|
||||
response = await resourceHelper.deleteResource('http://test.com/permanent.txt', true);
|
||||
|
||||
@@ -66,6 +66,7 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
|
||||
const data = response._getData().toString();
|
||||
expect(data).toContain(`<> a ldp:Container`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Container}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${BASE}/.acl>; rel="acl"`);
|
||||
});
|
||||
|
||||
it('can add a file to the store, read it and delete it.', async():
|
||||
@@ -80,7 +81,8 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
|
||||
response = await resourceHelper.getResource(id);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response._getBuffer().toString()).toContain('TESTFILE0');
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
expect(response.getHeaders()['accept-patch']).toBe('application/sparql-update');
|
||||
expect(response.getHeaders()['ms-author-via']).toBe('SPARQL');
|
||||
|
||||
@@ -99,7 +101,8 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
|
||||
response = await resourceHelper.getResource(id);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response._getBuffer().toString()).toContain('TESTFILE0');
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
|
||||
// PUT
|
||||
response = await resourceHelper.replaceResource(
|
||||
@@ -110,7 +113,8 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
|
||||
response = await resourceHelper.getResource(id);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response._getBuffer().toString()).toContain('TESTFILE1');
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
|
||||
// DELETE
|
||||
await resourceHelper.deleteResource(id);
|
||||
@@ -125,9 +129,10 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
|
||||
// GET
|
||||
response = await resourceHelper.getContainer(id);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response.getHeaders().link).toEqual(
|
||||
[ `<${LDP.Container}>; rel="type"`, `<${LDP.BasicContainer}>; rel="type"`, `<${LDP.Resource}>; rel="type"` ],
|
||||
);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Container}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.BasicContainer}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
|
||||
// DELETE
|
||||
await resourceHelper.deleteResource(id);
|
||||
@@ -147,7 +152,8 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
|
||||
// GET File
|
||||
response = await resourceHelper.getResource(id);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
|
||||
// DELETE
|
||||
await resourceHelper.deleteResource(id);
|
||||
@@ -218,9 +224,10 @@ describe.each(stores)('An LDP handler without auth using %s', (name, { storeUrn,
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response._getData()).toContain('<http://www.w3.org/ns/ldp#contains> <http://test.com/testfolder3/subfolder0/> .');
|
||||
expect(response._getData()).toContain('<http://www.w3.org/ns/ldp#contains> <http://test.com/testfolder3/testfile0.txt> .');
|
||||
expect(response.getHeaders().link).toEqual(
|
||||
[ `<${LDP.Container}>; rel="type"`, `<${LDP.BasicContainer}>; rel="type"`, `<${LDP.Resource}>; rel="type"` ],
|
||||
);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Container}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.BasicContainer}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${folderId}.acl>; rel="acl"`);
|
||||
|
||||
// DELETE
|
||||
await resourceHelper.deleteResource(fileId);
|
||||
|
||||
@@ -47,7 +47,8 @@ describe('An integrated AuthenticatedLdpHandler', (): void => {
|
||||
expect(response._getData()).toContain(
|
||||
'<http://test.com/s> <http://test.com/p> <http://test.com/o>.',
|
||||
);
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
|
||||
// DELETE
|
||||
response = await performRequest(handler, requestUrl, 'DELETE', {}, []);
|
||||
@@ -103,7 +104,8 @@ describe('An integrated AuthenticatedLdpHandler', (): void => {
|
||||
expect(response._getData()).toContain(
|
||||
'<http://test.com/s2> <http://test.com/p2> <http://test.com/o2>.',
|
||||
);
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
const parser = new Parser();
|
||||
let triples = parser.parse(response._getData());
|
||||
expect(triples).toBeRdfIsomorphic([
|
||||
@@ -190,7 +192,8 @@ describe('An integrated AuthenticatedLdpHandler', (): void => {
|
||||
[],
|
||||
);
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(response.getHeaders().link).toBe(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${LDP.Resource}>; rel="type"`);
|
||||
expect(response.getHeaders().link).toContain(`<${id}.acl>; rel="acl"`);
|
||||
const parser = new Parser();
|
||||
const triples = parser.parse(response._getData());
|
||||
expect(triples).toBeRdfIsomorphic([
|
||||
|
||||
@@ -46,6 +46,11 @@
|
||||
"PassthroughStore:_source": {
|
||||
"@id": "urn:solid-server:default:MemoryResourceStore"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@id": "urn:solid-server:default:AclManager",
|
||||
"@type": "UrlBasedAclManager",
|
||||
"comment": "Needed for AclLinkMetadataWriter"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user