@@ -229,6 +229,7 @@ def test_create_privileged(mock_get_current_user_name, mock_setting_get_instance
229
229
assert not mock_copy_files .called
230
230
231
231
232
+ @mock .patch ("src.Kathara.utils._platform" , "linux" )
232
233
@mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.get_machines_api_objects_by_filters" )
233
234
@mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.copy_files" )
234
235
@mock .patch ("src.Kathara.setting.Setting.Setting.get_instance" )
@@ -358,6 +359,71 @@ def __init__(self, name):
358
359
assert not mock_copy_files .called
359
360
360
361
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" )
361
427
@mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.get_machines_api_objects_by_filters" )
362
428
@mock .patch ("src.Kathara.manager.docker.DockerMachine.DockerMachine.copy_files" )
363
429
@mock .patch ("src.Kathara.setting.Setting.Setting.get_instance" )
@@ -502,6 +568,77 @@ def __init__(self, name):
502
568
assert not mock_copy_files .called
503
569
504
570
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
+
505
642
#
506
643
# TEST: start
507
644
#
0 commit comments