open-vault/ui/tests/helpers/oidc-config.js

185 lines
5.4 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import { Response } from 'miragejs';
export const OIDC_BASE_URL = `/vault/access/oidc`;
export const SELECTORS = {
oidcHeader: '[data-test-oidc-header]',
oidcClientCreateButton: '[data-test-oidc-configure]',
oidcRouteTabs: '[data-test-oidc-tabs]',
oidcLandingImg: '[data-test-oidc-img]',
confirmActionButton: '[data-test-confirm-button="true"]',
inlineAlert: '[data-test-inline-alert]',
// client route
clientSaveButton: '[data-test-oidc-client-save]',
clientCancelButton: '[data-test-oidc-client-cancel]',
clientDeleteButton: '[data-test-oidc-client-delete] button',
clientEditButton: '[data-test-oidc-client-edit]',
clientDetailsTab: '[data-test-oidc-client-details]',
clientProvidersTab: '[data-test-oidc-client-providers]',
// assignment route
assignmentSaveButton: '[data-test-oidc-assignment-save]',
assignmentCreateButton: '[data-test-oidc-assignment-create]',
assignmentEditButton: '[data-test-oidc-assignment-edit]',
assignmentDeleteButton: '[data-test-oidc-assignment-delete] button',
assignmentCancelButton: '[data-test-oidc-assignment-cancel]',
assignmentDetailsTab: '[data-test-oidc-assignment-details]',
// scope routes
scopeSaveButton: '[data-test-oidc-scope-save]',
scopeCancelButton: '[data-test-oidc-scope-cancel]',
scopeDeleteButton: '[data-test-oidc-scope-delete] button',
scopeEditButton: '[data-test-oidc-scope-edit]',
scopeDetailsTab: '[data-test-oidc-scope-details]',
scopeEmptyState: '[data-test-oidc-scope-empty-state]',
scopeCreateButtonEmptyState: '[data-test-oidc-scope-create-empty-state]',
scopeCreateButton: '[data-test-oidc-scope-create]',
// key route
keySaveButton: '[data-test-oidc-key-save]',
keyCancelButton: '[data-test-oidc-key-cancel]',
keyDeleteButton: '[data-test-oidc-key-delete] button',
keyEditButton: '[data-test-oidc-key-edit]',
keyRotateButton: '[data-test-oidc-key-rotate] button',
keyDetailsTab: '[data-test-oidc-key-details]',
keyClientsTab: '[data-test-oidc-key-clients]',
// provider route
providerSaveButton: '[data-test-oidc-provider-save]',
providerCancelButton: '[data-test-oidc-provider-cancel]',
providerDeleteButton: '[data-test-oidc-provider-delete] button',
providerEditButton: '[data-test-oidc-provider-edit]',
providerDetailsTab: '[data-test-oidc-provider-details]',
providerClientsTab: '[data-test-oidc-provider-clients]',
};
export function overrideMirageResponse(httpStatus, data) {
if (httpStatus === 403) {
return new Response(
403,
{ 'Content-Type': 'application/json' },
JSON.stringify({ errors: ['permission denied'] })
);
}
if (httpStatus === 404) {
return new Response(404, { 'Content-Type': 'application/json' });
}
if (httpStatus === 200) {
return new Response(200, { 'Content-Type': 'application/json' }, JSON.stringify(data));
}
return {
request_id: crypto.randomUUID(),
lease_id: '',
renewable: false,
lease_duration: 0,
wrap_info: null,
warnings: null,
auth: null,
data: { ...data },
};
}
export function overrideCapabilities(requestPath, capabilitiesArray) {
// sample of capabilitiesArray: ['read', 'update']
return {
request_id: '40f7e44d-af5c-9b60-bd20-df72eb17e294',
lease_id: '',
renewable: false,
lease_duration: 0,
data: {
capabilities: capabilitiesArray,
[requestPath]: capabilitiesArray,
},
wrap_info: null,
warnings: null,
auth: null,
};
}
export async function clearRecord(store, modelType, id) {
await store
.findRecord(modelType, id)
.then((model) => {
deleteModelRecord(model);
})
.catch(() => {
// swallow error
});
}
const deleteModelRecord = async (model) => {
await model.destroyRecord();
};
// MOCK RESPONSES:
export const CLIENT_LIST_RESPONSE = {
keys: ['test-app', 'app-1'],
key_info: {
'test-app': {
assignments: ['allow_all'],
client_id: 'whaT7KB0C3iBH1l3rXhd5HPf0n6vXU0s',
client_secret: 'hvo_secret_nkJSTu2NVYqylXwFbFijsTxJHg4Ic4gqSJw7uOZ4FbSXcObngDkKoVsvyndrf2O8',
client_type: 'confidential',
id_token_ttl: 0,
key: 'default',
redirect_uris: [],
},
'app-1': {
assignments: ['allow_all'],
client_id: 'HkmsTA4GG17j0Djy4EUAB2VAyzuLVewg',
client_secret: 'hvo_secret_g3f30MxAJWLXhhrCejbG4zY3O4LEHhEIO24aMy181AYKnfQtWTVV924ZmnlpUFUw',
client_type: 'confidential',
id_token_ttl: 0,
key: 'test-key',
redirect_uris: [],
},
},
};
export const CLIENT_DATA_RESPONSE = {
access_token_ttl: 0,
assignments: ['allow_all'],
client_id: 'whaT7KB0C3iBH1l3rXhd5HPf0n6vXU0s',
client_secret: 'hvo_secret_nkJSTu2NVYqylXwFbFijsTxJHg4Ic4gqSJw7uOZ4FbSXcObngDkKoVsvyndrf2O8',
client_type: 'confidential',
id_token_ttl: 0,
key: 'default',
redirect_uris: [],
};
export const ASSIGNMENT_LIST_RESPONSE = {
keys: ['allow_all', 'test-assignment'],
};
export const ASSIGNMENT_DATA_RESPONSE = {
group_ids: ['262ca5b9-7b69-0a84-446a-303dc7d778af'],
entity_ids: ['b6094ac6-baf4-6520-b05a-2bd9f07c66da'],
};
export const SCOPE_LIST_RESPONSE = {
keys: ['test-scope'],
};
export const SCOPE_DATA_RESPONSE = {
description: 'this is a test',
template: `{
"groups": {{identity.entity.groups.names}}
}`,
};
export const PROVIDER_LIST_RESPONSE = {
keys: ['test-provider'],
};
export const PROVIDER_DATA_RESPONSE = {
allowed_client_ids: ['*'],
issuer: '',
scopes_supported: ['test-scope'],
};