275 lines
8.2 KiB
JavaScript
275 lines
8.2 KiB
JavaScript
/**
|
|
* @copyright Copyright (c) 2019 Georg Ehrke
|
|
*
|
|
* @author Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @license GNU AGPL version 3 or any later version
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
import {getDefaultPrincipalObject, mapDavToPrincipal} from "../../../../src/models/principal.js";
|
|
|
|
describe('Test suite: Principal model (models/principal.js)', () => {
|
|
|
|
it('should return a default principal object', () => {
|
|
expect(getDefaultPrincipalObject()).toEqual({
|
|
id: null,
|
|
calendarUserType: 'INDIVIDUAL',
|
|
emailAddress: null,
|
|
displayname: null,
|
|
principalScheme: null,
|
|
userId: null,
|
|
url: null,
|
|
dav: null,
|
|
isCircle: false,
|
|
isUser: false,
|
|
isGroup: false,
|
|
isCalendarResource: false,
|
|
isCalendarRoom: false,
|
|
principalId: null,
|
|
scheduleDefaultCalendarUrl: null,
|
|
})
|
|
})
|
|
|
|
it('should fill up an object with default values', () => {
|
|
expect(getDefaultPrincipalObject({
|
|
principalId: 'bar',
|
|
otherProp: 'foo',
|
|
})).toEqual({
|
|
id: null,
|
|
calendarUserType: 'INDIVIDUAL',
|
|
emailAddress: null,
|
|
displayname: null,
|
|
principalScheme: null,
|
|
userId: null,
|
|
url: null,
|
|
dav: null,
|
|
isCircle: false,
|
|
isUser: false,
|
|
isGroup: false,
|
|
isCalendarResource: false,
|
|
isCalendarRoom: false,
|
|
principalId: 'bar',
|
|
otherProp: 'foo',
|
|
scheduleDefaultCalendarUrl: null,
|
|
})
|
|
})
|
|
|
|
it('should properly map a user-principal to principal-object', () => {
|
|
const dav = {
|
|
addressBookHomes: undefined,
|
|
calendarHomes: ['/remote.php/dav/calendars/jane.doe'],
|
|
calendarUserAddressSet: [],
|
|
calendarUserType: 'INDIVIDUAL',
|
|
displayname: 'Jane Doe',
|
|
email: 'jane.doe@example.com',
|
|
principalScheme: 'principal:principals/users/jane.doe',
|
|
principalUrl: '/remote.php/dav/principals/users/jane.doe/',
|
|
scheduleInbox: null,
|
|
scheduleOutbox: null,
|
|
url: '/remote.php/dav/principals/users/jane.doe/',
|
|
userId: 'legacy-jane-doe-uid'
|
|
}
|
|
|
|
expect(mapDavToPrincipal(dav)).toEqual({
|
|
id: 'L3JlbW90ZS5waHAvZGF2L3ByaW5jaXBhbHMvdXNlcnMvamFuZS5kb2Uv',
|
|
dav,
|
|
calendarUserType: 'INDIVIDUAL',
|
|
principalScheme: 'principal:principals/users/jane.doe',
|
|
emailAddress: 'jane.doe@example.com',
|
|
displayname: 'Jane Doe',
|
|
url: '/remote.php/dav/principals/users/jane.doe/',
|
|
isUser: true,
|
|
isGroup: false,
|
|
isCircle: false,
|
|
isCalendarResource: false,
|
|
isCalendarRoom: false,
|
|
principalId: 'jane.doe',
|
|
userId: 'legacy-jane-doe-uid',
|
|
})
|
|
})
|
|
|
|
it('should properly map a group-principal to principal-object', () => {
|
|
const dav = {
|
|
addressBookHomes: undefined,
|
|
calendarHomes: [],
|
|
calendarUserAddressSet: [],
|
|
calendarUserType: 'GROUP',
|
|
displayname: 'Jane Doe',
|
|
email: null,
|
|
principalScheme: 'principal:principals/groups/jane.doe',
|
|
principalUrl: '/remote.php/dav/principals/groups/jane.doe/',
|
|
scheduleInbox: null,
|
|
scheduleOutbox: null,
|
|
url: '/remote.php/dav/principals/groups/jane.doe/',
|
|
userId: null,
|
|
}
|
|
|
|
expect(mapDavToPrincipal(dav)).toEqual({
|
|
id: 'L3JlbW90ZS5waHAvZGF2L3ByaW5jaXBhbHMvZ3JvdXBzL2phbmUuZG9lLw==',
|
|
dav,
|
|
calendarUserType: 'GROUP',
|
|
principalScheme: 'principal:principals/groups/jane.doe',
|
|
emailAddress: null,
|
|
displayname: 'Jane Doe',
|
|
url: '/remote.php/dav/principals/groups/jane.doe/',
|
|
isUser: false,
|
|
isGroup: true,
|
|
isCircle: false,
|
|
isCalendarResource: false,
|
|
isCalendarRoom: false,
|
|
principalId: 'jane.doe',
|
|
userId: null,
|
|
})
|
|
})
|
|
|
|
it('should properly map a circle-principal to principal-object', () => {
|
|
const dav = {
|
|
addressBookHomes: undefined,
|
|
calendarHomes: [],
|
|
calendarUserAddressSet: [],
|
|
calendarUserType: 'GROUP',
|
|
displayname: 'Jane Doe',
|
|
email: null,
|
|
principalScheme: 'principal:principals/circles/CGAH82BAS285H',
|
|
principalUrl: '/remote.php/dav/principals/circles/CGAH82BAS285H/',
|
|
scheduleInbox: null,
|
|
scheduleOutbox: null,
|
|
url: '/remote.php/dav/principals/circles/CGAH82BAS285H/',
|
|
userId: null,
|
|
}
|
|
|
|
expect(mapDavToPrincipal(dav)).toEqual({
|
|
id: 'L3JlbW90ZS5waHAvZGF2L3ByaW5jaXBhbHMvY2lyY2xlcy9DR0FIODJCQVMyODVILw==',
|
|
dav,
|
|
calendarUserType: 'GROUP',
|
|
principalScheme: 'principal:principals/circles/CGAH82BAS285H',
|
|
emailAddress: null,
|
|
displayname: 'Jane Doe',
|
|
url: '/remote.php/dav/principals/circles/CGAH82BAS285H/',
|
|
isUser: false,
|
|
isGroup: false,
|
|
isCircle: true,
|
|
isCalendarResource: false,
|
|
isCalendarRoom: false,
|
|
principalId: 'CGAH82BAS285H',
|
|
userId: null,
|
|
})
|
|
})
|
|
|
|
it('should properly map a calendar-resource-principal to principal-object', () => {
|
|
const dav = {
|
|
addressBookHomes: undefined,
|
|
calendarHomes: [],
|
|
calendarUserAddressSet: [],
|
|
calendarUserType: 'RESOURCE',
|
|
displayname: 'Projector 123',
|
|
email: 'projector-123@example.com',
|
|
principalScheme: 'principal:principals/calendar-resources/projector-123',
|
|
principalUrl: '/remote.php/dav/principals/calendar-resources/projector-123/',
|
|
scheduleInbox: null,
|
|
scheduleOutbox: null,
|
|
url: '/remote.php/dav/principals/calendar-resources/projector-123/',
|
|
userId: null,
|
|
}
|
|
|
|
expect(mapDavToPrincipal(dav)).toEqual({
|
|
id: 'L3JlbW90ZS5waHAvZGF2L3ByaW5jaXBhbHMvY2FsZW5kYXItcmVzb3VyY2VzL3Byb2plY3Rvci0xMjMv',
|
|
dav,
|
|
calendarUserType: 'RESOURCE',
|
|
principalScheme: 'principal:principals/calendar-resources/projector-123',
|
|
emailAddress: 'projector-123@example.com',
|
|
displayname: 'Projector 123',
|
|
url: '/remote.php/dav/principals/calendar-resources/projector-123/',
|
|
isUser: false,
|
|
isGroup: false,
|
|
isCircle: false,
|
|
isCalendarResource: true,
|
|
isCalendarRoom: false,
|
|
principalId: 'projector-123',
|
|
userId: null,
|
|
})
|
|
})
|
|
|
|
it('should properly map a calendar-room-principal to principal-object', () => {
|
|
const dav = {
|
|
addressBookHomes: undefined,
|
|
calendarHomes: [],
|
|
calendarUserAddressSet: [],
|
|
calendarUserType: 'ROOM',
|
|
displayname: 'ROOM 123',
|
|
email: 'room-123@example.com',
|
|
principalScheme: 'principal:principals/calendar-rooms/room-123',
|
|
principalUrl: '/remote.php/dav/principals/calendar-rooms/room-123/',
|
|
scheduleInbox: null,
|
|
scheduleOutbox: null,
|
|
url: '/remote.php/dav/principals/calendar-rooms/room-123/',
|
|
userId: null,
|
|
}
|
|
|
|
expect(mapDavToPrincipal(dav)).toEqual({
|
|
id: 'L3JlbW90ZS5waHAvZGF2L3ByaW5jaXBhbHMvY2FsZW5kYXItcm9vbXMvcm9vbS0xMjMv',
|
|
dav,
|
|
calendarUserType: 'ROOM',
|
|
principalScheme: 'principal:principals/calendar-rooms/room-123',
|
|
emailAddress: 'room-123@example.com',
|
|
displayname: 'ROOM 123',
|
|
url: '/remote.php/dav/principals/calendar-rooms/room-123/',
|
|
isUser: false,
|
|
isGroup: false,
|
|
isCircle: false,
|
|
isCalendarResource: false,
|
|
isCalendarRoom: true,
|
|
principalId: 'room-123',
|
|
userId: null,
|
|
})
|
|
})
|
|
|
|
it('should properly map a principal from an unknown backend to principal-object', () => {
|
|
const dav = {
|
|
addressBookHomes: undefined,
|
|
calendarHomes: ['/remote.php/dav/calendars/jane.doe'],
|
|
calendarUserAddressSet: [],
|
|
calendarUserType: 'OTHER',
|
|
displayname: 'Jane Doe',
|
|
email: 'jane.doe@example.com',
|
|
principalScheme: 'principal:principals/users-other/jane.doe',
|
|
principalUrl: '/remote.php/dav/principals/users-other/jane.doe/',
|
|
scheduleInbox: null,
|
|
scheduleOutbox: null,
|
|
url: '/remote.php/dav/principals/users-other/jane.doe/',
|
|
userId: null,
|
|
}
|
|
|
|
expect(mapDavToPrincipal(dav)).toEqual({
|
|
id: 'L3JlbW90ZS5waHAvZGF2L3ByaW5jaXBhbHMvdXNlcnMtb3RoZXIvamFuZS5kb2Uv',
|
|
dav,
|
|
calendarUserType: 'OTHER',
|
|
principalScheme: 'principal:principals/users-other/jane.doe',
|
|
emailAddress: 'jane.doe@example.com',
|
|
displayname: 'Jane Doe',
|
|
url: '/remote.php/dav/principals/users-other/jane.doe/',
|
|
isUser: false,
|
|
isGroup: false,
|
|
isCircle: false,
|
|
isCalendarResource: false,
|
|
isCalendarRoom: false,
|
|
principalId: null,
|
|
userId: null,
|
|
})
|
|
})
|
|
})
|