test: add firewall e2e
add e2e cases for firwall/firewall-policy/firewall-rule Change-Id: I983b9ca2729ba8e762d67d42186a481b7224e18b
This commit is contained in:
parent
5c129f2705
commit
2d8d8a76d9
@ -17,6 +17,7 @@
|
|||||||
sed -i "s/- neutron::qos/# - neutron::qos/" $config_file
|
sed -i "s/- neutron::qos/# - neutron::qos/" $config_file
|
||||||
sed -i "s/- neutron::vpn/# - neutron::vpn/" $config_file
|
sed -i "s/- neutron::vpn/# - neutron::vpn/" $config_file
|
||||||
sed -i "s/- neutron::port-forwarding/# - neutron::port-forwarding/" $config_file
|
sed -i "s/- neutron::port-forwarding/# - neutron::port-forwarding/" $config_file
|
||||||
|
sed -i "s/- neutron::firewall/# - neutron::firewall/" $config_file
|
||||||
sed -i "s/- octavia/# - octavia/" $config_file
|
sed -i "s/- octavia/# - octavia/" $config_file
|
||||||
# TODO
|
# TODO
|
||||||
sed -i "s#- pages/network/floatingip.spec.js#\#- pages/network/floatingip.spec.js#" $config_file
|
sed -i "s#- pages/network/floatingip.spec.js#\#- pages/network/floatingip.spec.js#" $config_file
|
||||||
|
@ -15,6 +15,7 @@ env:
|
|||||||
- neutron::qos
|
- neutron::qos
|
||||||
- neutron::vpn
|
- neutron::vpn
|
||||||
- neutron::port-forwarding
|
- neutron::port-forwarding
|
||||||
|
- neutron::firewall
|
||||||
- octavia
|
- octavia
|
||||||
testFiles:
|
testFiles:
|
||||||
# network
|
# network
|
||||||
@ -26,4 +27,7 @@ testFiles:
|
|||||||
- pages/network/security-group.spec.js
|
- pages/network/security-group.spec.js
|
||||||
- pages/network/vpn.spec.js
|
- pages/network/vpn.spec.js
|
||||||
- pages/network/lb.spec.js
|
- pages/network/lb.spec.js
|
||||||
|
- pages/network/firewall.spec.js
|
||||||
|
- pages/network/firewall-policy.spec.js
|
||||||
|
- pages/network/firewall-rule.spec.js
|
||||||
# - pages/network/topology.spec.js
|
# - pages/network/topology.spec.js
|
||||||
|
94
test/e2e/integration/pages/network/firewall-policy.spec.js
Normal file
94
test/e2e/integration/pages/network/firewall-policy.spec.js
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
// Copyright 2021 99cloud
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
import { onlyOn } from '@cypress/skip-test';
|
||||||
|
import { firewallListUrl } from '../../../support/constants';
|
||||||
|
|
||||||
|
const fwaasEnabled = (Cypress.env('extensions') || []).includes(
|
||||||
|
'neutron::firewall'
|
||||||
|
);
|
||||||
|
|
||||||
|
onlyOn(!fwaasEnabled, () => {
|
||||||
|
describe('Skip The Network Firewall Policy Page', () => {
|
||||||
|
it('successfully skip', () => {});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
onlyOn(fwaasEnabled, () => {
|
||||||
|
describe('The Firewall Policy Page', () => {
|
||||||
|
const listUrl = firewallListUrl;
|
||||||
|
const uuid = Cypress._.random(0, 1e6);
|
||||||
|
const name = `e2e-firewall-policy-${uuid}`;
|
||||||
|
const newname = `${name}-1`;
|
||||||
|
const ruleName = `e2e-rule-for-fw-policy-${uuid}`;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.login(listUrl).wait(5000).clickTab('Firewall Policies', 'policies');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully prepair resource', () => {
|
||||||
|
cy.createFirewallRule({ name: ruleName });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully create', () => {
|
||||||
|
cy.clickHeaderActionButton(0)
|
||||||
|
.formInput('name', name)
|
||||||
|
.formText('description', name)
|
||||||
|
.clickModalActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully detail', () => {
|
||||||
|
cy.tableSearchText(name).goToDetail().checkDetailName(name);
|
||||||
|
cy.goBackToList(listUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully insert rule', () => {
|
||||||
|
cy.tableSearchText(name)
|
||||||
|
.clickActionInMore('Insert Rule')
|
||||||
|
.formTableSelectBySearch('rule', ruleName)
|
||||||
|
.clickModalActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully remove rule', () => {
|
||||||
|
cy.tableSearchText(name)
|
||||||
|
.clickActionInMore('Remove Rule')
|
||||||
|
.formTableSelectBySearch('rule', ruleName)
|
||||||
|
.clickModalActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully edit', () => {
|
||||||
|
cy.tableSearchText(name)
|
||||||
|
.clickFirstActionButton()
|
||||||
|
.wait(5000)
|
||||||
|
.formInput('name', newname)
|
||||||
|
.formText('description', 'description')
|
||||||
|
.clickModalActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully delete', () => {
|
||||||
|
cy.tableSearchText(newname).clickConfirmActionInMore('Delete');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully disable delete', () => {
|
||||||
|
cy.tableSearchText('default ingress')
|
||||||
|
.selectFirst()
|
||||||
|
.clickHeaderActionButtonByTitle('Delete')
|
||||||
|
.checkDisableAction();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully delete related resources', () => {
|
||||||
|
cy.deleteAll('firewall', ruleName, 'Firewall Rules');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
64
test/e2e/integration/pages/network/firewall-rule.spec.js
Normal file
64
test/e2e/integration/pages/network/firewall-rule.spec.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
// Copyright 2021 99cloud
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
import { onlyOn } from '@cypress/skip-test';
|
||||||
|
import { firewallListUrl } from '../../../support/constants';
|
||||||
|
|
||||||
|
const fwaasEnabled = (Cypress.env('extensions') || []).includes(
|
||||||
|
'neutron::firewall'
|
||||||
|
);
|
||||||
|
|
||||||
|
onlyOn(!fwaasEnabled, () => {
|
||||||
|
describe('Skip The Network Firewall Rule Page', () => {
|
||||||
|
it('successfully skip', () => {});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
onlyOn(fwaasEnabled, () => {
|
||||||
|
describe('The Firewall Rule Page', () => {
|
||||||
|
const listUrl = firewallListUrl;
|
||||||
|
const name = `e2e-firewall-rule-${Cypress._.random(0, 1e6)}`;
|
||||||
|
const newname = `${name}-1`;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.login(listUrl).wait(5000).clickTab('Firewall Rules', 'rules');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully create', () => {
|
||||||
|
cy.clickHeaderActionButton(0)
|
||||||
|
.wait(2000)
|
||||||
|
.formInput('name', name)
|
||||||
|
.formText('description', name)
|
||||||
|
.clickFormActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully detail', () => {
|
||||||
|
cy.tableSearchText(name).goToDetail().checkDetailName(name);
|
||||||
|
cy.goBackToList(listUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully edit', () => {
|
||||||
|
cy.tableSearchText(name)
|
||||||
|
.clickFirstActionButton()
|
||||||
|
.wait(5000)
|
||||||
|
.formInput('name', newname)
|
||||||
|
.formText('description', 'description')
|
||||||
|
.clickFormActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully delete', () => {
|
||||||
|
cy.tableSearchText(newname).clickConfirmActionButton('Delete');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
106
test/e2e/integration/pages/network/firewall.spec.js
Normal file
106
test/e2e/integration/pages/network/firewall.spec.js
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
// Copyright 2021 99cloud
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
import { onlyOn } from '@cypress/skip-test';
|
||||||
|
import { firewallListUrl } from '../../../support/constants';
|
||||||
|
|
||||||
|
const fwaasEnabled = (Cypress.env('extensions') || []).includes(
|
||||||
|
'neutron::firewall'
|
||||||
|
);
|
||||||
|
|
||||||
|
onlyOn(!fwaasEnabled, () => {
|
||||||
|
describe('Skip The Network Firewall Page', () => {
|
||||||
|
it('successfully skip', () => {});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
onlyOn(fwaasEnabled, () => {
|
||||||
|
describe('The Firewall Page', () => {
|
||||||
|
const listUrl = firewallListUrl;
|
||||||
|
const uuid = Cypress._.random(0, 1e6);
|
||||||
|
const name = `e2e-firewall-${uuid}`;
|
||||||
|
const newname = `${name}-1`;
|
||||||
|
const inPolicyName = `e2e-ingress-policy-for-firewall-${uuid}`;
|
||||||
|
const ePolicyName = `e2e-egress-policy-for-firewall-${uuid}`;
|
||||||
|
const networkName = `e2e-network-for-firewall-${uuid}`;
|
||||||
|
const routerName = `e2e-network-for-firewall-${uuid}`;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.login(listUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully prepair resource', () => {
|
||||||
|
cy.createFirewallPolicy({ name: inPolicyName });
|
||||||
|
cy.createFirewallPolicy({ name: ePolicyName });
|
||||||
|
cy.createNetwork({ name: networkName });
|
||||||
|
cy.createRouter({ name: routerName, network: networkName });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully create', () => {
|
||||||
|
cy.clickHeaderActionButton(0)
|
||||||
|
.wait(5000)
|
||||||
|
.formInput('name', name)
|
||||||
|
.formTableSelectBySearch('ingressPolicy', inPolicyName)
|
||||||
|
.formTableSelectBySearch('egressPolicy', ePolicyName)
|
||||||
|
.formTabClick('ports', 1)
|
||||||
|
.wait(2000)
|
||||||
|
.formTableSelectBySearch('ports', networkName)
|
||||||
|
.formText('description', name)
|
||||||
|
.clickFormActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully detail', () => {
|
||||||
|
cy.tableSearchText(name).goToDetail().clickDetailTab('Ports', 'ports');
|
||||||
|
cy.goBackToList(listUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully disable delete', () => {
|
||||||
|
cy.tableSearchText(name)
|
||||||
|
.selectAll()
|
||||||
|
.clickHeaderActionButtonByTitle('Delete')
|
||||||
|
.checkDisableAction();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully manage port', () => {
|
||||||
|
cy.tableSearchText(name)
|
||||||
|
.clickActionButtonByTitle('Manage Ports')
|
||||||
|
.formTabClick('ports', 1)
|
||||||
|
.wait(2000)
|
||||||
|
.formTableClearSelect('ports')
|
||||||
|
.clickModalActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully edit', () => {
|
||||||
|
cy.tableSearchText(name)
|
||||||
|
.clickFirstActionButton()
|
||||||
|
.wait(5000)
|
||||||
|
.formInput('name', newname)
|
||||||
|
.formTableClearSelect('ingressPolicy')
|
||||||
|
.formTableClearSelect('egressPolicy')
|
||||||
|
.formText('description', 'description')
|
||||||
|
.clickModalActionSubmitButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully delete', () => {
|
||||||
|
cy.tableSearchText(newname).clickConfirmActionInMore('Delete');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('successfully delete related resources', () => {
|
||||||
|
cy.deleteAll('firewall', inPolicyName, 'Firewall Policies');
|
||||||
|
cy.deleteAll('firewall', ePolicyName, 'Firewall Policies');
|
||||||
|
cy.deleteRouter(routerName, networkName);
|
||||||
|
cy.deleteAll('network', networkName);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -41,6 +41,7 @@ export const vpnListUrl = '/network/vpn';
|
|||||||
export const lbListUrl = '/network/load-balancers';
|
export const lbListUrl = '/network/load-balancers';
|
||||||
export const topologyUrl = '/network/topo';
|
export const topologyUrl = '/network/topo';
|
||||||
export const securityGroupListUrl = '/network/security-group';
|
export const securityGroupListUrl = '/network/security-group';
|
||||||
|
export const firewallListUrl = '/network/firewall';
|
||||||
|
|
||||||
// management
|
// management
|
||||||
export const recycleBinListUrl = '/management/recycle-bin';
|
export const recycleBinListUrl = '/management/recycle-bin';
|
||||||
@ -86,9 +87,8 @@ export default {
|
|||||||
networkQosPolicy: policyListUrl,
|
networkQosPolicy: policyListUrl,
|
||||||
fip: fipListUrl,
|
fip: fipListUrl,
|
||||||
port: portListUrl,
|
port: portListUrl,
|
||||||
|
|
||||||
// security
|
|
||||||
securityGroup: securityGroupListUrl,
|
securityGroup: securityGroupListUrl,
|
||||||
|
firewall: firewallListUrl,
|
||||||
|
|
||||||
// identity
|
// identity
|
||||||
project: projectListUrl,
|
project: projectListUrl,
|
||||||
|
@ -27,6 +27,7 @@ import urlMap, {
|
|||||||
projectListUrl,
|
projectListUrl,
|
||||||
settingUrl,
|
settingUrl,
|
||||||
flavorListUrl,
|
flavorListUrl,
|
||||||
|
firewallListUrl,
|
||||||
} from './constants';
|
} from './constants';
|
||||||
|
|
||||||
Cypress.Commands.add('createInstance', ({ name, networkName }) => {
|
Cypress.Commands.add('createInstance', ({ name, networkName }) => {
|
||||||
@ -295,3 +296,41 @@ Cypress.Commands.add('deleteAll', (resourceName, name, tab) => {
|
|||||||
cy.clickHeaderConfirmButtonByTitle('Delete');
|
cy.clickHeaderConfirmButtonByTitle('Delete');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add(
|
||||||
|
'createFirewallRule',
|
||||||
|
({
|
||||||
|
name,
|
||||||
|
protocol = 'TCP', // TCP UDP ICMP ANY
|
||||||
|
ruleAction = 'ALLOW', // ALLOW DENY REJECT
|
||||||
|
ipVersion = 'IPv4', // IPv4 IPv6
|
||||||
|
enabled = true,
|
||||||
|
}) => {
|
||||||
|
cy.visit(firewallListUrl)
|
||||||
|
.wait(5000)
|
||||||
|
.clickTab('Firewall Rules')
|
||||||
|
.clickHeaderActionButton(0)
|
||||||
|
.wait(2000)
|
||||||
|
.formInput('name', name)
|
||||||
|
.formRadioChooseByLabel('protocol', protocol)
|
||||||
|
.formSelect('action', ruleAction)
|
||||||
|
.formRadioChooseByLabel('ip_version', ipVersion);
|
||||||
|
if (!enabled) cy.formCheckboxClick('options', 0); // Enabled: default is checked
|
||||||
|
cy.clickFormActionSubmitButton();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
Cypress.Commands.add(
|
||||||
|
'createFirewallPolicy',
|
||||||
|
({ name, enableShared = false, enableAudited = false }) => {
|
||||||
|
cy.visit(firewallListUrl)
|
||||||
|
.wait(5000)
|
||||||
|
.clickTab('Firewall Policies')
|
||||||
|
.clickHeaderActionButton(0)
|
||||||
|
.wait(2000)
|
||||||
|
.formInput('name', name);
|
||||||
|
if (enableShared) cy.formCheckboxClick('options', 0); // Shared
|
||||||
|
if (enableAudited) cy.formCheckboxClick('options', 1); // Audited
|
||||||
|
cy.clickModalActionSubmitButton();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user