diff --git a/neutron_tempest_plugin/api/test_ndp_proxy.py b/neutron_tempest_plugin/api/test_ndp_proxy.py
index 1b2165b..92d65c2 100644
--- a/neutron_tempest_plugin/api/test_ndp_proxy.py
+++ b/neutron_tempest_plugin/api/test_ndp_proxy.py
@@ -24,23 +24,35 @@
 CONF = config.CONF
 
 
-class NDPProxyTestJSON(base.BaseNetworkTest):
+class NDPProxyTestJSON(base.BaseAdminNetworkTest):
 
     credentials = ['primary', 'admin']
-    required_extensions = ['router', 'l3-ndp-proxy']
+    required_extensions = ['router', 'l3-ndp-proxy', 'address-scope']
 
     @classmethod
     def resource_setup(cls):
         super(NDPProxyTestJSON, cls).resource_setup()
-        cls.ext_net_id = CONF.network.public_network_id
-
+        address_scope = cls.create_address_scope(
+            "test-as", **{'ip_version': constants.IP_VERSION_6})
+        subnetpool = cls.create_subnetpool(
+            "test-subnetpool",
+            **{'address_scope_id': address_scope['id'],
+               'default_prefixlen': 112,
+               'prefixes': ['2001:abc::0/96']})
+        # Create an external network and it's subnet
+        ext_net = cls.create_network('test-ext-net', client=cls.admin_client,
+                                     external=True)
+        cls.create_subnet(
+            ext_net, client=cls.admin_client,
+            ip_version=constants.IP_VERSION_6,
+            **{'subnetpool_id': subnetpool['id'], "cidr": "2001:abc::1:0/112"})
         # Create network, subnet, router and add interface
         cls.network = cls.create_network()
         cls.subnet = cls.create_subnet(
             cls.network, ip_version=constants.IP_VERSION_6,
-            cidr='2002::abcd:0/112')
+            **{'subnetpool_id': subnetpool['id'], "cidr": "2001:abc::2:0/112"})
         cls.router = cls.create_router(data_utils.rand_name('router'),
-                                       external_network_id=cls.ext_net_id,
+                                       external_network_id=ext_net['id'],
                                        enable_ndp_proxy=True)
         cls.create_router_interface(cls.router['id'], cls.subnet['id'])
 
diff --git a/neutron_tempest_plugin/api/test_ndp_proxy_negative.py b/neutron_tempest_plugin/api/test_ndp_proxy_negative.py
index acbbdcb..56188f3 100644
--- a/neutron_tempest_plugin/api/test_ndp_proxy_negative.py
+++ b/neutron_tempest_plugin/api/test_ndp_proxy_negative.py
@@ -24,16 +24,28 @@
 CONF = config.CONF
 
 
-class NDPProxyNegativeTestJSON(base.BaseNetworkTest):
+class NDPProxyNegativeTestJSON(base.BaseAdminNetworkTest):
 
     credentials = ['primary', 'admin']
-    required_extensions = ['router', 'l3-ndp-proxy']
+    required_extensions = ['router', 'l3-ndp-proxy', 'address-scope']
 
     @classmethod
     def resource_setup(cls):
         super(NDPProxyNegativeTestJSON, cls).resource_setup()
-        cls.ext_net_id = CONF.network.public_network_id
-
+        address_scope = cls.create_address_scope(
+            "test-as", **{'ip_version': constants.IP_VERSION_6})
+        subnetpool = cls.create_subnetpool(
+            "test-subnetpool",
+            **{'address_scope_id': address_scope['id'],
+               'default_prefixlen': 112,
+               'prefixes': ['2001:abc::0/96']})
+        # Create an external network and it's subnet
+        ext_net = cls.create_network('test-ext-net', client=cls.admin_client,
+                                     external=True)
+        cls.create_subnet(
+            ext_net, client=cls.admin_client,
+            ip_version=constants.IP_VERSION_6,
+            **{'subnetpool_id': subnetpool['id'], "cidr": "2001:abc::1:0/112"})
         # Create network, subnet, router and add interface
         cls.network = cls.create_network()
         cls.subnet = cls.create_subnet(
@@ -41,7 +53,7 @@
             cidr='2002::abcd:0/112')
         cls.router = cls.create_router(
             data_utils.rand_name('router'),
-            external_network_id=cls.ext_net_id)
+            external_network_id=ext_net['id'])
 
     @decorators.attr(type='negative')
     @decorators.idempotent_id('a0897204-bb85-41cc-a5fd-5d0ab8116a07')
@@ -102,3 +114,22 @@
                           self.router['id'],
                           enable_ndp_proxy=True,
                           external_gateway_info={})
+
+    @decorators.attr(type='negative')
+    @decorators.idempotent_id('194b5ee7-4c59-4643-aabf-80a125c3f688')
+    def test_enable_ndp_proxy_without_address_scope(self):
+        extnet = self.create_network("extnet", client=self.admin_client,
+                                     external=True)
+        self.create_subnet(extnet, client=self.admin_client,
+                           ip_version=constants.IP_VERSION_6,
+                           cidr='2001:abc1::0/112')
+        self.assertRaises(exceptions.Conflict,
+                          self.client.create_router,
+                          name=data_utils.rand_name('router'),
+                          enable_ndp_proxy=True,
+                          external_gateway_info={'network_id': extnet['id']})
+        router = self.create_router(data_utils.rand_name('router'))
+        self.assertRaises(exceptions.Conflict,
+                          self.client.update_router,
+                          router['id'], enable_ndp_proxy=True,
+                          external_gateway_info={'network_id': extnet['id']})
