horizon/openstack_dashboard/static/app/core/openstack-service-api/neutron.service.spec.js

336 lines
9.0 KiB
JavaScript

/**
* (c) Copyright 2015 Hewlett-Packard Development Company, L.P.
*
* 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('Neutron API', function() {
var testCall, service;
var apiService = {};
var toastService = {};
beforeEach(function() {
module('horizon.mock.openstack-service-api', function($provide, initServices) {
testCall = initServices($provide, apiService, toastService);
});
module('horizon.app.core.openstack-service-api');
inject(['horizon.app.core.openstack-service-api.neutron', function(neutronAPI) {
service = neutronAPI;
}]);
});
it('defines the service', function() {
expect(service).toBeDefined();
});
it('converts created_at and updated_at to human readable if calling getTrunk' +
'or getQosPolicy',function() {
var data = {
id: 1,
created_at: '2017-11-16',
updated_at: '2017-11-16'
};
spyOn(apiService, 'get').and.callFake(function() {
return {
success: function(c) {
c(data);
return this;
},
error: function(c) {
c();
return this;
}
};
});
service.getTrunk(data.id, true).success(function(result) {
expect(result.id).toEqual(data.id);
expect(result.created_at).toEqual(new Date(data.created_at));
expect(result.updated_at).toEqual(new Date(data.updated_at));
});
service.getQosPolicy(data.id, true).success(function(result) {
expect(result.id).toEqual(data.id);
expect(result.created_at).toEqual(new Date(data.created_at));
expect(result.updated_at).toEqual(new Date(data.updated_at));
});
});
it('converts created_at and updated_at to human readable if calling getTrunks' +
'or getQoSPolicies', function() {
var data = {items: [{
id: 1,
created_at: '2017-11-16',
updated_at: '2017-11-16'
}]};
spyOn(apiService, 'get').and.callFake(function() {
return {
success: function(c) {
c(data);
return this;
},
error: function(c) {
c();
return this;
}
};
});
service.getTrunks().success(function(result) {
result.items.forEach(function(trunk) {
expect(trunk.id).toEqual(data.items[0].id);
expect(trunk.created_at).toEqual(new Date(data.items[0].created_at));
expect(trunk.updated_at).toEqual(new Date(data.items[0].updated_at));
});
});
service.getQoSPolicies().success(function(result) {
result.items.forEach(function(policy) {
expect(policy.id).toEqual(data.items[0].id);
expect(policy.created_at).toEqual(new Date(data.items[0].created_at));
expect(policy.updated_at).toEqual(new Date(data.items[0].updated_at));
});
});
});
it('can suppress errors in case of deleting trunks', function() {
spyOn(apiService, 'delete').and.callFake(function() {
return {
success: function(c) {
c();
return this;
},
error: function(c) {
c();
return this;
}
};
});
spyOn(toastService, 'add').and.callThrough();
service.deleteTrunk('42', true).error(function() {
expect(toastService.add).not.toHaveBeenCalled();
});
});
var tests = [
{
"func": "getNetworks",
"method": "get",
"path": "/api/neutron/networks/",
"error": "Unable to retrieve the networks."
},
{
"func": "createNetwork",
"method": "post",
"path": "/api/neutron/networks/",
"data": "new net",
"error": "Unable to create the network.",
"testInput": [
"new net"
]
},
{
"func": "getSubnets",
"method": "get",
"path": "/api/neutron/subnets/",
"data": 42,
"error": "Unable to retrieve the subnets.",
"testInput": [
42
]
},
{
"func": "createSubnet",
"method": "post",
"path": "/api/neutron/subnets/",
"data": "new subnet",
"error": "Unable to create the subnet.",
"testInput": [
"new subnet"
]
},
{
"func": "getPorts",
"method": "get",
"path": "/api/neutron/ports/",
"data": {
params: {
network_id: 42
}
},
"error": "Unable to retrieve the ports.",
"testInput": [
{
network_id: 42
}
]
},
{
"func": "getPorts",
"method": "get",
"path": "/api/neutron/ports/",
"data": {},
"error": "Unable to retrieve the ports."
},
{
"func": "getAgents",
"method": "get",
"path": "/api/neutron/agents/",
"error": "Unable to retrieve the agents."
},
{
"func": "getExtensions",
"method": "get",
"path": "/api/neutron/extensions/",
"error": "Unable to retrieve the extensions."
},
{
"func": "getDefaultQuotaSets",
"method": "get",
"path": "/api/neutron/quota-sets/defaults/",
"error": "Unable to retrieve the default quotas."
},
{
"func": "updateProjectQuota",
"method": "patch",
"path": "/api/neutron/quotas-sets/42",
"data": {
"network": 42
},
"error": "Unable to update project quota data.",
"testInput": [
{
"network": 42
},
42
]
},
{
"func": "getTrunk",
"method": "get",
"path": "/api/neutron/trunks/42/",
"error": "Unable to retrieve the trunk with id: 42",
"testInput": [
42
]
},
{
"func": "getTrunks",
"method": "get",
"path": "/api/neutron/trunks/",
"data": {},
"error": "Unable to retrieve the trunks."
},
{
"func": "getTrunks",
"method": "get",
"path": "/api/neutron/trunks/",
"data": {
"params": {
"project_id": 1
}
},
"testInput": [
{"project_id": 1}
],
"error": "Unable to retrieve the trunks."
},
{
"func": "createTrunk",
"method": "post",
"path": "/api/neutron/trunks/",
"data": "new trunk",
"error": "Unable to create the trunk.",
"testInput": [
"new trunk"
]
},
{
"func": "deleteTrunk",
"method": "delete",
"path": "/api/neutron/trunks/42/",
"error": "Unable to delete trunk: 42",
"testInput": [
42
]
},
{
"func": "updateTrunk",
"method": "patch",
"path": "/api/neutron/trunks/42/",
"error": "Unable to update the trunk.",
"data": [
{"id": 42, "name": "trunk1"},
{"name": "trunk2"}
],
"testInput": [
{"id": 42, "name": "trunk1"},
{"name": "trunk2"}
]
},
{
"func": "getQosPolicy",
"method": "get",
"path": "/api/neutron/qos_policies/1/",
"error": "Unable to retrieve the policy with ID 1",
"testInput": [
1
]
},
{
"func": "getQoSPolicies",
"method": "get",
"path": "/api/neutron/qos_policies/",
"data": {},
"error": "Unable to retrieve the qos policies."
},
{
"func": "getQoSPolicies",
"method": "get",
"path": "/api/neutron/qos_policies/",
"data": {
"params": {
"project_id": 1
}
},
"testInput": [
{"project_id": 1}
],
"error": "Unable to retrieve the qos policies."
},
{
"func": "deletePolicy",
"method": "delete",
"path": "/api/neutron/qos_policies/63/",
"error": "Unable to delete qos policy 63",
"testInput": [
63
]
}
];
// Iterate through the defined tests and apply as Jasmine specs.
angular.forEach(tests, function(params) {
it('defines the ' + params.func + ' call properly', function() {
var callParams = [apiService, service, toastService, params];
testCall.apply(this, callParams);
});
});
});
})();