From b3b88310e10d4315b6455f25a63d21e17100f57f Mon Sep 17 00:00:00 2001 From: Rob Cresswell Date: Fri, 3 Jun 2016 10:32:07 +0100 Subject: [PATCH] Add missing unit tests to NG launch instance https://review.openstack.org/#/c/323623/ added a few new defaults to the Launch Instance but didn't add any tests, so the backport is blocked on coverage. Rather than lower coverage, we should just add the tests and squash the two commits in the backport. Fastest way to verify is to generate coverage in master, look at the lines added by https://review.openstack.org/#/c/323623/ (red) then apply this patch and run again. You'll see they are all white. Change-Id: I07d2f5ebcb1771a548c0066699194ea619e7461c Related-Bug: #1587681 --- .../launch-instance-model.service.spec.js | 124 ++++++++++++------ 1 file changed, 84 insertions(+), 40 deletions(-) diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js index 79b3c611e4..15cb471af0 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js @@ -71,6 +71,47 @@ } }; + var securityGroupApi = { + query: function() { + var secGroups = [ + { name: 'security-group-1' }, + { name: 'security-group-2' } + ]; + + var deferred = $q.defer(); + deferred.resolve({ data: { items: secGroups } }); + return deferred.promise; + } + }; + + var neutronApi = { + getNetworks: function() { + var networks = [ { id: 'net-1' }, { id: 'net-2' } ]; + + var deferred = $q.defer(); + deferred.resolve({ data: { items: networks } }); + + return deferred.promise; + }, + getPorts: function(network) { + var ports = { + 'net-1': [ + { name: 'port-1', device_owner: '', fixed_ips: [], admin_state: 'UP' }, + { name: 'port-2', device_owner: '', fixed_ips: [], admin_state: 'DOWN' } + ], + 'net-2': [ + { name: 'port-3', device_owner: 'owner', fixed_ips: [], admin_state: 'DOWN' }, + { name: 'port-4', device_owner: '', fixed_ips: [], admin_state: 'DOWN' } + ] + }; + + var deferred = $q.defer(); + deferred.resolve({ data: { items: ports[network.network_id] } }); + + return deferred.promise; + } + }; + beforeEach(module('horizon.dashboard.project.workflow.launch-instance')); beforeEach(module(function($provide) { @@ -110,47 +151,9 @@ $provide.value('horizon.app.core.openstack-service-api.nova', novaApi); - $provide.value('horizon.app.core.openstack-service-api.security-group', { - query: function() { - var secGroups = [ - { name: 'security-group-1' }, - { name: 'security-group-2' } - ]; + $provide.value('horizon.app.core.openstack-service-api.security-group', securityGroupApi); - var deferred = $q.defer(); - deferred.resolve({ data: { items: secGroups } }); - - return deferred.promise; - } - }); - - $provide.value('horizon.app.core.openstack-service-api.neutron', { - getNetworks: function() { - var networks = [ { id: 'net-1' }, { id: 'net-2' } ]; - - var deferred = $q.defer(); - deferred.resolve({ data: { items: networks } }); - - return deferred.promise; - }, - getPorts: function(network) { - var ports = { - 'net-1': [ - { name: 'port-1', device_owner: '', fixed_ips: [], admin_state: 'UP' }, - { name: 'port-2', device_owner: '', fixed_ips: [], admin_state: 'DOWN' } - ], - 'net-2': [ - { name: 'port-3', device_owner: 'owner', fixed_ips: [], admin_state: 'DOWN' }, - { name: 'port-4', device_owner: '', fixed_ips: [], admin_state: 'DOWN' } - ] - }; - - var deferred = $q.defer(); - deferred.resolve({ data: { items: ports[network.network_id] } }); - - return deferred.promise; - } - }); + $provide.value('horizon.app.core.openstack-service-api.neutron', neutronApi); $provide.value('horizon.app.core.openstack-service-api.cinder', { getVolumes: function() { @@ -438,6 +441,47 @@ scope.$apply(); expect(glance.getNamespaces.calls.count()).toBe(4); }); + + it('should set a keypair by default if only one keypair is available', function () { + var keypair = { keypair: { name: 'key-1' } }; + spyOn(novaApi, 'getKeypairs').and.callFake(function () { + var deferred = $q.defer(); + deferred.resolve({ data: { items: [ keypair ] } }); + return deferred.promise; + }); + model.initialize(true); + scope.$apply(); + expect(model.newInstanceSpec.key_pair.length).toBe(1); + expect(model.newInstanceSpec.key_pair).toEqual( [ keypair.keypair ] ); + }); + + it('should set a security group by default if one named "default" is available', + function () { + var secGroups = [ { name: 'default' } ]; + spyOn(securityGroupApi, 'query').and.callFake(function () { + var deferred = $q.defer(); + deferred.resolve({ data: { items: secGroups } }); + return deferred.promise; + }); + model.initialize(true); + scope.$apply(); + expect(model.newInstanceSpec.security_groups.length).toBe(1); + expect(model.newInstanceSpec.security_groups).toEqual(secGroups); + } + ); + + it('should set a network by default if only one network is available', function () { + var networks = [ { id: 'net-1' } ]; + spyOn(neutronApi, 'getNetworks').and.callFake(function () { + var deferred = $q.defer(); + deferred.resolve({ data: { items: networks } }); + return deferred.promise; + }); + model.initialize(true); + scope.$apply(); + expect(model.newInstanceSpec.networks.length).toBe(1); + expect(model.newInstanceSpec.networks).toEqual(networks); + }); }); describe('Post Initialization Model - Initializing', function() {