1515from api .models .build import Build
1616from api .models .release import Release
1717from scheduler import KubeHTTPException
18- from api .exceptions import DryccException
1918from api .tests import adapter , DryccTransactionTestCase
2019import requests_mock
2120
@@ -443,10 +442,7 @@ def test_release_get_port(self, mock_requests):
443442 release = app .release_set .latest ()
444443
445444 # when app is not routable, then it still return 5000
446- self .assertEqual (release .get_port (), 5000 )
447-
448- # when a buildpack type, default to 5000
449- self .assertEqual (release .get_port (), 5000 )
445+ self .assertEqual (release .get_port ('web' ), 5000 )
450446
451447 # switch to a dockerfile app or else it'll automatically default to 5000
452448 url = f'/v2/apps/{ app_id } /builds'
@@ -459,11 +455,29 @@ def test_release_get_port(self, mock_requests):
459455 response = self .client .post (url , body )
460456 self .assertEqual (response .status_code , 201 , response .data )
461457 release = app .release_set .latest ()
458+ self .assertEqual (release .get_port ('web' ), 8080 )
462459
463- # check that the port number returned is an int, not a string
464- self .assertEqual (release .get_port (), 8080 )
460+ url = f'/v2/apps/{ app_id } /config'
461+ body = {'typed_values' : json .dumps ({"web" : {'PORT' : '9000' }})}
462+ response = self .client .post (url , body )
463+ self .assertEqual (response .status_code , 201 , response .data )
464+ release = app .release_set .latest ()
465+ self .assertEqual (release .get_port ('web' ), 9000 )
465466
466- # TODO(bacongobbler): test dockerfile ports
467+ # not web procfile
468+ self .assertEqual (release .get_port ('task' ), 8080 )
469+ url = f'/v2/apps/{ app_id } /config'
470+ body = {'values' : json .dumps ({'PORT' : '9000' })}
471+ response = self .client .post (url , body )
472+ self .assertEqual (response .status_code , 201 , response .data )
473+ release = app .release_set .latest ()
474+ self .assertEqual (release .get_port ('task' ), 9000 )
475+ # set typed_values port
476+ body = {'typed_values' : json .dumps ({"task" : {'PORT' : '9001' }})}
477+ response = self .client .post (url , body )
478+ self .assertEqual (response .status_code , 201 , response .data )
479+ release = app .release_set .latest ()
480+ self .assertEqual (release .get_port ('task' ), 9001 )
467481
468482 @override_settings (DRYCC_DEPLOY_HOOK_URLS = ['http://drycc.rocks' ])
469483 @mock .patch ('api.models.release.logger' )
@@ -575,45 +589,15 @@ def test_release_external_registry(self, mock_requests):
575589 response = self .client .post (url , body )
576590 self .assertEqual (response .status_code , 201 , response .data )
577591 release = app .release_set .latest ()
578-
579- self .assertEqual (release .get_port (), 3000 )
580-
592+ self .assertEqual (release .get_port ('web' ), 3000 )
581593 self .assertEqual (release .get_deploy_image (PROCFILE_TYPE_WEB ), 'test/autotest/example' )
582594
583- @override_settings (REGISTRY_LOCATION = "off-cluster" )
584- def test_release_external_registry_no_port (self , mock_requests ):
585- """
586- Test that an exception is raised when registry if off-cluster but
587- no port is provided.
588- """
589- app_id = self .create_app ()
590-
591- app = App .objects .get (id = app_id )
592- url = f'/v2/apps/{ app_id } /builds'
593- body = {'image' : 'test/autotest/example' , 'stack' : 'container' }
595+ url = f'/v2/apps/{ app_id } /config'
596+ body = {'typed_values' : json .dumps ({"web" : {'PORT' : '9000' }})}
594597 response = self .client .post (url , body )
595598 self .assertEqual (response .status_code , 201 , response .data )
596- data = self .client .get (f"/v2/apps/{ app_id } /releases/" , body ).json ()
597- self .assertEqual (data ["results" ][0 ]["state" ], "crashed" , data )
598-
599- with self .assertRaises (
600- DryccException ,
601- msg = 'PORT needs to be set in the config when using a private registry'
602- ):
603- release = app .release_set .latest ()
604- release .get_port ()
605-
606- # Set routable to false and port should be None instead of error
607- response = self .client .post (
608- f'/v2/apps/{ app .id } /settings' ,
609- {'routable' : False }
610- )
611- self .assertEqual (response .status_code , 201 , response .data )
612- self .assertFalse (app .appsettings_set .latest ().routable )
613-
614599 release = app .release_set .latest ()
615- port = release .get_port ()
616- self .assertIsNone (port )
600+ self .assertEqual (release .get_port ('web' ), 9000 )
617601
618602 def test_diff_procfile_types (self , mock_requests ):
619603 app_id = self .create_app ()
0 commit comments