UNPKG

contensis-management-api

Version:

Client for managing content using the Contensis Management API

538 lines (537 loc) 28.4 kB
import * as Contensis from '../../index'; import { defaultGroups, getDefaultAuthenticateUrl, getDefaultConfig, getDefaultFetchRequest, setDefaultSpy, defaultUsers } from '../../specs-utils.spec'; import fetch from 'cross-fetch'; const Zengenti = { Contensis }; const global = window || this; global.fetch = fetch; describe('Group Operations', () => { describe('Get group', () => { beforeEach(() => { setDefaultSpy(global, defaultGroups[0]); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('by id', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let group = await client.security.groups.getById(defaultGroups[0].id); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}`, getDefaultFetchRequest() ]); expect(group).not.toBeNull(); expect(group.id).toEqual(defaultGroups[0].id); }); it('by name', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let group = await client.security.groups.getByName(defaultGroups[0].name); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].name}`, getDefaultFetchRequest() ]); expect(group).not.toBeNull(); expect(group.name).toEqual(defaultGroups[0].name); }); }); describe('List groups', () => { beforeEach(() => { setDefaultSpy(global, { pageIndex: 0, pageSize: 25, totalCount: 2, items: defaultGroups }); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('with default options', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let groups = await client.security.groups.list(); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ 'http://my-website.com/api/security/groups', getDefaultFetchRequest() ]); expect(groups).not.toBeNull(); expect(groups.items.length).toEqual(2); expect(groups.items[1].name).toEqual(defaultGroups[1].name); }); it('with specific options', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let groups = await client.security.groups.list({ q: 'content', pageOptions: { pageIndex: 1, pageSize: 50 }, order: ['name'] }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ 'http://my-website.com/api/security/groups?order=name&pageIndex=1&pageSize=50&q=content', getDefaultFetchRequest() ]); expect(groups).not.toBeNull(); expect(groups.items.length).toEqual(2); expect(groups.items[1].name).toEqual(defaultGroups[1].name); }); it('with specific options and no query', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let groups = await client.security.groups.list({ pageOptions: { pageIndex: 1, pageSize: 50 }, order: ['name'] }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ 'http://my-website.com/api/security/groups?order=name&pageIndex=1&pageSize=50', getDefaultFetchRequest() ]); expect(groups).not.toBeNull(); expect(groups.items.length).toEqual(2); expect(groups.items[1].name).toEqual(defaultGroups[1].name); }); it('with zenQL', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let groups = await client.security.groups.list({ zenQL: 'name="test"', }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ 'http://my-website.com/api/security/groups?pageIndex=0&pageSize=25&zenQL=name%3D%22test%22', getDefaultFetchRequest() ]); expect(groups).not.toBeNull(); expect(groups.items.length).toEqual(2); expect(groups.items[1].name).toEqual(defaultGroups[1].name); }); }); describe('Create group', () => { beforeEach(() => { setDefaultSpy(global, defaultGroups[0]); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('for valid group', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let group = await client.security.groups.create(defaultGroups[0]); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups`, getDefaultFetchRequest('POST', null, JSON.stringify(defaultGroups[0])) ]); expect(group).not.toBeNull(); expect(group.id).toEqual(defaultGroups[0].id); }); }); describe('Update group', () => { beforeEach(() => { setDefaultSpy(global, defaultGroups[0]); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('for valid group', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let group = await client.security.groups.update(defaultGroups[0]); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}`, getDefaultFetchRequest('PUT', null, JSON.stringify(defaultGroups[0])) ]); expect(group).not.toBeNull(); expect(group.id).toEqual(defaultGroups[0].id); }); }); describe('Delete group', () => { beforeEach(() => { setDefaultSpy(global, null); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('for valid group', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let result = await client.security.groups.delete(defaultGroups[0].id); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}`, getDefaultFetchRequest('DELETE') ]); expect(result).toEqual(null); }); }); describe('Add user to group', () => { beforeEach(() => { setDefaultSpy(global, null); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('for valid group and user', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let result = await client.security.groups.addUser(defaultGroups[0].id, defaultUsers[0].id); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users/${defaultUsers[0].id}`, getDefaultFetchRequest('PUT') ]); expect(result).toEqual(null); }); }); describe('Add users to group', () => { beforeEach(() => { setDefaultSpy(global, null); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('for valid group and users', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); const userIds = [defaultUsers[0].id, defaultUsers[1].id]; let result = await client.security.groups.addUsers(defaultGroups[0].id, userIds); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users`, getDefaultFetchRequest('POST', false, JSON.stringify(userIds)) ]); expect(result).toEqual(null); }); }); describe('Remove user from group', () => { beforeEach(() => { setDefaultSpy(global, null); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('for valid group and user', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let result = await client.security.groups.removeUser(defaultGroups[0].id, defaultUsers[0].id); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users/${defaultUsers[0].id}`, getDefaultFetchRequest('DELETE') ]); expect(result).toEqual(null); }); }); describe('Has user in group', () => { describe('for a positive result', () => { beforeEach(() => { setDefaultSpy(global, null); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('and valid group and user', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let result = await client.security.groups.hasUser(defaultGroups[0].id, defaultUsers[0].id); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users/${defaultUsers[0].id}`, getDefaultFetchRequest('HEAD') ]); expect(result).toBeTrue(); }); }); describe('for a negative result', () => { beforeEach(() => { setDefaultSpy(global, null, true); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('and valid group and user', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let result = await client.security.groups.hasUser(defaultGroups[0].id, defaultUsers[0].id); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users/${defaultUsers[0].id}`, getDefaultFetchRequest('HEAD') ]); expect(result).toBeFalse(); }); }); }); describe('Add child group to group', () => { beforeEach(() => { setDefaultSpy(global, null); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('for valid group and child group', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let result = await client.security.groups.addChildGroup(defaultGroups[0].id, defaultGroups[1].id); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/groups/${defaultGroups[1].id}`, getDefaultFetchRequest('PUT') ]); expect(result).toEqual(null); }); }); describe('Add child groups to group', () => { beforeEach(() => { setDefaultSpy(global, null); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch, }); }); it('for valid group and child groups', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let result = await client.security.groups.addChildGroups(defaultGroups[0].id, [defaultGroups[1].id]); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/groups`, getDefaultFetchRequest('POST', false, JSON.stringify([defaultGroups[1].id])), ]); expect(result).toEqual(null); }); }); describe('Remove child group from group', () => { beforeEach(() => { setDefaultSpy(global, null); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('for valid group and child group', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let result = await client.security.groups.removeChildGroup(defaultGroups[0].id, defaultGroups[1].id); expect(global.fetch).toHaveBeenCalledTimes(2); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/groups/${defaultGroups[1].id}`, getDefaultFetchRequest('DELETE') ]); expect(result).toEqual(null); }); }); describe('Gets users in group', () => { beforeEach(() => { setDefaultSpy(global, { pageIndex: 0, pageSize: 25, totalCount: 2, items: defaultUsers }); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('by group id', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getUsersByGroupId(defaultGroups[0].id); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].username).toEqual(defaultUsers[1].username); }); it('by group id with zenQL', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getUsersByGroupId(defaultGroups[0].id, { zenQL: 'username="Geoff"' }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users?pageIndex=0&pageSize=25&zenQL=username%3D%22Geoff%22`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].username).toEqual(defaultUsers[1].username); }); it('by group id with specific options', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getUsersByGroupId(defaultGroups[0].id, { includeInherited: true, pageOptions: { pageIndex: 1, pageSize: 50 }, order: ['username'] }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users?includeInherited=true&order=username&pageIndex=1&pageSize=50`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].username).toEqual(defaultUsers[1].username); }); it('by group id with an exclusion group', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getUsersByGroupId(defaultGroups[0].id, { includeInherited: true, excludedGroups: ['abc'], pageOptions: { pageIndex: 1, pageSize: 50 }, order: ['username'] }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users?excludedGroups=abc&includeInherited=true&order=username&pageIndex=1&pageSize=50`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].username).toEqual(defaultUsers[1].username); }); it('by group id with many exclusion groups', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getUsersByGroupId(defaultGroups[0].id, { includeInherited: true, excludedGroups: ['abc', 'def', 'hij'], pageOptions: { pageIndex: 1, pageSize: 50 }, order: ['username'] }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/users?excludedGroups=abc%2Cdef%2Chij&includeInherited=true&order=username&pageIndex=1&pageSize=50`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].username).toEqual(defaultUsers[1].username); }); it('by group name', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getUsersByGroupName(defaultGroups[0].name); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].name}/users`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].username).toEqual(defaultUsers[1].username); }); it('by group name with specific options', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getUsersByGroupName(defaultGroups[0].name, { includeInherited: true, pageOptions: { pageIndex: 1, pageSize: 50 }, order: ['username'] }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].name}/users?includeInherited=true&order=username&pageIndex=1&pageSize=50`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].username).toEqual(defaultUsers[1].username); }); }); describe('Gets groups in group', () => { beforeEach(() => { setDefaultSpy(global, { pageIndex: 0, pageSize: 25, totalCount: 2, items: defaultGroups }); Zengenti.Contensis.Client.defaultClientConfig = null; Zengenti.Contensis.Client.configure({ fetchFn: global.fetch }); }); it('by group id', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let groups = await client.security.groups.getChildGroupsByGroupId(defaultGroups[0].id); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/groups`, getDefaultFetchRequest() ]); expect(groups).not.toBeNull(); expect(groups.items.length).toEqual(2); expect(groups.items[1].name).toEqual(defaultGroups[1].name); }); it('by group id with zenQL', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let groups = await client.security.groups.getChildGroupsByGroupId(defaultGroups[0].id, { zenQL: 'name="Test"' }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/groups?pageIndex=0&pageSize=25&zenQL=name%3D%22Test%22`, getDefaultFetchRequest() ]); expect(groups).not.toBeNull(); expect(groups.items.length).toEqual(2); expect(groups.items[1].name).toEqual(defaultGroups[1].name); }); it('by group id with options', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let groups = await client.security.groups.getChildGroupsByGroupId(defaultGroups[0].id, { includeInherited: true, pageOptions: { pageIndex: 1, pageSize: 50 }, order: ['name'], includeSelf: true }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].id}/groups?includeInherited=true&includeSelf=true&order=name&pageIndex=1&pageSize=50`, getDefaultFetchRequest() ]); expect(groups).not.toBeNull(); expect(groups.items.length).toEqual(2); expect(groups.items[1].name).toEqual(defaultGroups[1].name); }); it('by group name', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getChildGroupsByGroupName(defaultGroups[0].name); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].name}/groups`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].name).toEqual(defaultGroups[1].name); }); it('by group name with options', async () => { let client = Zengenti.Contensis.Client.create(getDefaultConfig()); let users = await client.security.groups.getChildGroupsByGroupName(defaultGroups[0].name, { includeInherited: true, pageOptions: { pageIndex: 1, pageSize: 50 }, order: ['name'], includeSelf: true }); expect(global.fetch.calls.first().args[0]).toEqual(getDefaultAuthenticateUrl()); expect(global.fetch.calls.mostRecent().args).toEqual([ `http://my-website.com/api/security/groups/${defaultGroups[0].name}/groups?includeInherited=true&includeSelf=true&order=name&pageIndex=1&pageSize=50`, getDefaultFetchRequest() ]); expect(users).not.toBeNull(); expect(users.items.length).toEqual(2); expect(users.items[1].name).toEqual(defaultGroups[1].name); }); }); });