@@ -31,6 +31,16 @@ class IdentityTests(test.TestCase):
3131 PROJECT_FIELDS = ['description' , 'id' , 'domain_id' ,
3232 'enabled' , 'name' , 'parent_id' , 'links' ]
3333 ROLE_FIELDS = ['id' , 'name' , 'links' ]
34+ SERVICE_FIELDS = ['id' , 'enabled' , 'name' , 'type' , 'description' ]
35+ REGION_FIELDS = ['description' , 'enabled' , 'parent_region' ,
36+ 'region' , 'url' ]
37+ ENDPOINT_FIELDS = ['id' , 'region' , 'region_id' , 'service_id' ,
38+ 'service_name' , 'service_type' , 'enabled' ,
39+ 'interface' , 'url' ]
40+
41+ REGION_LIST_HEADERS = ['Region' , 'Parent Region' , 'Description' , 'URL' ]
42+ ENDPOINT_LIST_HEADERS = ['ID' , 'Region' , 'Service Name' , 'Service Type' ,
43+ 'Enabled' , 'Interface' , 'URL' ]
3444
3545 @classmethod
3646 def setUpClass (cls ):
@@ -68,7 +78,9 @@ def setUpClass(cls):
6878
6979 @classmethod
7080 def tearDownClass (cls ):
81+ # delete dummy project
7182 cls .openstack ('project delete %s' % cls .project_name )
83+ # disable and delete dummy domain
7284 cls .openstack ('domain set --disable %s' % cls .domain_name )
7385 cls .openstack ('domain delete %s' % cls .domain_name )
7486
@@ -173,3 +185,69 @@ def _create_dummy_project(self, add_clean_up=True):
173185 '%(name)s' % {'domain' : self .domain_name ,
174186 'name' : project_name })
175187 return project_name
188+
189+ def _create_dummy_region (self , parent_region = None , add_clean_up = True ):
190+ region_id = data_utils .rand_name ('TestRegion' )
191+ description = data_utils .rand_name ('description' )
192+ url = data_utils .rand_url ()
193+ parent_region_arg = ''
194+ if parent_region is not None :
195+ parent_region_arg = '--parent-region %s' % parent_region
196+ raw_output = self .openstack (
197+ 'region create '
198+ '%(parent_region_arg)s '
199+ '--description %(description)s '
200+ '--url %(url)s '
201+ '%(id)s' % {'parent_region_arg' : parent_region_arg ,
202+ 'description' : description ,
203+ 'url' : url ,
204+ 'id' : region_id })
205+ items = self .parse_show (raw_output )
206+ self .assert_show_fields (items , self .REGION_FIELDS )
207+ if add_clean_up :
208+ self .addCleanup (self .openstack ,
209+ 'region delete %s' % region_id )
210+ return region_id
211+
212+ def _create_dummy_service (self , add_clean_up = True ):
213+ service_name = data_utils .rand_name ('TestService' )
214+ description = data_utils .rand_name ('description' )
215+ type_name = data_utils .rand_name ('TestType' )
216+ raw_output = self .openstack (
217+ 'service create '
218+ '--name %(name)s '
219+ '--description %(description)s '
220+ '--enable '
221+ '%(type)s' % {'name' : service_name ,
222+ 'description' : description ,
223+ 'type' : type_name })
224+ items = self .parse_show (raw_output )
225+ self .assert_show_fields (items , self .SERVICE_FIELDS )
226+ if add_clean_up :
227+ service = self .parse_show_as_object (raw_output )
228+ self .addCleanup (self .openstack ,
229+ 'service delete %s' % service ['id' ])
230+ return service_name
231+
232+ def _create_dummy_endpoint (self , interface = 'public' , add_clean_up = True ):
233+ region_id = self ._create_dummy_region ()
234+ service_name = self ._create_dummy_service ()
235+ endpoint_url = data_utils .rand_url ()
236+ raw_output = self .openstack (
237+ 'endpoint create '
238+ '--region %(region)s '
239+ '--enable '
240+ '%(service)s '
241+ '%(interface)s '
242+ '%(url)s' % {'region' : region_id ,
243+ 'service' : service_name ,
244+ 'interface' : interface ,
245+ 'url' : endpoint_url })
246+ items = self .parse_show (raw_output )
247+ self .assert_show_fields (items , self .ENDPOINT_FIELDS )
248+ endpoint = self .parse_show_as_object (raw_output )
249+ if add_clean_up :
250+ self .addCleanup (
251+ self .openstack ,
252+ 'endpoint delete %s' % endpoint ['id' ])
253+ return endpoint ['id' ]
0 commit comments