@@ -229,6 +229,7 @@ def test_create_privileged(mock_get_current_user_name, mock_setting_get_instance
229229 assert not mock_copy_files .called
230230
231231
232+ @mock .patch ("src.Kathara.utils._platform" , "linux" )
232233@mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.get_machines_api_objects_by_filters" )
233234@mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.copy_files" )
234235@mock .patch ("src.Kathara.setting.Setting.Setting.get_instance" )
@@ -358,6 +359,71 @@ def __init__(self, name):
358359 assert not mock_copy_files .called
359360
360361
362+ @mock .patch ("src.Kathara.utils._platform" , "win32" )
363+ @mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.get_machines_api_objects_by_filters" )
364+ @mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.copy_files" )
365+ @mock .patch ("src.Kathara.setting.Setting.Setting.get_instance" )
366+ @mock .patch ("src.Kathara.utils.get_current_user_name" )
367+ def test_create_interface_win (mock_get_current_user_name , mock_setting_get_instance ,
368+ mock_copy_files , mock_get_machines_api_objects_by_filters , docker_machine ,
369+ default_device ):
370+ class LinkApiObj :
371+ def __init__ (self , name ):
372+ self .name = name
373+
374+ link = Link (default_device .lab , "A" )
375+ link .api_object = LinkApiObj ("link_a" )
376+
377+ default_device .add_interface (link , 0 )
378+
379+ docker_machine .client .api .create_endpoint_config .return_value = {}
380+ mock_get_machines_api_objects_by_filters .return_value = []
381+ mock_get_current_user_name .return_value = "test-user"
382+
383+ setting_mock = Mock ()
384+ setting_mock .configure_mock (** {
385+ 'shared_cds' : SharedCollisionDomainsOption .NOT_SHARED ,
386+ 'device_prefix' : 'dev_prefix' ,
387+ "device_shell" : '/bin/bash' ,
388+ 'enable_ipv6' : False ,
389+ 'remote_url' : None ,
390+ 'hosthome_mount' : False ,
391+ 'shared_mount' : False
392+ })
393+ mock_setting_get_instance .return_value = setting_mock
394+ docker_machine .create (default_device )
395+ docker_machine .client .containers .create .assert_called_once_with (
396+ image = 'kathara/test' ,
397+ name = 'dev_prefix_test-user_test_device_9pe3y6IDMwx4PfOPu5mbNg' ,
398+ hostname = 'test_device' ,
399+ cap_add = ['NET_ADMIN' , 'NET_RAW' , 'NET_BROADCAST' , 'NET_BIND_SERVICE' , 'SYS_ADMIN' ],
400+ privileged = False ,
401+ network = "link_a" ,
402+ network_mode = 'bridge' ,
403+ networking_config = {"link_a" : {}},
404+ sysctls = {'net.ipv4.conf.all.rp_filter' : 0 ,
405+ 'net.ipv4.conf.default.rp_filter' : 0 ,
406+ 'net.ipv4.conf.lo.rp_filter' : 0 ,
407+ 'net.ipv4.conf.eth0.rp_filter' : 0 ,
408+ 'net.ipv4.ip_forward' : 1 ,
409+ 'net.ipv4.icmp_ratelimit' : 0 ,
410+ },
411+ environment = {},
412+ mem_limit = '64m' ,
413+ nano_cpus = 2000000000 ,
414+ ports = None ,
415+ tty = True ,
416+ stdin_open = True ,
417+ detach = True ,
418+ volumes = {},
419+ labels = {'name' : 'test_device' , 'lab_hash' : '9pe3y6IDMwx4PfOPu5mbNg' , 'user' : 'test-user' , 'app' : 'kathara' ,
420+ 'shell' : '/bin/bash' }
421+ )
422+
423+ assert not mock_copy_files .called
424+
425+
426+ @mock .patch ("src.Kathara.utils._platform" , "linux" )
361427@mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.get_machines_api_objects_by_filters" )
362428@mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.copy_files" )
363429@mock .patch ("src.Kathara.setting.Setting.Setting.get_instance" )
@@ -502,6 +568,77 @@ def __init__(self, name):
502568 assert not mock_copy_files .called
503569
504570
571+ @mock .patch ("src.Kathara.utils._platform" , "win32" )
572+ @mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.get_machines_api_objects_by_filters" )
573+ @mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.copy_files" )
574+ @mock .patch ("src.Kathara.setting.Setting.Setting.get_instance" )
575+ @mock .patch ("src.Kathara.utils.get_current_user_name" )
576+ def test_create_interface_mac_addr_win (mock_get_current_user_name , mock_setting_get_instance ,
577+ mock_copy_files , mock_get_machines_api_objects_by_filters , docker_machine ,
578+ default_device ):
579+ class LinkApiObj :
580+ def __init__ (self , name ):
581+ self .name = name
582+
583+ link = Link (default_device .lab , "A" )
584+ link .api_object = LinkApiObj ("link_a" )
585+
586+ expected_mac_addr = "00:00:00:00:ff:ff"
587+ default_device .add_interface (link , 0 , expected_mac_addr )
588+
589+ docker_machine .client .api .create_endpoint_config .return_value = {
590+ 'driver_opt' : {'kathara.mac_addr' : expected_mac_addr }
591+ }
592+ mock_get_machines_api_objects_by_filters .return_value = []
593+ mock_get_current_user_name .return_value = "test-user"
594+
595+ setting_mock = Mock ()
596+ setting_mock .configure_mock (** {
597+ 'shared_cds' : SharedCollisionDomainsOption .NOT_SHARED ,
598+ 'device_prefix' : 'dev_prefix' ,
599+ "device_shell" : '/bin/bash' ,
600+ 'enable_ipv6' : False ,
601+ 'remote_url' : None ,
602+ 'hosthome_mount' : False ,
603+ 'shared_mount' : False
604+ })
605+ mock_setting_get_instance .return_value = setting_mock
606+ docker_machine .create (default_device )
607+
608+ docker_machine .client .api .create_endpoint_config .assert_called_once_with (
609+ driver_opt = {'kathara.mac_addr' : expected_mac_addr }
610+ )
611+ docker_machine .client .containers .create .assert_called_once_with (
612+ image = 'kathara/test' ,
613+ name = 'dev_prefix_test-user_test_device_9pe3y6IDMwx4PfOPu5mbNg' ,
614+ hostname = 'test_device' ,
615+ cap_add = ['NET_ADMIN' , 'NET_RAW' , 'NET_BROADCAST' , 'NET_BIND_SERVICE' , 'SYS_ADMIN' ],
616+ privileged = False ,
617+ network = "link_a" ,
618+ network_mode = 'bridge' ,
619+ networking_config = {"link_a" : {'driver_opt' : {'kathara.mac_addr' : expected_mac_addr }}},
620+ sysctls = {'net.ipv4.conf.all.rp_filter' : 0 ,
621+ 'net.ipv4.conf.default.rp_filter' : 0 ,
622+ 'net.ipv4.conf.lo.rp_filter' : 0 ,
623+ 'net.ipv4.conf.eth0.rp_filter' : 0 ,
624+ 'net.ipv4.ip_forward' : 1 ,
625+ 'net.ipv4.icmp_ratelimit' : 0 ,
626+ },
627+ environment = {},
628+ mem_limit = '64m' ,
629+ nano_cpus = 2000000000 ,
630+ ports = None ,
631+ tty = True ,
632+ stdin_open = True ,
633+ detach = True ,
634+ volumes = {},
635+ labels = {'name' : 'test_device' , 'lab_hash' : '9pe3y6IDMwx4PfOPu5mbNg' , 'user' : 'test-user' , 'app' : 'kathara' ,
636+ 'shell' : '/bin/bash' }
637+ )
638+
639+ assert not mock_copy_files .called
640+
641+
505642#
506643# TEST: start
507644#
0 commit comments