ui: Pass through default environment settings when when booting dev/test (#14519)

* ui: Add initial peering listing acceptance tests (#14522)
This commit is contained in:
John Cowen 2022-09-12 11:22:06 +01:00 committed by GitHub
parent ad616a35d3
commit 4a9f6101c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 94 additions and 8 deletions

View File

@ -0,0 +1,14 @@
export const selectors = {
$: '.consul-peer-list',
collection: {
$: '[data-test-list-row]',
peer: {
$: 'li'
},
}
};
export default (collection, isPresent) => () => {
return collection(`${selectors.$} ${selectors.collection.$}`, {
peer: isPresent(selectors.collection.peer.$),
});
};

View File

@ -84,6 +84,7 @@ module.exports = function(environment, $ = process.env) {
SSOEnabled: false, SSOEnabled: false,
PeeringEnabled: false, PeeringEnabled: false,
PartitionsEnabled: false, PartitionsEnabled: false,
HCPEnabled: false,
LocalDatacenter: env('CONSUL_DATACENTER_LOCAL', 'dc1'), LocalDatacenter: env('CONSUL_DATACENTER_LOCAL', 'dc1'),
PrimaryDatacenter: env('CONSUL_DATACENTER_PRIMARY', 'dc1'), PrimaryDatacenter: env('CONSUL_DATACENTER_PRIMARY', 'dc1'),
APIPrefix: env('CONSUL_API_PREFIX', '') APIPrefix: env('CONSUL_API_PREFIX', '')
@ -110,6 +111,7 @@ module.exports = function(environment, $ = process.env) {
// in testing peering feature is on by default // in testing peering feature is on by default
PeeringEnabled: env('CONSUL_PEERINGS_ENABLED', true), PeeringEnabled: env('CONSUL_PEERINGS_ENABLED', true),
PartitionsEnabled: env('CONSUL_PARTITIONS_ENABLED', false), PartitionsEnabled: env('CONSUL_PARTITIONS_ENABLED', false),
HCPEnabled: env('CONSUL_HCP_ENABLED', false),
LocalDatacenter: env('CONSUL_DATACENTER_LOCAL', 'dc1'), LocalDatacenter: env('CONSUL_DATACENTER_LOCAL', 'dc1'),
PrimaryDatacenter: env('CONSUL_DATACENTER_PRIMARY', 'dc1'), PrimaryDatacenter: env('CONSUL_DATACENTER_PRIMARY', 'dc1'),
APIPrefix: env('CONSUL_API_PREFIX', '') APIPrefix: env('CONSUL_API_PREFIX', '')
@ -163,6 +165,7 @@ module.exports = function(environment, $ = process.env) {
SSOEnabled: env('CONSUL_SSO_ENABLED', true), SSOEnabled: env('CONSUL_SSO_ENABLED', true),
PeeringEnabled: env('CONSUL_PEERINGS_ENABLED', true), PeeringEnabled: env('CONSUL_PEERINGS_ENABLED', true),
PartitionsEnabled: env('CONSUL_PARTITIONS_ENABLED', true), PartitionsEnabled: env('CONSUL_PARTITIONS_ENABLED', true),
HCPEnabled: env('CONSUL_HCP_ENABLED', false),
LocalDatacenter: env('CONSUL_DATACENTER_LOCAL', 'dc1'), LocalDatacenter: env('CONSUL_DATACENTER_LOCAL', 'dc1'),
PrimaryDatacenter: env('CONSUL_DATACENTER_PRIMARY', 'dc1'), PrimaryDatacenter: env('CONSUL_DATACENTER_PRIMARY', 'dc1'),
APIPrefix: env('CONSUL_API_PREFIX', '') APIPrefix: env('CONSUL_API_PREFIX', '')

View File

@ -79,22 +79,37 @@ ${
( (
function(get, obj) { function(get, obj) {
Object.entries(obj).forEach(([key, value]) => { Object.entries(obj).forEach(([key, value]) => {
if(get(key) || (key === 'CONSUL_NSPACES_ENABLE' && ${ if(value.default || get(key) || (key === 'CONSUL_NSPACES_ENABLE' && ${
env('CONSUL_NSPACES_ENABLED') === '1' ? `true` : `false` env('CONSUL_NSPACES_ENABLED') === '1' ? `true` : `false`
})) { })) {
document.write(\`\\x3Cscript src="${rootURL}assets/\${value}/services.js">\\x3C/script>\`); document.write(\`\\x3Cscript src="${rootURL}assets/\${value.name}/services.js">\\x3C/script>\`);
document.write(\`\\x3Cscript src="${rootURL}assets/\${value}/routes.js">\\x3C/script>\`); document.write(\`\\x3Cscript src="${rootURL}assets/\${value.name}/routes.js">\\x3C/script>\`);
} }
}); });
} }
)( )(
key => document.cookie.split('; ').find(item => item.startsWith(\`\${key}=\`)), key => document.cookie.split('; ').find(item => item.startsWith(\`\${key}=\`)),
{ {
'CONSUL_ACLS_ENABLE': 'consul-acls', 'CONSUL_ACLS_ENABLE': {
'CONSUL_PEERINGS_ENABLE': 'consul-peerings', name: 'consul-acls',
'CONSUL_PARTITIONS_ENABLE': 'consul-partitions', default: ${config.operatorConfig.ACLsEnabled}
'CONSUL_NSPACES_ENABLE': 'consul-nspaces', },
'CONSUL_HCP_ENABLE': 'consul-hcp' 'CONSUL_PEERINGS_ENABLE': {
name: 'consul-peerings',
default: ${config.operatorConfig.PeeringEnabled}
},
'CONSUL_PARTITIONS_ENABLE': {
name: 'consul-partitions',
default: ${config.operatorConfig.PartitionsEnabled}
},
'CONSUL_NSPACES_ENABLE': {
name: 'consul-nspaces',
default: ${config.operatorConfig.NamespacesEnabled}
},
'CONSUL_HCP_ENABLE': {
name: 'consul-hcp',
default: ${config.operatorConfig.HCPEnabled}
}
} }
); );
</script> </script>

View File

@ -24,6 +24,7 @@ test(
SSOEnabled: false, SSOEnabled: false,
PartitionsEnabled: false, PartitionsEnabled: false,
PeeringEnabled: true, PeeringEnabled: true,
HCPEnabled: false,
LocalDatacenter: 'dc1', LocalDatacenter: 'dc1',
PrimaryDatacenter: 'dc1', PrimaryDatacenter: 'dc1',
APIPrefix: '', APIPrefix: '',
@ -41,6 +42,7 @@ test(
SSOEnabled: false, SSOEnabled: false,
PartitionsEnabled: false, PartitionsEnabled: false,
PeeringEnabled: true, PeeringEnabled: true,
HCPEnabled: false,
LocalDatacenter: 'dc1', LocalDatacenter: 'dc1',
PrimaryDatacenter: 'dc1', PrimaryDatacenter: 'dc1',
APIPrefix: '', APIPrefix: '',
@ -58,6 +60,7 @@ test(
SSOEnabled: true, SSOEnabled: true,
PartitionsEnabled: false, PartitionsEnabled: false,
PeeringEnabled: true, PeeringEnabled: true,
HCPEnabled: false,
LocalDatacenter: 'dc1', LocalDatacenter: 'dc1',
PrimaryDatacenter: 'dc1', PrimaryDatacenter: 'dc1',
APIPrefix: '', APIPrefix: '',
@ -72,6 +75,7 @@ test(
SSOEnabled: true, SSOEnabled: true,
PartitionsEnabled: true, PartitionsEnabled: true,
PeeringEnabled: true, PeeringEnabled: true,
HCPEnabled: false,
LocalDatacenter: 'dc1', LocalDatacenter: 'dc1',
PrimaryDatacenter: 'dc1', PrimaryDatacenter: 'dc1',
APIPrefix: '', APIPrefix: '',

View File

@ -0,0 +1,19 @@
@setupApplicationTest
Feature: dc / peers / index: Peers List
Background:
And 1 datacenter model with the value "dc-1"
And 3 peer models from yaml
---
- Name: a-peer
- Name: b-peer
- Name: z-peer
---
When I visit the peers page for yaml
---
dc: dc-1
---
Then the url should be /dc-1/peers
And the title should be "Peers - Consul"
Scenario:
Then I see 3 peer models

View File

@ -0,0 +1,11 @@
import steps from '../../steps';
// step definitions that are shared between features should be moved to the
// tests/acceptance/steps/steps.js file
export default function(assert) {
return steps(assert)
.then('I should find a file', function() {
assert.ok(true, this.step);
});
}

View File

@ -52,6 +52,9 @@ export default function(type, value, doc = document) {
case 'nspace': case 'nspace':
key = 'CONSUL_NSPACE_COUNT'; key = 'CONSUL_NSPACE_COUNT';
break; break;
case 'peer':
key = 'CONSUL_PEER_COUNT';
break;
} }
if (key) { if (key) {
obj[key] = value; obj[key] = value;

View File

@ -46,6 +46,9 @@ export default function(type) {
case 'nspace': case 'nspace':
requests = ['/v1/namespaces', '/v1/namespace/']; requests = ['/v1/namespaces', '/v1/namespace/'];
break; break;
case 'peer':
requests = ['/v1/peers', '/v1/peer/'];
break;
case 'topology': case 'topology':
requests = ['/v1/internal/ui/service-topology']; requests = ['/v1/internal/ui/service-topology'];
break; break;

View File

@ -46,6 +46,7 @@ import consulPolicyListFactory from 'consul-ui/components/consul/policy/list/pag
import consulAuthMethodListFactory from 'consul-ui/components/consul/auth-method/list/pageobject'; import consulAuthMethodListFactory from 'consul-ui/components/consul/auth-method/list/pageobject';
import consulIntentionListFactory from 'consul-ui/components/consul/intention/list/pageobject'; import consulIntentionListFactory from 'consul-ui/components/consul/intention/list/pageobject';
import consulNspaceListFactory from 'consul-ui/components/consul/nspace/list/pageobject'; import consulNspaceListFactory from 'consul-ui/components/consul/nspace/list/pageobject';
import consulPeerListFactory from 'consul-ui/components/consul/peer/list/test-support';
import consulKvListFactory from 'consul-ui/components/consul/kv/list/pageobject'; import consulKvListFactory from 'consul-ui/components/consul/kv/list/pageobject';
// pages // pages
@ -73,6 +74,7 @@ import intentions from 'consul-ui/tests/pages/dc/intentions/index';
import intention from 'consul-ui/tests/pages/dc/intentions/edit'; import intention from 'consul-ui/tests/pages/dc/intentions/edit';
import nspaces from 'consul-ui/tests/pages/dc/nspaces/index'; import nspaces from 'consul-ui/tests/pages/dc/nspaces/index';
import nspace from 'consul-ui/tests/pages/dc/nspaces/edit'; import nspace from 'consul-ui/tests/pages/dc/nspaces/edit';
import peers from 'consul-ui/tests/pages/dc/peers/index';
// utils // utils
const deletable = createDeletable(clickable); const deletable = createDeletable(clickable);
@ -109,6 +111,10 @@ const consulNspaceList = consulNspaceListFactory(
text, text,
morePopoverMenu morePopoverMenu
); );
const consulPeerList = consulPeerListFactory(
collection,
isPresent
);
const consulKvList = consulKvListFactory(collection, clickable, attribute, deletable); const consulKvList = consulKvListFactory(collection, clickable, attribute, deletable);
const consulTokenList = consulTokenListFactory( const consulTokenList = consulTokenListFactory(
collection, collection,
@ -230,6 +236,7 @@ export default {
nspace: create( nspace: create(
nspace(visitable, submitable, deletable, cancelable, policySelector, roleSelector) nspace(visitable, submitable, deletable, cancelable, policySelector, roleSelector)
), ),
peers: create(peers(visitable, creatable, consulPeerList, popoverSelect)),
settings: create(settings(visitable, submitable, isPresent)), settings: create(settings(visitable, submitable, isPresent)),
routingConfig: create(routingConfig(visitable, text)), routingConfig: create(routingConfig(visitable, text)),
}; };

View File

@ -0,0 +1,7 @@
export default function(visitable, creatable, items, popoverSelect) {
return creatable({
visit: visitable('/:dc/peers'),
peers: items(),
sort: popoverSelect('[data-test-sort-control]'),
});
}