b5de3f8436
Change-Id: I83c49d8d8dde9d6f2241905d34804d225381c241
361 lines
14 KiB
JavaScript
361 lines
14 KiB
JavaScript
/*
|
|
* Copyright 2013 Mirantis, Inc.
|
|
*
|
|
* 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.
|
|
**/
|
|
casper.start();
|
|
casper.createCluster({name: 'Test Cluster'});
|
|
casper.loadPage('#cluster/1/network').waitForSelector('#tab-network > *');
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Testing cluster networks: layout rendered');
|
|
this.test.assertEvalEquals(function() {return $('.net-manager input[type=radio]').length}, 2, 'Network manager options are presented');
|
|
this.test.assertExists('.net-manager input[value=FlatDHCPManager]:checked', 'Flat DHCP manager is chosen');
|
|
this.test.assertEvalEquals(function() {return $('legend.networks:not(.dns-servers)').length}, 5, 'All networks are presented');
|
|
this.test.assertDoesntExist('.verify-networks-btn:disabled', 'Verify networks button is enabled');
|
|
this.test.assertExists('.apply-btn:disabled', 'Save networks button is disabled');
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Testing cluster networks: Save button interractions');
|
|
var initialValue = this.evaluate(function(initialValue) {
|
|
return __utils__.getFieldValue('management-cidr');
|
|
});
|
|
this.fill('.networks-table', {'management-cidr': '240.0.1.0/25'});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
this.test.assertExist('.apply-btn:not(:disabled)', 'Save networks button is enabled if there are changes');
|
|
this.fill('.networks-table', {'management-cidr': initialValue});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
this.test.assertExists('.apply-btn:disabled', 'Save networks button is disabled again if there are no changes');
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Testing cluster networks: change network manager');
|
|
this.click('.net-manager input[type=radio]:not(:checked)');
|
|
this.test.assertDoesntExist('.fixed-row dive.hide', 'Amount and size fields for a fixed network are presented in VLAN mode');
|
|
this.test.assertExists('.apply-btn:not(:disabled)', 'Save networks button is enabled after manager was changed');
|
|
this.click('.net-manager input[type=radio]:not(:checked)');
|
|
this.test.assertDoesntExist('.fixed-row .amount:visible', 'Amount field was hidden after revert to FlatDHCP');
|
|
this.test.assertDoesntExist('.fixed-row .network_size:visible', 'Size field was hidden after revert to FlatDHCP');
|
|
this.test.assertExists('.apply-btn:disabled', 'Save networks button is disabled again after revert to FlatDHCP');
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Testing cluster networks: data validation');
|
|
var initialValue = this.evaluate(function(initialValue) {
|
|
return __utils__.getFieldValue('management-cidr');
|
|
});
|
|
this.fill('.networks-table', {'management-cidr': '240.0.1.0/245'});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
this.test.assertExists('input[name=management-cidr].error', 'Field validation has worked');
|
|
this.test.assertExists('.apply-btn:disabled', 'Save networks button is disabled if there is validation error');
|
|
this.fill('.networks-table', {'management-cidr': initialValue});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
this.test.assertDoesntExist('input[name=management-cidr].error', 'Field validation works properly');
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Check Amount field validation');
|
|
this.click('.net-manager input[type=radio]:not(:checked)');
|
|
this.test.assertExists('.net-manager input[value=VlanManager]:checked', 'VLAN manager is chosen');
|
|
var initialAmountValue = this.evaluate(function(initialValue) {
|
|
return __utils__.getFieldValue('fixed-amount');
|
|
});
|
|
var initialVlanIDValue = this.evaluate(function(initialValue) {
|
|
return __utils__.getFieldValue('fixed-vlan_range-start');
|
|
});
|
|
|
|
var fixtures = [
|
|
{
|
|
'amount': ' ',
|
|
'vlanStart': '',
|
|
'vlanEnd':'',
|
|
'validationMessage': 'with empty field'
|
|
},
|
|
{
|
|
'amount': '-10',
|
|
'vlanStart': '',
|
|
'vlanEnd':'',
|
|
'validationMessage': 'when use negative number'
|
|
},
|
|
{
|
|
'amount': '0',
|
|
'vlanStart': '',
|
|
'vlanEnd':'',
|
|
'validationMessage': 'when use 0'
|
|
},
|
|
{
|
|
'amount': '2',
|
|
'vlanStart': '4094',
|
|
'vlanEnd':'',
|
|
'validationMessage': 'if amount more than 4095 - VLAN ID'
|
|
},
|
|
{
|
|
'amount': '2',
|
|
'vlanStart': '4093',
|
|
'vlanEnd':'4094',
|
|
'validationMessage': ''
|
|
},
|
|
{
|
|
'amount': '10',
|
|
'vlanStart': '250',
|
|
'vlanEnd':'259',
|
|
'validationMessage': ''
|
|
}
|
|
|
|
];
|
|
|
|
this.each(fixtures, function(self, fixture) {
|
|
self.then(function() {
|
|
this.fill('.networks-table', {'fixed-amount': fixture.amount});
|
|
if (fixture.vlanStart != '') {
|
|
this.fill('.networks-table', {'fixed-vlan_range-start': fixture.vlanStart});
|
|
}
|
|
this.evaluate(function() {
|
|
$('input[name=fixed-amount]').keyup();
|
|
});
|
|
if (fixture.vlanEnd == '') {
|
|
this.test.assertExists('input[name=fixed-amount].error', 'Field validation has worked ' + fixture.validationMessage);
|
|
this.test.assertExists('.apply-btn:disabled', 'Apply button is disabled if there is validation error');
|
|
} else {
|
|
this.test.assertEvalEquals(function() {return $('input[name=fixed-vlan_range-end]').val()}, fixture.vlanEnd, 'End value is correct');
|
|
this.test.assertDoesntExist('input[name=fixed-amount].error', 'Field validation works properly with correct value');}
|
|
});
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.fill('.networks-table', {
|
|
'fixed-amount': '1',
|
|
'fixed-vlan_range-start': '4094'
|
|
});
|
|
this.evaluate(function() {
|
|
$('input[name=fixed-amount]').keyup();
|
|
});
|
|
this.test.assertDoesntExist('input[name=fixed-amount].error', 'Field validation works properly');
|
|
this.test.assertDoesntExist('.networks-table.fixed-vlan-end', 'Field end vlan value works properly');
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.fill('.networks-table', {
|
|
'fixed-amount': initialAmountValue,
|
|
'fixed-vlan_range-start': initialVlanIDValue
|
|
});
|
|
this.evaluate(function() {
|
|
$('input[name=fixed-amount]').keyup();
|
|
});
|
|
this.click('.net-manager input[type=radio]:not(:checked)');
|
|
});
|
|
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Check CIDR field validation');
|
|
var initialCIDRValue = this.evaluate(function(initialValue) {
|
|
return __utils__.getFieldValue('management-cidr');
|
|
});
|
|
|
|
var fixtures = [
|
|
{
|
|
'cidr': ' ',
|
|
'validationMessage': 'empty field'
|
|
},
|
|
{
|
|
'cidr': '0.10.-1.255/15',
|
|
'validationMessage': 'negative number -1'
|
|
},
|
|
{
|
|
'cidr': '0.-100.240.255/15',
|
|
'validationMessage': 'negative number -100'
|
|
},
|
|
{
|
|
'cidr': '0.256.240.255/15',
|
|
'validationMessage': 'number out of area 255'
|
|
},
|
|
|
|
{
|
|
'cidr': '0.750.240.255/15',
|
|
'validationMessage': 'number 750'
|
|
},
|
|
{
|
|
'cidr': '0.01.240.255/15',
|
|
'validationMessage': 'number starts with 0'
|
|
},
|
|
{
|
|
'cidr': '0.000.240.255/15',
|
|
'validationMessage': 'number 000'
|
|
},
|
|
{
|
|
'cidr': '0.50.240.255.45/15',
|
|
'validationMessage': 'big amount of decimals groups'
|
|
},
|
|
{
|
|
'cidr': '0.240.255/15',
|
|
'validationMessage': 'little amount of decimals groups'
|
|
},
|
|
{
|
|
'cidr': '0.1000.240.255/15',
|
|
'validationMessage': 'bigger number of symbols in group'
|
|
},
|
|
{
|
|
'cidr': '0..240.255/15',
|
|
'validationMessage': 'any empty group'
|
|
}
|
|
|
|
];
|
|
|
|
this.each(fixtures, function(self, fixture) {
|
|
self.then(function() {
|
|
this.fill('.networks-table', {'management-cidr': fixture.cidr});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
this.test.assertExists('input[name=management-cidr].error', 'Field validation has worked properly in case of ' + fixture.validationMessage);
|
|
});
|
|
});
|
|
|
|
|
|
casper.then(function() {
|
|
this.fill('.networks-table', {'management-cidr': '0.10.100.255/15'});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
this.test.assertDoesntExist('input[name=management-cidr].error', 'Validation error description disappears if there are no errors');
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.fill('.networks-table', {'management-cidr': initialCIDRValue});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Check CIDR prefix');
|
|
var initialCIDRValue = this.evaluate(function(initialValue) {
|
|
return __utils__.getFieldValue('management-cidr');
|
|
});
|
|
|
|
function testCIDRprefix (fixtures, negativeTests) {
|
|
casper.each(fixtures, function(self, fixture) {
|
|
self.then(function() {
|
|
this.fill('.networks-table', {'management-cidr': '240.0.1.0/' + fixture});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
if (negativeTests) {
|
|
this.test.assertExists('input[name=management-cidr].error', 'Field validation has worked properly in case of prefix ' + fixture);
|
|
} else {
|
|
this.test.assertDoesntExist('input[name=management-cidr].error', 'Field validation works properly in case of no errors (prefix ' + fixture +')');
|
|
}
|
|
});
|
|
});
|
|
}
|
|
testCIDRprefix (['1', '-10', '0', '31', '75', 'test'], true);
|
|
testCIDRprefix (['2', '30', '15'], false);
|
|
|
|
casper.then(function() {
|
|
this.fill('.networks-table', {'management-cidr': initialCIDRValue});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
});
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Check VlanID field validation');
|
|
var initialVlanIDValue = this.evaluate(function(initialValue) {
|
|
return __utils__.getFieldValue('public-vlan_start');
|
|
});
|
|
|
|
function testVlanID (fixtures, negativeTests) {
|
|
casper.each(fixtures, function(self, fixture) {
|
|
self.then(function() {
|
|
this.fill('.networks-table', {'public-vlan_start': fixture});
|
|
this.evaluate(function() {
|
|
$('input[name=public-vlan_start]').keyup();
|
|
});
|
|
if (negativeTests) {
|
|
this.test.assertExists('input[name=public-vlan_start].error', 'Field validation has worked properly in case of ' + fixture + ' value');
|
|
} else {
|
|
this.test.assertDoesntExist('input[name=public-vlan_start].error', 'No validation errors in case of ' + fixture + ' value');
|
|
}
|
|
});
|
|
});
|
|
}
|
|
testVlanID (['0', '4095', '-100', '5000'], true);
|
|
testVlanID (['1', '4094', '2000'], false);
|
|
|
|
casper.then(function() {
|
|
this.fill('.networks-table', {'public-vlan_start': initialVlanIDValue});
|
|
this.evaluate(function() {
|
|
$('input[name=public-vlan_start]').keyup();
|
|
});
|
|
});
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Testing cluster networks: save changes');
|
|
this.fill('.networks-table', {'management-cidr': '240.0.1.0/23'});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
this.click('.apply-btn:not(:disabled)');
|
|
this.test.assertSelectorAppears('input:not(:disabled)');
|
|
this.then(function() {
|
|
this.test.assertDoesntExist('.alert-error', 'Correct settings were saved successfully');
|
|
});
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Testing cluster networks: verification');
|
|
this.click('.verify-networks-btn:not(:disabled)');
|
|
this.test.assertSelectorAppears('.connect-3-error',
|
|
'There should be atleast 1 node for dhcp check. And 2 nodes for connectivity check', 10000);
|
|
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Testing cluster networks: verification task deletion');
|
|
this.fill('.networks-table', {'management-cidr': '240.0.1.0/22'});
|
|
this.evaluate(function() {
|
|
$('input[name=management-cidr]').keyup();
|
|
});
|
|
this.test.assertDoesntExist('.page-control-error-placeholder', 'Verification task was removed after settings has been changed');
|
|
});
|
|
|
|
casper.then(function() {
|
|
this.test.comment('Testing cluster networks: VLAN range fields');
|
|
this.click('.net-manager input[type=radio]:not(:checked)');
|
|
this.fill('.networks-table', {'fixed-amount': '10'});
|
|
this.evaluate(function() {
|
|
$('input[name=fixed-amount]').keyup();
|
|
});
|
|
this.then(function() {
|
|
this.test.assertDoesntExist('.vlan_start .hide', 'VLAN range is displayed');
|
|
});
|
|
});
|
|
|
|
casper.run(function() {
|
|
this.test.done();
|
|
});
|