bb0cb86451
Change-Id: I9740399b03cd6192be7e6d2b969650687e97bd75 Depends-On: https://review.openstack.org/#/c/561457/ Story: 1713841 Task: 5218
628 lines
20 KiB
JavaScript
628 lines
20 KiB
JavaScript
/*
|
|
* Copyright 2015 IBM Corp.
|
|
* Copyright 2017 Walmart.
|
|
*
|
|
* 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.
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
|
|
describe('LBaaS v2 Module', function () {
|
|
it('should be defined', function () {
|
|
expect(angular.module('horizon.dashboard.project.lbaasv2')).toBeDefined();
|
|
});
|
|
});
|
|
|
|
describe('LBaaS v2 Module Base Path', function () {
|
|
var basePath, staticUrl;
|
|
|
|
beforeEach(module('horizon.dashboard.project.lbaasv2'));
|
|
|
|
beforeEach(inject(function ($injector) {
|
|
basePath = $injector.get('horizon.dashboard.project.lbaasv2.basePath');
|
|
staticUrl = $injector.get('$window').STATIC_URL;
|
|
}));
|
|
|
|
it('should be defined', function () {
|
|
expect(basePath).toBeDefined();
|
|
});
|
|
|
|
it('should be correct', function () {
|
|
expect(basePath).toEqual(staticUrl + 'dashboard/project/lbaasv2/');
|
|
});
|
|
});
|
|
|
|
describe('LBaaS v2 Module Constants', function () {
|
|
var patterns, popovers;
|
|
|
|
beforeEach(module('horizon.dashboard.project.lbaasv2'));
|
|
|
|
beforeEach(inject(function ($injector) {
|
|
patterns = $injector.get('horizon.dashboard.project.lbaasv2.patterns');
|
|
popovers = $injector.get('horizon.dashboard.project.lbaasv2.popovers');
|
|
}));
|
|
|
|
it('should define patterns', function () {
|
|
expect(patterns).toBeDefined();
|
|
});
|
|
|
|
it('should define expected patterns', function () {
|
|
expect(Object.keys(patterns).length).toBe(4);
|
|
var keys = ['ipv4', 'ipv6', 'httpStatusCodes', 'urlPath'];
|
|
angular.forEach(keys, function(key) {
|
|
expect(patterns[key]).toBeDefined();
|
|
});
|
|
});
|
|
|
|
it('should define correct pattern for health monitor status codes', function () {
|
|
expect(Object.keys(patterns).length).toBe(4);
|
|
var regex = patterns.httpStatusCodes;
|
|
expect(regex.test('200')).toBe(true);
|
|
expect(regex.test('200-204')).toBe(true);
|
|
expect(regex.test('200,203,204')).toBe(true);
|
|
expect(regex.test('foo')).toBe(false);
|
|
expect(regex.test('200,202-204')).toBe(false);
|
|
});
|
|
|
|
it('should define popovers', function () {
|
|
expect(popovers).toBeDefined();
|
|
});
|
|
|
|
it('should define expected popover templates', function () {
|
|
expect(Object.keys(popovers).length).toBe(1);
|
|
var keys = ['ipAddresses'];
|
|
angular.forEach(keys, function(key) {
|
|
expect(popovers[key]).toBeDefined();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('LBaaS v2 Module Config', function () {
|
|
var $routeProvider, basePath; // eslint-disable-line no-unused-vars
|
|
|
|
beforeEach(function() {
|
|
// Create a dummy module so that we can test $routeProvider calls in our actual
|
|
// config block.
|
|
angular.module('configTest', [])
|
|
.config(function(_$routeProvider_, $windowProvider) {
|
|
$routeProvider = _$routeProvider_;
|
|
basePath = $windowProvider.$get().STATIC_URL + 'dashboard/project/lbaasv2/';
|
|
spyOn($routeProvider, 'when').and.callThrough();
|
|
});
|
|
module('ngRoute');
|
|
module('configTest');
|
|
module('horizon.dashboard.project.lbaasv2');
|
|
inject();
|
|
});
|
|
|
|
it('should route resolved loadbalancer panel',
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/loadbalancers/panel.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
})
|
|
);
|
|
|
|
it('should route resolved loadbalancer detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/loadbalancers/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
|
|
});
|
|
}));
|
|
|
|
it('should route resolved listener detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function listenerAPI() {
|
|
var listener = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(listener);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getListener').and.callFake(listenerAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/listeners/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/listeners/2');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should route resolved listener pool detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function listenerAPI() {
|
|
var listener = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(listener);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function poolAPI() {
|
|
var pool = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(pool);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getListener').and.callFake(listenerAPI);
|
|
spyOn(lbaasv2API, 'getPool').and.callFake(poolAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/pools/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/listeners/2/pools/3');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should route resolved listener l7 policy detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function listenerAPI() {
|
|
var listener = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(listener);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function l7policyAPI() {
|
|
var l7policy = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(l7policy);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getListener').and.callFake(listenerAPI);
|
|
spyOn(lbaasv2API, 'getL7Policy').and.callFake(l7policyAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/l7policies/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/listeners/2/l7policies/3');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should route resolved listener l7 rule detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function listenerAPI() {
|
|
var listener = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(listener);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function l7policyAPI() {
|
|
var l7policy = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(l7policy);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function l7ruleAPI() {
|
|
var l7rule = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(l7rule);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getListener').and.callFake(listenerAPI);
|
|
spyOn(lbaasv2API, 'getL7Policy').and.callFake(l7policyAPI);
|
|
spyOn(lbaasv2API, 'getL7Rule').and.callFake(l7ruleAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/l7rules/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/listeners/2/l7policies/3/l7rules/4');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should route resolved listener pool member detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function listenerAPI() {
|
|
var listener = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(listener);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function poolAPI() {
|
|
var pool = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(pool);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function memberAPI() {
|
|
var member = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(member);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getListener').and.callFake(listenerAPI);
|
|
spyOn(lbaasv2API, 'getPool').and.callFake(poolAPI);
|
|
spyOn(lbaasv2API, 'getMember').and.callFake(memberAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/members/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/listeners/2/pools/3/members/4');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should route resolved listener pool health monitor detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function listenerAPI() {
|
|
var listener = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(listener);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function poolAPI() {
|
|
var pool = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(pool);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function healthmonitorAPI() {
|
|
var healthmonitor = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(healthmonitor);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getListener').and.callFake(listenerAPI);
|
|
spyOn(lbaasv2API, 'getPool').and.callFake(poolAPI);
|
|
spyOn(lbaasv2API, 'getHealthMonitor').and.callFake(healthmonitorAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/healthmonitors/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/listeners/2/pools/3/healthmonitors/4');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should route resolved loadbalancer pool detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function poolAPI() {
|
|
var pool = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(pool);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getPool').and.callFake(poolAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/pools/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/pools/3');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should route resolved loadbalancer pool member detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function poolAPI() {
|
|
var pool = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(pool);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function memberAPI() {
|
|
var member = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(member);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getPool').and.callFake(poolAPI);
|
|
spyOn(lbaasv2API, 'getMember').and.callFake(memberAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/members/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/pools/3/members/4');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should route resolved loadbalancer pool health monitor detail', inject(function($injector) {
|
|
function loadbalancerAPI() {
|
|
var loadbalancer = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(loadbalancer);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1, floating_ip: {}}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function poolAPI() {
|
|
var pool = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(pool);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
function healthmonitorAPI() {
|
|
var healthmonitor = { provisioning_status: 'ACTIVE' };
|
|
return {
|
|
success: function(callback) {
|
|
callback(healthmonitor);
|
|
},
|
|
then: function(callback) {
|
|
callback({ data: { id: 1}});
|
|
}
|
|
};
|
|
}
|
|
|
|
var lbaasv2API = $injector.get('horizon.app.core.openstack-service-api.lbaasv2');
|
|
spyOn(lbaasv2API, 'getLoadBalancer').and.callFake(loadbalancerAPI);
|
|
spyOn(lbaasv2API, 'getPool').and.callFake(poolAPI);
|
|
spyOn(lbaasv2API, 'getHealthMonitor').and.callFake(healthmonitorAPI);
|
|
inject(function($route, $location, $rootScope, $httpBackend) {
|
|
$httpBackend.expectGET(
|
|
'/static/dashboard/project/lbaasv2/healthmonitors/details/detail.html'
|
|
).respond({});
|
|
$location.path('/project/load_balancer/1/pools/3/healthmonitors/4');
|
|
$rootScope.$digest();
|
|
expect($route.current).toBeDefined();
|
|
});
|
|
}));
|
|
|
|
it('should redirect to project home on route change error',
|
|
inject(function($location, $rootScope) {
|
|
spyOn($location, 'path').and.callThrough();
|
|
$rootScope.$emit('$routeChangeError', null, null, null, 'routeChangeError');
|
|
expect($location.path).toHaveBeenCalledWith('project/load_balancer');
|
|
})
|
|
);
|
|
|
|
});
|
|
|
|
})();
|