fix: 🐛 clear token on normalization (#1351)

* fix: 🐛 clear token on normalization
This commit is contained in:
Dharini Jeeva authored and GitHub committed 2022-09-26 18:25:02 -07:00
1 parent 0cba914045
commit 3fc22b4aa3
3 files changed
+86 -42

No files matched your search

@@ -1,4 +1,5 @@
import ApplicationSerializer from './application';
import { copy } from 'ember-copy';
export default class CredentialStoreSerializer extends ApplicationSerializer {
/**
@@ -38,4 +39,12 @@ export default class CredentialStoreSerializer extends ApplicationSerializer {
delete serialized.attributes;
return serialized;
}
normalize(typeClass, hash, ...rest) {
const normalizedHash = copy(hash, true);
const normalized = super.normalize(typeClass, normalizedHash, ...rest);
// Remove secret fields as we don't track them after being created/updated
normalized.data.attributes.token = '';
return normalized;
}
}
@@ -273,4 +273,35 @@ module('Unit | Serializer | credential store', function (hooks) {
};
assert.deepEqual(record.serialize(), expectedResult);
});
test('it normalizes vault type credential store record', async function (assert) {
assert.expect(1);
const store = this.owner.lookup('service:store');
const serializer = store.serializerFor('credential-store');
const credentialStoreModelClass =
store.createRecord('credential-store').constructor;
const payload = {
id: 'csvlt_123',
version: 1,
type: 'vault',
attributes: {
token: 'random',
token_hmac: 'completenonsense',
},
};
const normalized = serializer.normalize(credentialStoreModelClass, payload);
assert.deepEqual(normalized, {
data: {
attributes: {
type: 'vault',
version: 1,
token: '',
token_hmac: 'completenonsense',
},
type: 'credential-store',
id: 'csvlt_123',
relationships: {},
},
});
});
});
@@ -6,6 +6,7 @@
@showEditToggle={{if @model.isNew false true}}
as |form|
>
<form.input
@name='name'
@type='name'
@@ -136,48 +137,51 @@
</field.errors>
{{/if}}
</form.input>
{{#if (feature-flag 'vault-worker-filter')}}
<form.input
@name='worker_filter'
@type='text'
@value={{@model.worker_filter}}
@label={{t 'form.worker_filter.label'}}
@error={{@model.errors.worker_filter}}
@helperText={{t 'form.worker_filter.help'}}
@linkText={{t 'actions.learn-more'}}
@link={{doc-url 'worker-filters'}}
disabled={{@model.isSaving}}
readonly={{false}}
as |field|
>
{{#if @model.errors.worker_filter}}
<field.errors as |errors|>
{{#each @model.errors.worker_filter as |error|}}
<errors.message>{{error.message}}</errors.message>
{{/each}}
</field.errors>
{{/if}}
</form.input>
{{/if}}
<form.input
@name='token'
@type='text'
@value={{@model.token}}
@label={{t 'resources.credential-store.form.token.label'}}
@error={{@model.errors.token}}
@helperText={{t 'resources.credential-store.form.token.help'}}
disabled={{@model.isSaving}}
readonly={{false}}
as |field|
>
{{#if @model.errors.token}}
<field.errors as |errors|>
{{#each @model.errors.token as |error|}}
<errors.message>{{error.message}}</errors.message>
{{/each}}
</field.errors>
{{/if}}
</form.input>
{{#if (feature-flag 'vault-worker-filter')}}
<form.input
@name='worker_filter'
@type='text'
@value={{@model.worker_filter}}
@label={{t 'form.worker_filter.label'}}
@error={{@model.errors.worker_filter}}
@helperText={{t 'form.worker_filter.help'}}
@linkText={{t 'actions.learn-more'}}
@link={{doc-url 'worker-filters'}}
disabled={{@model.isSaving}}
readonly={{false}}
as |field|
>
{{#if @model.errors.worker_filter}}
<field.errors as |errors|>
{{#each @model.errors.worker_filter as |error|}}
<errors.message>{{error.message}}</errors.message>
{{/each}}
</field.errors>
{{/if}}
</form.input>
{{/if}}
{{#if (or @model.isNew form.isEditable)}}
<form.input
@name='token'
@type='text'
@value={{@model.token}}
@label={{t 'resources.credential-store.form.token.label'}}
@error={{@model.errors.token}}
@helperText={{t 'resources.credential-store.form.token.help'}}
disabled={{@model.isSaving}}
readonly={{false}}
as |field|
>
{{#if @model.errors.token}}
<field.errors as |errors|>
{{#each @model.errors.token as |error|}}
<errors.message>{{error.message}}</errors.message>
{{/each}}
</field.errors>
{{/if}}
</form.input>
{{/if}}
{{#unless @model.isNew}}
<form.input