mirror of https://github.com/hashicorp/consul
147 lines
3.7 KiB
JavaScript
147 lines
3.7 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { module, test } from 'qunit';
|
|
|
|
import ExactSearch from 'consul-ui/utils/search/exact';
|
|
import predicates from 'consul-ui/search/predicates/token';
|
|
|
|
module('Unit | Search | Predicate | token', function () {
|
|
test('items are found by properties', function (assert) {
|
|
const actual = new ExactSearch(
|
|
[
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Policies: [],
|
|
},
|
|
{
|
|
AccessorID: 'HIT-id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Policies: [],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name-HIT',
|
|
Description: 'description',
|
|
Policies: [],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'desc-HIT-ription',
|
|
Policies: [],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Policies: [{ Name: 'policy' }, { Name: 'policy-HIT' }],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Roles: [{ Name: 'role' }, { Name: 'role-HIT' }],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
ServiceIdentities: [
|
|
{ ServiceName: 'service-identity' },
|
|
{ ServiceName: 'service-identity-HIT' },
|
|
],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
NodeIdentities: [{ NodeName: 'node-identity' }, { NodeName: 'node-identity-HIT' }],
|
|
},
|
|
],
|
|
{
|
|
finders: predicates,
|
|
}
|
|
).search('hit');
|
|
assert.equal(actual.length, 7);
|
|
});
|
|
test('items are not found', function (assert) {
|
|
const actual = new ExactSearch(
|
|
[
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Policies: [],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Policies: [{ Name: 'policy' }, { Name: 'policy-second' }],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Roles: [{ Name: 'role' }, { Name: 'role-second' }],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
ServiceIdentities: [{ ServiceName: 'si' }, { ServiceName: 'si-second' }],
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
NodeIdentities: [{ NodeName: 'si' }, { NodeName: 'si-second' }],
|
|
},
|
|
],
|
|
{
|
|
finders: predicates,
|
|
}
|
|
).search('hit');
|
|
assert.equal(actual.length, 0);
|
|
});
|
|
test('arraylike things can be empty', function (assert) {
|
|
const actual = new ExactSearch(
|
|
[
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Policies: null,
|
|
Roles: null,
|
|
ServiceIdentities: null,
|
|
NodeIdentities: null,
|
|
},
|
|
{
|
|
AccessorID: 'id',
|
|
Name: 'name',
|
|
Description: 'description',
|
|
Policies: [],
|
|
Roles: [],
|
|
ServiceIdentities: [],
|
|
NodeIdentities: [],
|
|
},
|
|
],
|
|
{
|
|
finders: predicates,
|
|
}
|
|
).search('hit');
|
|
assert.equal(actual.length, 0);
|
|
});
|
|
});
|