-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathservice.test.ts
More file actions
61 lines (54 loc) · 2.74 KB
/
Copy pathservice.test.ts
File metadata and controls
61 lines (54 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* eslint-env jest */
const $rdf = require('rdflib')
const ns = require('solid-namespace')($rdf)
const { getStatementsToDelete, getStatementsToAdd, deserialiseMode } = require('./service')
describe('getStatementsToDelete', () => {
it('should return an empty array when there are no statements', () => {
const mockStore = $rdf.graph()
const mockOrigin = $rdf.sym('https://fake.origin')
const mockProfile = $rdf.sym('https://fake.profile#me')
expect(getStatementsToDelete(mockOrigin, mockProfile, mockStore, ns)).toEqual([])
})
it('should return all statements for the given origin', () => {
const mockStore = $rdf.graph()
const mockApplication = $rdf.sym('https://fake.app')
const mockOrigin = $rdf.sym('https://fake.origin')
const mockProfile = $rdf.sym('https://fake.profile#me')
mockStore.add(mockApplication, ns.acl('origin'), mockOrigin)
mockStore.add(mockApplication, ns.acl('mode'), ns.acl('Read'))
mockStore.add(mockProfile, ns.acl('trustedApp'), mockApplication)
const statementsToDelete = getStatementsToDelete(mockOrigin, mockProfile, mockStore, ns)
expect(statementsToDelete.length).toBe(3)
expect(statementsToDelete).toMatchSnapshot()
})
it('should not return statements for a different origin', () => {
const mockStore = $rdf.graph()
const mockApplication = $rdf.sym('https://fake.app')
const mockOrigin = $rdf.sym('https://fake.origin')
const mockProfile = $rdf.sym('https://fake.profile#me')
mockStore.add(mockApplication, ns.acl('origin'), mockOrigin)
mockStore.add(mockApplication, ns.acl('mode'), ns.acl('Read'))
mockStore.add(mockProfile, ns.acl('trustedApp'), mockApplication)
const statementsToDelete = getStatementsToDelete($rdf.lit('A different origin'), mockProfile, mockStore, ns)
expect(statementsToDelete.length).toBe(0)
expect(statementsToDelete).toEqual([])
})
})
describe('getStatementsToAdd', () => {
it('should return all required statements to add the given permissions for a given origin', () => {
const mockOrigin = $rdf.sym('https://fake.origin')
const mockProfile = $rdf.sym('https://fake.profile#me')
const modes = ['read', 'write']
const statementsToAdd = getStatementsToAdd(mockOrigin, 'mock_app_id', modes, mockProfile, ns)
expect(statementsToAdd.length).toBe(4)
expect(statementsToAdd).toMatchSnapshot()
})
})
describe('deserialiseMode', () => {
it('should convert a full namespaced ACL to a plaintext string', () => {
expect(deserialiseMode($rdf.sym(ns.acl('read')), ns)).toBe('read')
expect(deserialiseMode($rdf.sym(ns.acl('append')), ns)).toBe('append')
expect(deserialiseMode($rdf.sym(ns.acl('write')), ns)).toBe('write')
expect(deserialiseMode($rdf.sym(ns.acl('control')), ns)).toBe('control')
})
})