passbolt-styleguide
Version:
Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.
216 lines (206 loc) • 7.69 kB
JavaScript
/**
* Returns the default app context for the unit test
* @param appContext An existing app context
* @returns {any}
*/
import { v4 as uuidv4 } from "uuid";
import { ResourceWorkspaceFilterTypes } from "./ResourceWorkspaceContext";
import {
defaultFolderDto,
folderWithReadPermissionDto,
} from "../../shared/models/entity/folder/folderEntity.test.data";
import {
defaultResourceDto,
resourceStandaloneTotpDto,
resourceWithTotpDto,
} from "../../shared/models/entity/resource/resourceEntity.test.data";
import ColumnsResourceSettingCollection from "../../shared/models/entity/resource/columnsResourceSettingCollection";
import { defaultUserAppContext } from "./ExtAppContext.test.data";
import { defaultPasswordExpirySettingsContext } from "./PasswordExpirySettingsContext.test.data";
import { defaultUserRbacContext } from "../../shared/context/Rbac/RbacContext.test.data";
import {
readPermissionDto,
updatePermissionDto,
} from "../../shared/models/entity/permission/permissionEntity.test.data";
import { defaultResourceMetadataDto } from "../../shared/models/entity/resource/metadata/resourceMetadataEntity.test.data";
import { defaultTagDto } from "../../shared/models/entity/tag/tagEntity.test.data";
import {
resourceAllTypesDtosCollection,
resourceAllTypesDtosCollectionAndVariousPermission,
} from "../../shared/models/entity/resource/resourcesCollection.test.data";
import { defaultClipboardContext } from "./Clipboard/ManagedClipboardServiceProvider.test.data";
export function defaultAppContext(appContext) {
const folders = [defaultFolderDto({ name: "Folder searchable" })];
const resourceWithEncryptedDescriptionToUpdateId = uuidv4();
const resourceWithTotpToUpdateId = uuidv4();
const resourceTotpToUpdateId = uuidv4();
const resourceWithEncryptedDescriptionToReadId = uuidv4();
const resourceWithTotpToReadId = uuidv4();
const resourceTotpToReadId = uuidv4();
const resources = [
defaultResourceDto({ metadata: defaultResourceMetadataDto({ name: "Resource owned" }) }, { withFavorite: true }),
resourceWithTotpDto({
metadata: defaultResourceMetadataDto({ name: "Resource in folder" }),
folder_parent_id: folders[0].id,
}),
resourceStandaloneTotpDto({ tags: [defaultTagDto()] }),
defaultResourceDto({
permission: updatePermissionDto({ aco_foreign_key: resourceWithEncryptedDescriptionToUpdateId }),
}),
resourceWithTotpDto({ permission: updatePermissionDto({ aco_foreign_key: resourceWithTotpToUpdateId }) }),
resourceStandaloneTotpDto({ permission: updatePermissionDto({ aco_foreign_key: resourceTotpToUpdateId }) }),
defaultResourceDto({
permission: readPermissionDto({ aco_foreign_key: resourceWithEncryptedDescriptionToReadId }),
}),
resourceWithTotpDto({ permission: readPermissionDto({ aco_foreign_key: resourceWithTotpToReadId }) }),
resourceStandaloneTotpDto({ permission: readPermissionDto({ aco_foreign_key: resourceTotpToReadId }) }),
defaultResourceDto({ personal: true }),
defaultResourceDto({ personal: true }),
];
const foldersMapById = folders.reduce((result, folder) => {
result[folder.id] = folder;
return result;
}, {});
const defaultAppContext = defaultUserAppContext({
folders,
foldersMapById,
resources,
});
return Object.assign(defaultAppContext, appContext || {});
}
/**
* Default props
*/
export function defaultProps() {
return {
passwordExpiryContext: defaultPasswordExpirySettingsContext(),
rbacContext: defaultUserRbacContext(),
};
}
/**
* Returns the default resource workspace context data.
* @param {object} data Override the default context.
* @returns {object}
*/
export function defaultResourceWorkspaceContext(data = {}) {
return {
details: {
folder: null,
resource: null,
},
filteredResources: [],
selectedResources: [],
columnsResourceSetting: new ColumnsResourceSettingCollection([
{ id: "favorite", label: "Favorite", position: 1, show: true },
{ id: "attentionRequired", label: "Attention", position: 2, show: true },
{ id: "icon", label: "Icon", position: 3, show: true },
{ id: "name", label: "Name", position: 4, show: true },
{ id: "expired", label: "Expiry", position: 5, show: true },
{ id: "username", label: "Username", position: 6, show: true },
{ id: "password", label: "Password", position: 7, show: true },
{ id: "totp", label: "TOTP", position: 8, show: true },
{ id: "uri", label: "URI", position: 9, show: true },
{ id: "modified", label: "Modified", position: 10, show: true },
{ id: "location", label: "Location", position: 11, show: true },
]),
filter: {
type: ResourceWorkspaceFilterTypes.ALL,
},
scrollTo: {},
sorter: {
propertyName: "modified",
},
onGoToResourceUriRequested: jest.fn(),
onResourceCopied: jest.fn(),
onResourcePreviewed: jest.fn(),
onResourceSelected: {
all: jest.fn(),
none: jest.fn(),
multiple: jest.fn(),
range: jest.fn(),
single: jest.fn(),
},
onResourceScrolled: jest.fn(),
onFolderScrolled: jest.fn(),
onResourceEdited: jest.fn(),
onSorterChanged: jest.fn(),
onResourcesToExport: jest.fn(),
onResourceFileImportResult: jest.fn(),
onResourceFileToImport: jest.fn(),
onLockDetail: jest.fn(),
onChangeColumnView: jest.fn(),
onChangeColumnsSettings: jest.fn(),
resetGridColumnsSettings: jest.fn(),
onResourceDescriptionDecrypted: jest.fn(),
onChangeRowSettingsHeight: jest.fn(),
clipboardContext: defaultClipboardContext(),
...data,
};
}
/**
* Returns the resource workspace context data with a folder I own selected.
* @param {object} data Override the default context.
* @returns {object}
*/
export function resourceWorkspaceContextWithSelectedFolderIOwn(data = {}) {
return defaultResourceWorkspaceContext({
filter: {
type: ResourceWorkspaceFilterTypes.FOLDER,
payload: {
folder: defaultFolderDto(),
},
},
...data,
});
}
/**
* Returns the resource workspace context data with a folder I can read only selected.
* @param {object} data Override the default context.
* @returns {object}
*/
export function resourceWorkspaceContextWithSelectedFolderICanRead(data = {}) {
return defaultResourceWorkspaceContext({
filter: {
type: ResourceWorkspaceFilterTypes.FOLDER,
payload: {
folder: folderWithReadPermissionDto(),
},
},
...data,
});
}
/**
* Returns the resource workspace context data with a resource I own selected.
* @param {object} data Override the default context.
* @returns {object}
*/
export function resourceWorkspaceContextWithSelectedResourceIOwn(data = {}) {
return defaultResourceWorkspaceContext({
details: {
resource: defaultResourceDto(),
},
...data,
});
}
/**
* Returns the resource workspace context data with a set of selected resources I own.
* @param {object} data Override the default context.
* @returns {object}
*/
export function resourceWorkspaceContextWithSelectedResourcesIOwn(data = {}) {
return defaultResourceWorkspaceContext({
selectedResources: resourceAllTypesDtosCollection(),
...data,
});
}
/**
* Returns the resource workspace context data with a set of selected resources I own.
* @param {object} data Override the default context.
* @returns {object}
*/
export function resourceWorkspaceContextWithSelectedResourcesAndVariousPermission(data = {}) {
return defaultResourceWorkspaceContext({
selectedResources: resourceAllTypesDtosCollectionAndVariousPermission(),
...data,
});
}