1616
1717from openstackclient .common import exceptions
1818from openstackclient .network .v2 import network
19+ from openstackclient .tests import fakes
20+ from openstackclient .tests .identity .v2_0 import fakes as identity_fakes_v2
21+ from openstackclient .tests .identity .v3 import fakes as identity_fakes_v3
1922from openstackclient .tests .network import common
2023
2124RESOURCE = 'network'
@@ -65,6 +68,7 @@ def test_create_no_options(self):
6568 ('name' , FAKE_NAME ),
6669 ('admin_state' , True ),
6770 ('shared' , None ),
71+ ('project' , None ),
6872 ]
6973 mocker = mock .Mock (return_value = copy .deepcopy (RESPONSE ))
7074 self .app .client_manager .network .create_network = mocker
@@ -85,15 +89,36 @@ def test_create_all_options(self):
8589 arglist = [
8690 "--disable" ,
8791 "--share" ,
92+ "--project" , identity_fakes_v3 .project_name ,
93+ "--domain" , identity_fakes_v3 .domain_name ,
8894 FAKE_NAME ,
8995 ] + self .given_show_options
9096 verifylist = [
9197 ('admin_state' , False ),
9298 ('shared' , True ),
99+ ('project' , identity_fakes_v3 .project_name ),
100+ ('domain' , identity_fakes_v3 .domain_name ),
93101 ('name' , FAKE_NAME ),
94102 ] + self .then_show_options
95103 mocker = mock .Mock (return_value = copy .deepcopy (RESPONSE ))
96104 self .app .client_manager .network .create_network = mocker
105+ identity_client = identity_fakes_v3 .FakeIdentityv3Client (
106+ endpoint = fakes .AUTH_URL ,
107+ token = fakes .AUTH_TOKEN ,
108+ )
109+ self .app .client_manager .identity = identity_client
110+ self .projects_mock = self .app .client_manager .identity .projects
111+ self .projects_mock .get .return_value = fakes .FakeResource (
112+ None ,
113+ copy .deepcopy (identity_fakes_v3 .PROJECT ),
114+ loaded = True ,
115+ )
116+ self .domains_mock = self .app .client_manager .identity .domains
117+ self .domains_mock .get .return_value = fakes .FakeResource (
118+ None ,
119+ copy .deepcopy (identity_fakes_v3 .DOMAIN ),
120+ loaded = True ,
121+ )
97122 cmd = network .CreateNetwork (self .app , self .namespace )
98123
99124 parsed_args = self .check_parser (cmd , arglist , verifylist )
@@ -104,6 +129,7 @@ def test_create_all_options(self):
104129 'admin_state_up' : False ,
105130 'name' : FAKE_NAME ,
106131 'shared' : True ,
132+ 'tenant_id' : identity_fakes_v3 .project_id ,
107133 }
108134 })
109135 self .assertEqual (FILTERED , result )
@@ -135,6 +161,80 @@ def test_create_other_options(self):
135161 })
136162 self .assertEqual (FILTERED , result )
137163
164+ def test_create_with_project_identityv2 (self ):
165+ arglist = [
166+ "--project" , identity_fakes_v2 .project_name ,
167+ FAKE_NAME ,
168+
169+ ]
170+ verifylist = [
171+ ('admin_state' , True ),
172+ ('shared' , None ),
173+ ('name' , FAKE_NAME ),
174+ ('project' , identity_fakes_v2 .project_name ),
175+ ]
176+ mocker = mock .Mock (return_value = copy .deepcopy (RESPONSE ))
177+ self .app .client_manager .network .create_network = mocker
178+ identity_client = identity_fakes_v2 .FakeIdentityv2Client (
179+ endpoint = fakes .AUTH_URL ,
180+ token = fakes .AUTH_TOKEN ,
181+ )
182+ self .app .client_manager .identity = identity_client
183+ self .projects_mock = self .app .client_manager .identity .tenants
184+ self .projects_mock .get .return_value = fakes .FakeResource (
185+ None ,
186+ copy .deepcopy (identity_fakes_v2 .PROJECT ),
187+ loaded = True ,
188+ )
189+ cmd = network .CreateNetwork (self .app , self .namespace )
190+
191+ parsed_args = self .check_parser (cmd , arglist , verifylist )
192+ result = list (cmd .take_action (parsed_args ))
193+
194+ mocker .assert_called_with ({
195+ RESOURCE : {
196+ 'admin_state_up' : True ,
197+ 'name' : FAKE_NAME ,
198+ 'tenant_id' : identity_fakes_v2 .project_id ,
199+ }
200+ })
201+ self .assertEqual (FILTERED , result )
202+
203+ def test_create_with_domain_identityv2 (self ):
204+ arglist = [
205+ "--project" , identity_fakes_v3 .project_name ,
206+ "--domain" , identity_fakes_v3 .domain_name ,
207+ FAKE_NAME ,
208+ ]
209+ verifylist = [
210+ ('admin_state' , True ),
211+ ('shared' , None ),
212+ ('project' , identity_fakes_v3 .project_name ),
213+ ('domain' , identity_fakes_v3 .domain_name ),
214+ ('name' , FAKE_NAME ),
215+ ]
216+ mocker = mock .Mock (return_value = copy .deepcopy (RESPONSE ))
217+ self .app .client_manager .network .create_network = mocker
218+ identity_client = identity_fakes_v2 .FakeIdentityv2Client (
219+ endpoint = fakes .AUTH_URL ,
220+ token = fakes .AUTH_TOKEN ,
221+ )
222+ self .app .client_manager .identity = identity_client
223+ self .projects_mock = self .app .client_manager .identity .tenants
224+ self .projects_mock .get .return_value = fakes .FakeResource (
225+ None ,
226+ copy .deepcopy (identity_fakes_v2 .PROJECT ),
227+ loaded = True ,
228+ )
229+ cmd = network .CreateNetwork (self .app , self .namespace )
230+ parsed_args = self .check_parser (cmd , arglist , verifylist )
231+
232+ self .assertRaises (
233+ AttributeError ,
234+ cmd .take_action ,
235+ parsed_args ,
236+ )
237+
138238
139239class TestDeleteNetwork (common .TestNetworkBase ):
140240 def test_delete (self ):
0 commit comments