hashicorp-copywrite[bot] 5fb9df1640
[COMPLIANCE] License changes (#18443)
* Adding explicit MPL license for sub-package

This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository.

* Adding explicit MPL license for sub-package

This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository.

* Updating the license from MPL to Business Source License

Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at <Blog URL>, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl.

* add missing license headers

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

---------

Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
2023-08-11 09:12:13 -04:00

128 lines
3.7 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import { module, skip, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import { run } from '@ember/runloop';
import { set } from '@ember/object';
import sinon from 'sinon';
module('Unit | Serializer | kv', function (hooks) {
setupTest(hooks);
// Replace this with your real tests.
test('it exists', function (assert) {
const store = this.owner.lookup('service:store');
const serializer = store.serializerFor('kv');
assert.ok(serializer);
});
// TODO: Would undefined be better instead of null?
test("it serializes records that aren't strings to null", function (assert) {
const store = this.owner.lookup('service:store');
const record = run(() => store.createRecord('kv', {}));
const serializedRecord = record.serialize();
// anything but a string ends up as null
assert.equal(serializedRecord, null);
});
skip(
'what should respondForCreate/UpdateRecord return when createRecord is called with a `false` payload'
);
test('respondForCreate/UpdateRecord returns a KV uid object when receiving a `true` payload', function (assert) {
assert.expect(2);
const uid = 'key/name';
const dc = 'dc1';
const nspace = 'default';
const partition = 'default';
const expected = {
uid: JSON.stringify([partition, nspace, dc, uid]),
Key: uid,
Namespace: nspace,
Partition: partition,
Datacenter: dc,
};
const serializer = this.owner.lookup('serializer:kv');
serializer.primaryKey = 'uid';
serializer.slugKey = 'Key';
['respondForCreateRecord', 'respondForUpdateRecord'].forEach(function (item) {
const actual = serializer[item](
function (cb) {
const headers = {
'X-Consul-Namespace': nspace,
};
const body = true;
return cb(headers, body);
},
{},
{
Key: uid,
Datacenter: dc,
Partition: partition,
}
);
assert.deepEqual(actual, expected);
});
});
test("respondForCreate/UpdateRecord returns the original object if it's not a Boolean", function (assert) {
assert.expect(1);
const uid = 'key/name';
const dc = 'dc1';
const nspace = 'default';
const partition = 'default';
const expected = {
uid: JSON.stringify([partition, nspace, dc, uid]),
Key: uid,
Partition: partition,
Namespace: nspace,
Datacenter: dc,
};
const serializer = this.owner.lookup('serializer:kv');
serializer.primaryKey = 'uid';
serializer.slugKey = 'Key';
['respondForCreateRecord'].forEach(function (item) {
const actual = serializer[item](
function (cb) {
const headers = {
'X-Consul-Namespace': nspace,
'X-Consul-Partition': partition,
};
const body = {
Key: uid,
Datacenter: dc,
};
return cb(headers, body);
},
{},
{
Key: uid,
Datacenter: dc,
Partition: partition,
}
);
assert.deepEqual(actual, expected);
});
});
test('serialize decodes Value if its a string', function (assert) {
const serializer = this.owner.lookup('serializer:kv');
set(serializer, 'decoder', {
execute: sinon.stub().returnsArg(0),
});
//
const expected = 'value';
const snapshot = {
attr: function (prop) {
return expected;
},
};
const options = {};
const actual = serializer.serialize(snapshot, options);
assert.equal(actual, expected);
assert.ok(serializer.decoder.execute.calledOnce);
});
});