@@ -703,3 +703,83 @@ def test_change_tls(self):
703703 }]
704704 self .assertEqual (len (response .data ["results" ]), 1 , response .data )
705705 self .assertEqual (response .data ["results" ][0 ]["parent_refs" ], expect , response .data )
706+
707+ def test_route_parent_refs (self ):
708+ app_id = self .create_app_with_domain_and_deploy ()
709+ response = self .client .get ('/v2/apps/{}/routes/' .format (app_id ))
710+ self .assertEqual (len (response .data ["results" ]), 1 , response .data )
711+ expect = [{
712+ 'name' : f'{ app_id } ' ,
713+ 'port' : 80
714+ }]
715+ # enable tls
716+ self .change_certs_auto (app_id , True )
717+ self .assertEqual (response .data ["results" ][0 ]["parent_refs" ], expect , response .data )
718+ response = self .client .get ('/v2/apps/{}/routes/' .format (app_id ))
719+ self .assertEqual (len (response .data ["results" ]), 1 , response .data )
720+ expect = [{
721+ 'name' : f'{ app_id } ' ,
722+ 'port' : 80
723+ }, {
724+ 'name' : f'{ app_id } ' ,
725+ 'port' : 443
726+ }]
727+ self .assertEqual (len (response .data ["results" ]), 1 , response .data )
728+ self .assertEqual (response .data ["results" ][0 ]["parent_refs" ], expect , response .data )
729+ # add new domain
730+ ptype , kind , route_name , domain = (
731+ 'gateway' , "HTTPRoute" , "myroute-1" , 'test-domain-gateway.example.com' )
732+ response = self .client .post (
733+ '/v2/apps/{}/domains' .format (app_id ),
734+ {'domain' : domain , 'ptype' : ptype }
735+ )
736+ self .assertEqual (response .status_code , 201 , response .data )
737+ # add new services
738+ response = self .client .post (
739+ '/v2/apps/{}/services' .format (app_id ),
740+ {
741+ 'port' : 9999 ,
742+ 'protocol' : 'TCP' ,
743+ 'target_port' : 9999 ,
744+ 'ptype' : 'gateway'
745+ }
746+ )
747+ self .assertEqual (response .status_code , 201 , response .data )
748+ # add new router
749+ response = self .client .post (
750+ '/v2/apps/{}/routes/' .format (app_id ),
751+ {
752+ "kind" : kind ,
753+ "name" : route_name ,
754+ "rules" : [{
755+ "backendRefs" : [{
756+ "kind" : "Service" ,
757+ "name" : f"{ app_id } -{ ptype } " ,
758+ "port" : 9999 ,
759+ "weight" : 100 ,
760+ }],
761+ }],
762+ }
763+ )
764+ self .assertEqual (response .status_code , 201 , response .data )
765+ self .client .patch (
766+ '/v2/apps/{}/routes/{}/attach/' .format (app_id , route_name ),
767+ {
768+ "gateway" : app_id ,
769+ "port" : 443
770+ }
771+ )
772+ self .assertEqual (response .status_code , 201 , response .data )
773+ route = Route .objects .get (name = route_name )
774+ response = route .scheduler ().httproutes .get (app_id , route_name )
775+ self .assertEqual (response .status_code , 200 , response .json ())
776+ self .assertEqual (len (response .json ()['spec' ]['parentRefs' ]), 1 )
777+ # get gateway
778+ response = route .scheduler ().gateways .get (app_id , app_id )
779+ listeners = [
780+ listener for listener in response .json ()['spec' ]['listeners' ]
781+ if listener ['port' ] == 443
782+ ]
783+ self .assertEqual (len (listeners ) > 1 , True )
784+ hostnames = [listener ['hostname' ] for listener in listeners ]
785+ self .assertEqual (domain in hostnames , True )
0 commit comments