def test_subnet_create_post_subnet_exception(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id)\ .AndReturn(self.networks.first()) api.neutron.network_get(IsA(http.HttpRequest), network.id)\ .AndReturn(self.networks.first()) api.neutron.subnet_create(IsA(http.HttpRequest), network_id=network.id, name=subnet.name, cidr=subnet.cidr, ip_version=subnet.ip_version, gateway_ip=subnet.gateway_ip, enable_dhcp=subnet.enable_dhcp, tenant_id=subnet.tenant_id)\ .AndRaise(self.exceptions.neutron) self.mox.ReplayAll() form_data = tests.form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:addsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) redir_url = reverse('horizon:admin:networks:detail', args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_create_post(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id)\ .MultipleTimes().AndReturn(self.networks.first()) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation')\ .MultipleTimes().AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest))\ .AndReturn(self.subnets) api.neutron.subnet_create(IsA(http.HttpRequest), network_id=network.id, name=subnet.name, cidr=subnet.cidr, ip_version=subnet.ip_version, gateway_ip=subnet.gateway_ip, enable_dhcp=subnet.enable_dhcp, allocation_pools=subnet.allocation_pools, tenant_id=subnet.tenant_id)\ .AndReturn(subnet) self.mox.ReplayAll() form_data = tests.form_data_subnet(subnet) url = reverse('horizon:admin:networks:createsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) self.assertNoFormErrors(res) redir_url = reverse(NETWORKS_DETAIL_URL, args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_network_create_post_with_subnet(self): tenants = self.tenants.list() tenant_id = self.tenants.first().id network = self.networks.first() subnet = self.subnets.first() self._stub_is_extension_supported({ 'provider': True, 'network_availability_zone': False, 'subnet_allocation': True }) self.mock_tenant_list.return_value = [tenants, False] self.mock_subnetpool_list.return_value = self.subnetpools.list() self.mock_network_create.return_value = network self.mock_subnet_create.return_value = subnet form_data = { 'tenant_id': tenant_id, 'name': network.name, 'admin_state': network.admin_state_up, 'external': True, 'shared': True, 'network_type': 'local', 'with_subnet': True } form_data.update(tests.form_data_subnet(subnet, allocation_pools=[])) url = reverse('horizon:admin:networks:create') res = self.client.post(url, form_data) self.assertNoFormErrors(res) self.assertRedirectsNoFollow(res, INDEX_URL) self._check_is_extension_supported({ 'provider': 3, 'network_availability_zone': 2, 'subnet_allocation': 1 }) self.mock_tenant_list.assert_called_once_with(test.IsHttpRequest()) self.mock_subnetpool_list.assert_called_once_with(test.IsHttpRequest()) params = { 'name': network.name, 'tenant_id': tenant_id, 'admin_state_up': network.admin_state_up, 'router:external': True, 'shared': True, 'provider:network_type': 'local' } self.mock_network_create.assert_called_once_with( test.IsHttpRequest(), **params) subnet_params = { 'tenant_id': tenant_id, 'name': subnet.name, 'network_id': subnet.network_id, 'cidr': subnet.cidr, 'enable_dhcp': subnet.enable_dhcp, 'gateway_ip': subnet.gateway_ip, 'ip_version': subnet.ip_version } self.mock_subnet_create.assert_called_once_with( test.IsHttpRequest(), **subnet_params)
def test_subnet_create_post_subnet_exception(self): network = self.networks.first() subnet = self.subnets.first() api.quantum.network_get(IsA(http.HttpRequest), network.id)\ .AndReturn(self.networks.first()) api.quantum.network_get(IsA(http.HttpRequest), network.id)\ .AndReturn(self.networks.first()) api.quantum.subnet_create(IsA(http.HttpRequest), network_id=network.id, name=subnet.name, cidr=subnet.cidr, ip_version=subnet.ip_version, gateway_ip=subnet.gateway_ip, enable_dhcp=subnet.enable_dhcp, tenant_id=subnet.tenant_id)\ .AndRaise(self.exceptions.quantum) self.mox.ReplayAll() form_data = form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:addsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) redir_url = reverse('horizon:admin:networks:detail', args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_create_post(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id).AndReturn(self.networks.first()) api.neutron.network_get(IsA(http.HttpRequest), network.id).AndReturn(self.networks.first()) api.neutron.subnet_create( IsA(http.HttpRequest), network_id=network.id, name=subnet.name, cidr=subnet.cidr, ip_version=subnet.ip_version, gateway_ip=subnet.gateway_ip, enable_dhcp=subnet.enable_dhcp, allocation_pools=subnet.allocation_pools, tenant_id=subnet.tenant_id, ).AndReturn(subnet) self.mox.ReplayAll() form_data = form_data_subnet(subnet) url = reverse("horizon:admin:networks:addsubnet", args=[subnet.network_id]) res = self.client.post(url, form_data) self.assertNoFormErrors(res) redir_url = reverse("horizon:admin:networks:detail", args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_update_post(self): subnet = self.subnets.first() api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation')\ .AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest))\ .AndReturn(self.subnetpools.list()) api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id)\ .AndReturn(subnet) api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id)\ .AndReturn(subnet) api.neutron.subnet_update(IsA(http.HttpRequest), subnet.id, name=subnet.name, enable_dhcp=subnet.enable_dhcp, dns_nameservers=[], host_routes=[])\ .AndReturn(subnet) self.mox.ReplayAll() form_data = tests.form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:editsubnet', args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) redir_url = reverse(NETWORKS_DETAIL_URL, args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_update_post(self): subnet = self.subnets.first() self._stub_is_extension_supported({'subnet_allocation': True}) self.mock_subnetpool_list.return_value = self.subnetpools.list() self.mock_subnet_get.return_value = subnet self.mock_subnet_update.return_value = subnet form_data = tests.form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:editsubnet', args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) redir_url = reverse(NETWORKS_DETAIL_URL, args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url) self._check_is_extension_supported({'subnet_allocation': 1}) self.mock_subnetpool_list.assert_called_once_with(test.IsHttpRequest()) self.assert_mock_multiple_calls_with_same_arguments( self.mock_subnet_get, 2, mock.call(test.IsHttpRequest(), subnet.id)) self.mock_subnet_update.assert_called_once_with( test.IsHttpRequest(), subnet.id, name=subnet.name, enable_dhcp=subnet.enable_dhcp, dns_nameservers=[], host_routes=[])
def test_subnet_create_post(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id)\ .MultipleTimes().AndReturn(self.networks.first()) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation')\ .MultipleTimes().AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest))\ .AndReturn(self.subnets) api.neutron.subnet_create(IsA(http.HttpRequest), network_id=network.id, name=subnet.name, cidr=subnet.cidr, ip_version=subnet.ip_version, gateway_ip=subnet.gateway_ip, enable_dhcp=subnet.enable_dhcp, allocation_pools=subnet.allocation_pools, tenant_id=subnet.tenant_id)\ .AndReturn(subnet) self.mox.ReplayAll() form_data = tests.form_data_subnet(subnet) url = reverse('horizon:admin:networks:addsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) self.assertNoFormErrors(res) redir_url = reverse(NETWORKS_DETAIL_URL, args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_create_post_subnet_exception(self): network = self.networks.first() subnet = self.subnets.first() self.mock_network_get.return_value = network self._stub_is_extension_supported({'subnet_allocation': True}) self.mock_subnetpool_list.return_value = self.subnets self.mock_subnet_create.side_effect = self.exceptions.neutron form_data = tests.form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:createsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) redir_url = reverse(NETWORKS_DETAIL_URL, args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url) self.assert_mock_multiple_calls_with_same_arguments( self.mock_network_get, 2, mock.call(test.IsHttpRequest(), network.id)) self._check_is_extension_supported({'subnet_allocation': 1}) self.mock_subnetpool_list.assert_called_once_with(test.IsHttpRequest()) self.mock_subnet_create.assert_called_once_with( test.IsHttpRequest(), network_id=network.id, name=subnet.name, cidr=subnet.cidr, ip_version=subnet.ip_version, gateway_ip=subnet.gateway_ip, enable_dhcp=subnet.enable_dhcp, tenant_id=subnet.tenant_id)
def test_subnet_create_post_cidr_inconsistent(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id)\ .AndReturn(self.networks.first()) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation')\ .AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest))\ .AndReturn(self.subnets) self.mox.ReplayAll() # dummy IPv6 address cidr = '2001:0DB8:0:CD30:123:4567:89AB:CDEF/60' form_data = tests.form_data_subnet(subnet, cidr=cidr, allocation_pools=[]) url = reverse('horizon:admin:networks:addsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) expected_msg = 'Network Address and IP version are inconsistent.' self.assertContains(res, expected_msg)
def test_subnet_update_post(self): subnet = self.subnets.first() api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation')\ .AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest))\ .AndReturn(self.subnetpools.list()) api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id)\ .AndReturn(subnet) api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id)\ .AndReturn(subnet) api.neutron.subnet_update(IsA(http.HttpRequest), subnet.id, name=subnet.name, enable_dhcp=subnet.enable_dhcp, dns_nameservers=[], host_routes=[])\ .AndReturn(subnet) self.mox.ReplayAll() form_data = tests.form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:editsubnet', args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) redir_url = reverse(NETWORKS_DETAIL_URL, args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_update_post_gw_inconsistent(self): subnet = self.subnets.first() api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id).AndReturn(subnet) self.mox.ReplayAll() # dummy IPv6 address gateway_ip = "2001:0DB8:0:CD30:123:4567:89AB:CDEF" form_data = form_data_subnet(subnet, gateway_ip=gateway_ip, allocation_pools=[]) url = reverse("horizon:admin:networks:editsubnet", args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) self.assertContains(res, "Gateway IP and IP version are inconsistent.")
def test_network_create_post_with_subnet(self, test_with_profile=False): tenants = self.tenants.list() tenant_id = self.tenants.first().id network = self.networks.first() subnet = self.subnets.first() params = { 'name': network.name, 'tenant_id': tenant_id, 'admin_state_up': network.admin_state_up, 'router:external': True, 'shared': True, 'provider:network_type': 'local', 'with_subnet': True } api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) if test_with_profile: net_profiles = self.net_profiles.list() net_profile_id = self.net_profiles.first().id api.neutron.profile_list(IsA(http.HttpRequest), 'network').AndReturn(net_profiles) params['net_profile_id'] = net_profile_id api.neutron.is_extension_supported(IsA(http.HttpRequest), 'provider').\ MultipleTimes().AndReturn(True) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation').\ MultipleTimes().AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest)).\ AndReturn(self.subnetpools.list()) api.neutron.network_create(IsA(http.HttpRequest), **params)\ .AndReturn(network) self.mox.ReplayAll() form_data = { 'tenant_id': tenant_id, 'name': network.name, 'admin_state': network.admin_state_up, 'external': True, 'shared': True, 'network_type': 'local', 'with_subnet': True } if test_with_profile: form_data['net_profile_id'] = net_profile_id form_data.update(tests.form_data_subnet(subnet, allocation_pools=[])) url = reverse('horizon:admin:networks:create') res = self.client.post(url, form_data) self.assertNoFormErrors(res) self.assertRedirectsNoFollow(res, INDEX_URL)
def test_network_create_post_with_subnet(self): tenants = self.tenants.list() tenant_id = self.tenants.first().id network = self.networks.first() subnet = self.subnets.first() self._stub_is_extension_supported( {'provider': True, 'network_availability_zone': False, 'subnet_allocation': True}) self.mock_tenant_list.return_value = [tenants, False] self.mock_subnetpool_list.return_value = self.subnetpools.list() self.mock_network_create.return_value = network self.mock_subnet_create.return_value = subnet form_data = {'tenant_id': tenant_id, 'name': network.name, 'admin_state': network.admin_state_up, 'external': True, 'shared': True, 'network_type': 'local', 'with_subnet': True} form_data.update(tests.form_data_subnet(subnet, allocation_pools=[])) url = reverse('horizon:admin:networks:create') res = self.client.post(url, form_data) self.assertNoFormErrors(res) self.assertRedirectsNoFollow(res, INDEX_URL) self._check_is_extension_supported( {'provider': 3, 'network_availability_zone': 2, 'subnet_allocation': 1}) self.mock_tenant_list.assert_called_once_with(test.IsHttpRequest()) self.mock_subnetpool_list.assert_called_once_with(test.IsHttpRequest()) params = {'name': network.name, 'tenant_id': tenant_id, 'admin_state_up': network.admin_state_up, 'router:external': True, 'shared': True, 'provider:network_type': 'local'} self.mock_network_create.assert_called_once_with(test.IsHttpRequest(), **params) subnet_params = {'name': subnet.name, 'network_id': subnet.network_id, 'cidr': subnet.cidr, 'enable_dhcp': subnet.enable_dhcp, 'gateway_ip': subnet.gateway_ip, 'ip_version': subnet.ip_version} self.mock_subnet_create.assert_called_once_with(test.IsHttpRequest(), **subnet_params)
def test_subnet_create_post_cidr_inconsistent(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id).AndReturn(self.networks.first()) self.mox.ReplayAll() # dummy IPv6 address cidr = "2001:0DB8:0:CD30:123:4567:89AB:CDEF/60" form_data = form_data_subnet(subnet, cidr=cidr, allocation_pools=[]) url = reverse("horizon:admin:networks:addsubnet", args=[subnet.network_id]) res = self.client.post(url, form_data) expected_msg = "Network Address and IP version are inconsistent." self.assertContains(res, expected_msg)
def test_subnet_update_post_gw_inconsistent(self): subnet = self.subnets.first() api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id)\ .AndReturn(subnet) self.mox.ReplayAll() # dummy IPv6 address gateway_ip = '2001:0DB8:0:CD30:123:4567:89AB:CDEF' form_data = form_data_subnet(subnet, gateway_ip=gateway_ip, allocation_pools=[]) url = reverse('horizon:admin:networks:editsubnet', args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) self.assertContains(res, 'Gateway IP and IP version are inconsistent.')
def test_subnet_create_post_network_exception(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id).AndRaise(self.exceptions.neutron) self.mox.ReplayAll() form_data = form_data_subnet(subnet, allocation_pools=[]) url = reverse("horizon:admin:networks:addsubnet", args=[subnet.network_id]) res = self.client.post(url, form_data) self.assertNoFormErrors(res) # admin DetailView is shared with userpanel one, so # redirection URL on error is userpanel index. redir_url = reverse("horizon:project:networks:index") self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_create_post_gw_inconsistent(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id).AndReturn(self.networks.first()) api.neutron.is_extension_supported(IsA(http.HttpRequest), "subnet_allocation").AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest)).AndReturn(self.subnets) self.mox.ReplayAll() # dummy IPv6 address gateway_ip = "2001:0DB8:0:CD30:123:4567:89AB:CDEF" form_data = tests.form_data_subnet(subnet, gateway_ip=gateway_ip, allocation_pools=[]) url = reverse("horizon:admin:networks:addsubnet", args=[subnet.network_id]) res = self.client.post(url, form_data) self.assertContains(res, "Gateway IP and IP version are inconsistent.")
def test_subnet_create_post_gw_inconsistent(self): network = self.networks.first() subnet = self.subnets.first() api.quantum.network_get(IsA(http.HttpRequest), network.id)\ .AndReturn(self.networks.first()) self.mox.ReplayAll() # dummy IPv6 address gateway_ip = '2001:0DB8:0:CD30:123:4567:89AB:CDEF' form_data = form_data_subnet(subnet, gateway_ip=gateway_ip, allocation_pools=[]) url = reverse('horizon:admin:networks:addsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) self.assertContains(res, 'Gateway IP and IP version are inconsistent.')
def test_subnet_create_post_network_exception(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id)\ .AndRaise(self.exceptions.neutron) self.mox.ReplayAll() form_data = tests.form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:createsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) self.assertNoFormErrors(res) # admin DetailView is shared with userpanel one, so # redirection URL on error is userpanel index. redir_url = reverse('horizon:project:networks:index') self.assertRedirectsNoFollow(res, redir_url)
def test_network_create_post_with_subnet(self): tenants = self.tenants.list() tenant_id = self.tenants.first().id network = self.networks.first() subnet = self.subnets.first() params = {'name': network.name, 'tenant_id': tenant_id, 'admin_state_up': network.admin_state_up, 'router:external': True, 'shared': True, 'provider:network_type': 'local', 'with_subnet': True} api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'provider').\ MultipleTimes().AndReturn(True) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'network_availability_zone').\ MultipleTimes().AndReturn(False) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation').\ MultipleTimes().AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest)).\ AndReturn(self.subnetpools.list()) api.neutron.network_create(IsA(http.HttpRequest), **params)\ .AndReturn(network) self.mox.ReplayAll() form_data = {'tenant_id': tenant_id, 'name': network.name, 'admin_state': network.admin_state_up, 'external': True, 'shared': True, 'network_type': 'local', 'with_subnet': True} form_data.update(tests.form_data_subnet(subnet, allocation_pools=[])) url = reverse('horizon:admin:networks:create') res = self.client.post(url, form_data) self.assertNoFormErrors(res) self.assertRedirectsNoFollow(res, INDEX_URL)
def test_subnet_create_post_network_exception(self): network = self.networks.first() subnet = self.subnets.first() self.mock_network_get.side_effect = self.exceptions.neutron form_data = tests.form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:createsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) self.assertNoFormErrors(res) # admin DetailView is shared with userpanel one, so # redirection URL on error is userpanel index. redir_url = reverse('horizon:project:networks:index') self.assertRedirectsNoFollow(res, redir_url) self.mock_network_get.assert_called_once_with(test.IsHttpRequest(), network.id)
def test_subnet_update_post(self): subnet = self.subnets.first() api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id).AndReturn(subnet) api.neutron.subnet_modify( IsA(http.HttpRequest), subnet.id, name=subnet.name, gateway_ip=subnet.gateway_ip, enable_dhcp=subnet.enable_dhcp, dns_nameservers=[], host_routes=[], ).AndReturn(subnet) self.mox.ReplayAll() form_data = form_data_subnet(subnet, allocation_pools=[]) url = reverse("horizon:admin:networks:editsubnet", args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) redir_url = reverse("horizon:admin:networks:detail", args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_update_post_gw_inconsistent(self): subnet = self.subnets.first() api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation')\ .AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest))\ .AndReturn(self.subnetpools.list()) api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id)\ .AndReturn(subnet) self.mox.ReplayAll() # dummy IPv6 address gateway_ip = '2001:0DB8:0:CD30:123:4567:89AB:CDEF' form_data = tests.form_data_subnet(subnet, gateway_ip=gateway_ip, allocation_pools=[]) url = reverse('horizon:admin:networks:editsubnet', args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) self.assertContains(res, 'Gateway IP and IP version are inconsistent.')
def test_subnet_update_post_gw_inconsistent(self): subnet = self.subnets.first() self._stub_is_extension_supported({'subnet_allocation': True}) self.mock_subnetpool_list.return_value = self.subnetpools.list() self.mock_subnet_get.return_value = subnet # dummy IPv6 address gateway_ip = '2001:0DB8:0:CD30:123:4567:89AB:CDEF' form_data = tests.form_data_subnet(subnet, gateway_ip=gateway_ip, allocation_pools=[]) url = reverse('horizon:admin:networks:editsubnet', args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) self.assertContains(res, 'Gateway IP and IP version are inconsistent.') self._check_is_extension_supported({'subnet_allocation': 1}) self.mock_subnetpool_list.assert_called_once_with(test.IsHttpRequest()) self.mock_subnet_get.assert_called_once_with(test.IsHttpRequest(), subnet.id)
def test_subnet_update_post(self): subnet = self.subnets.first() api.neutron.subnet_get(IsA(http.HttpRequest), subnet.id)\ .AndReturn(subnet) api.neutron.subnet_modify(IsA(http.HttpRequest), subnet.id, name=subnet.name, gateway_ip=subnet.gateway_ip, enable_dhcp=subnet.enable_dhcp, dns_nameservers=[], host_routes=[])\ .AndReturn(subnet) self.mox.ReplayAll() form_data = tests.form_data_subnet(subnet, allocation_pools=[]) url = reverse('horizon:admin:networks:editsubnet', args=[subnet.network_id, subnet.id]) res = self.client.post(url, form_data) redir_url = reverse('horizon:admin:networks:detail', args=[subnet.network_id]) self.assertRedirectsNoFollow(res, redir_url)
def test_subnet_create_post_cidr_inconsistent(self): network = self.networks.first() subnet = self.subnets.first() self.mock_network_get.return_value = network self._stub_is_extension_supported({'subnet_allocation': True}) self.mock_subnetpool_list.return_value = self.subnets # dummy IPv6 address cidr = '2001:0DB8:0:CD30:123:4567:89AB:CDEF/60' form_data = tests.form_data_subnet( subnet, cidr=cidr, allocation_pools=[]) url = reverse('horizon:admin:networks:createsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) expected_msg = 'Network Address and IP version are inconsistent.' self.assertContains(res, expected_msg) self.mock_network_get.assert_called_once_with(test.IsHttpRequest(), network.id) self._check_is_extension_supported({'subnet_allocation': 1}) self.mock_subnetpool_list.assert_called_once_with(test.IsHttpRequest())
def test_subnet_create_post_cidr_inconsistent(self): network = self.networks.first() subnet = self.subnets.first() api.neutron.network_get(IsA(http.HttpRequest), network.id)\ .AndReturn(self.networks.first()) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'subnet_allocation')\ .AndReturn(True) api.neutron.subnetpool_list(IsA(http.HttpRequest))\ .AndReturn(self.subnets) self.mox.ReplayAll() # dummy IPv6 address cidr = '2001:0DB8:0:CD30:123:4567:89AB:CDEF/60' form_data = tests.form_data_subnet( subnet, cidr=cidr, allocation_pools=[]) url = reverse('horizon:admin:networks:addsubnet', args=[subnet.network_id]) res = self.client.post(url, form_data) expected_msg = 'Network Address and IP version are inconsistent.' self.assertContains(res, expected_msg)