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::vpn/# - neutron::vpn/" $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
|
||||
# TODO
|
||||
sed -i "s#- pages/network/floatingip.spec.js#\#- pages/network/floatingip.spec.js#" $config_file
|
||||
|
@ -15,6 +15,7 @@ env:
|
||||
- neutron::qos
|
||||
- neutron::vpn
|
||||
- neutron::port-forwarding
|
||||
- neutron::firewall
|
||||
- octavia
|
||||
testFiles:
|
||||
# network
|
||||
@ -26,4 +27,7 @@ testFiles:
|
||||
- pages/network/security-group.spec.js
|
||||
- pages/network/vpn.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
|
||||
|
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 topologyUrl = '/network/topo';
|
||||
export const securityGroupListUrl = '/network/security-group';
|
||||
export const firewallListUrl = '/network/firewall';
|
||||
|
||||
// management
|
||||
export const recycleBinListUrl = '/management/recycle-bin';
|
||||
@ -86,9 +87,8 @@ export default {
|
||||
networkQosPolicy: policyListUrl,
|
||||
fip: fipListUrl,
|
||||
port: portListUrl,
|
||||
|
||||
// security
|
||||
securityGroup: securityGroupListUrl,
|
||||
firewall: firewallListUrl,
|
||||
|
||||
// identity
|
||||
project: projectListUrl,
|
||||
|
@ -27,6 +27,7 @@ import urlMap, {
|
||||
projectListUrl,
|
||||
settingUrl,
|
||||
flavorListUrl,
|
||||
firewallListUrl,
|
||||
} from './constants';
|
||||
|
||||
Cypress.Commands.add('createInstance', ({ name, networkName }) => {
|
||||
@ -295,3 +296,41 @@ Cypress.Commands.add('deleteAll', (resourceName, name, tab) => {
|
||||
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…
Reference in New Issue
Block a user