@@ -306,7 +306,8 @@ def test_should_call_cli_deploy_dags_command__with_defaults_and_with_implicit_de
306
306
deployment_config = Config(name='dev',
307
307
properties={
308
308
'gcp_project_id': 'my-gcp-project-id',
309
- 'dags_bucket': 'my-dags-bucket'
309
+ 'dags_bucket': 'my-dags-bucket',
310
+ 'vault_secret': 'secret'
310
311
})
311
312
''' )
312
313
@@ -320,7 +321,7 @@ def test_should_call_cli_deploy_dags_command__with_defaults_and_with_implicit_de
320
321
dags_dir = self ._expected_default_dags_dir (),
321
322
project_id = 'my-gcp-project-id' ,
322
323
vault_endpoint = None ,
323
- vault_secret = None )
324
+ vault_secret = 'secret' )
324
325
325
326
dc_file .unlink ()
326
327
@@ -334,12 +335,14 @@ def test_should_call_cli_deploy_dags_command_for_different_environments(self, de
334
335
deployment_config = Config(name='dev',
335
336
properties={
336
337
'gcp_project_id': 'my-gcp-dev-project-id',
337
- 'dags_bucket': 'my-dags-dev-bucket'
338
+ 'dags_bucket': 'my-dags-dev-bucket',
339
+ 'vault_secret': 'secret-dev'
338
340
})\
339
341
.add_configuration(name='prod',
340
342
properties={
341
343
'gcp_project_id': 'my-gcp-prod-project-id',
342
- 'dags_bucket': 'my-dags-prod-bucket'
344
+ 'dags_bucket': 'my-dags-prod-bucket',
345
+ 'vault_secret': 'secret-prod'
343
346
})
344
347
345
348
''' )
@@ -354,7 +357,7 @@ def test_should_call_cli_deploy_dags_command_for_different_environments(self, de
354
357
dags_dir = self ._expected_default_dags_dir (),
355
358
project_id = 'my-gcp-dev-project-id' ,
356
359
vault_endpoint = None ,
357
- vault_secret = None )
360
+ vault_secret = 'secret-dev' )
358
361
359
362
# when
360
363
cli (['deploy-dags' , '--config' , 'dev' ])
@@ -366,7 +369,7 @@ def test_should_call_cli_deploy_dags_command_for_different_environments(self, de
366
369
dags_dir = self ._expected_default_dags_dir (),
367
370
project_id = 'my-gcp-dev-project-id' ,
368
371
vault_endpoint = None ,
369
- vault_secret = None )
372
+ vault_secret = 'secret-dev' )
370
373
371
374
# when
372
375
cli (['deploy-dags' , '--config' , 'prod' ])
@@ -378,7 +381,7 @@ def test_should_call_cli_deploy_dags_command_for_different_environments(self, de
378
381
dags_dir = self ._expected_default_dags_dir (),
379
382
project_id = 'my-gcp-prod-project-id' ,
380
383
vault_endpoint = None ,
381
- vault_secret = None )
384
+ vault_secret = 'secret-prod' )
382
385
383
386
dc_file .unlink ()
384
387
@@ -393,16 +396,16 @@ def test_should_call_cli_deploy_dags_command__when_parameters_are_given_by_expli
393
396
properties={
394
397
'gcp_project_id': 'my-another-gcp-project-id',
395
398
'vault_endpoint': 'my-another-vault-endpoint',
396
- 'dags_bucket': 'my-another-dags-bucket'
399
+ 'dags_bucket': 'my-another-dags-bucket',
400
+ 'vault_secret': 'secrett'
397
401
})
398
402
''' )
399
403
400
404
#when
401
405
cli (['deploy-dags' ,
402
406
'--deployment-config-path' , dc_file .as_posix (),
403
407
'--dags-dir' , '/tmp/my-dags-dir' ,
404
- '--auth-method' , 'service_account' ,
405
- '--vault-secret' , 'secrett'
408
+ '--auth-method' , 'service_account'
406
409
])
407
410
408
411
#then
@@ -539,8 +542,6 @@ def test_should_call_both_deploy_methods_with_deploy_command(self, deploy_docker
539
542
# when
540
543
cli (['deploy' , '-v' , '0.0.2' ])
541
544
542
-
543
-
544
545
# then
545
546
deploy_dags_folder_mock .assert_called_with (auth_method = 'local_account' ,
546
547
clear_dags_folder = False ,
@@ -608,6 +609,20 @@ def test_should_call_cli_build_image_command(self, _cli_build_image_mock):
608
609
# then
609
610
_cli_build_image_mock .assert_called_with (Namespace (operation = 'build-image' , export_image_to_file = True ))
610
611
612
+ @mock .patch ('bigflow.cli.run_process' )
613
+ @mock .patch ('bigflow.cli.validate_project_setup' )
614
+ def test_should_call_build_command_through_CLI (
615
+ self , validate_project_setup_mock , run_process_mock ):
616
+ # given
617
+ validate_project_setup_mock .return_value = '.'
618
+
619
+ # when
620
+ cli (['build' ])
621
+
622
+ # then
623
+ self .assertEqual (run_process_mock .call_count , 1 )
624
+ run_process_mock .assert_any_call ('python project_setup.py build_project' .split (' ' ))
625
+
611
626
@mock .patch ('bigflow.cli._cli_build_package' )
612
627
def test_should_call_cli_build_package_command (self , _cli_build_package_mock ):
613
628
# when
@@ -645,58 +660,50 @@ def test_should_call_cli_build_command(self, _cli_build_mock):
645
660
_cli_build_mock .assert_called_with (Namespace (operation = 'build' , export_image_to_file = True ,
646
661
start_time = '2020-01-01 00:00:00' , workflow = 'some_workflow' ))
647
662
648
- @mock .patch ('bigflow.cli.check_if_project_setup_exists' )
649
663
@mock .patch ('bigflow.cli.run_process' )
650
- def test_should_call_build_command_through_CLI (self , run_process_mock , check_if_project_setup_exists_mock ):
651
- # given
652
- check_if_project_setup_exists_mock .return_value = TEST_PROJECT_PATH
653
-
654
- # when
655
- cli (['build' ])
656
-
657
- # then
658
- self .assertEqual (run_process_mock .call_count , 1 )
659
- run_process_mock .assert_any_call ('python project_setup.py build_project --build-dags --build-image --build-package' .format (str (TEST_PROJECT_PATH )))
660
-
661
- @mock .patch ('bigflow.cli.check_if_project_setup_exists' )
662
- @mock .patch ('bigflow.cli.run_process' )
663
- def test_should_call_build_package_command_through_CLI (self , run_process_mock , check_if_project_setup_exists_mock ):
664
- # given
665
- check_if_project_setup_exists_mock .return_value = TEST_PROJECT_PATH
666
-
664
+ @mock .patch ('bigflow.cli.validate_project_setup' )
665
+ def test_should_call_build_package_command_through_CLI (self , validate_project_setup_mock , run_process_mock ):
667
666
# when
668
667
cli (['build-package' ])
669
668
670
669
# then
671
670
self .assertEqual (run_process_mock .call_count , 1 )
672
671
run_process_mock .assert_any_call ('python project_setup.py build_project --build-package' )
673
672
674
- @mock .patch ('bigflow.cli.check_if_project_setup_exists' )
675
673
@mock .patch ('bigflow.cli.run_process' )
676
- def test_should_call_build_command_through_CLI (self , run_process_mock , check_if_project_setup_exists_mock ):
677
- # given
678
- check_if_project_setup_exists_mock .return_value = TEST_PROJECT_PATH
679
-
674
+ @mock .patch ('bigflow.cli.find_file' )
675
+ @mock .patch ('bigflow.cli.validate_project_setup' )
676
+ def test_should_call_build_image_command_through_CLI (self , validate_project_setup_mock , find_file_mock , run_process_mock ):
680
677
# when
681
678
cli (['build-image' ])
682
679
683
680
# then
684
681
self .assertEqual (run_process_mock .call_count , 1 )
685
682
run_process_mock .assert_any_call ('python project_setup.py build_project --build-image' )
686
683
687
- @mock .patch ('bigflow.cli.check_if_project_setup_exists' )
688
684
@mock .patch ('bigflow.cli.run_process' )
689
- def test_should_call_build_dags_command_through_CLI (self , run_process_mock , check_if_project_setup_exists_mock ):
690
- # given
691
- check_if_project_setup_exists_mock .return_value = TEST_PROJECT_PATH
692
-
685
+ @mock .patch ('bigflow.cli.validate_project_setup' )
686
+ def test_should_call_build_dags_command_through_CLI (self , validate_project_setup_mock , run_process_mock ):
693
687
# when
694
688
cli (['build-dags' ])
695
689
696
690
# then
697
691
self .assertEqual (run_process_mock .call_count , 1 )
698
692
run_process_mock .assert_any_call ('python project_setup.py build_project --build-dags' .split (' ' ))
699
693
694
+ @mock .patch ('bigflow.cli.run_process' )
695
+ @mock .patch ('bigflow.cli.validate_project_setup' )
696
+ def test_should_validate_project_setup_before_build (
697
+ self , validate_project_setup_mock , run_process_mock ):
698
+ # when
699
+ cli (['build' ])
700
+ cli (['build-image' ])
701
+ cli (['build-dags' ])
702
+ cli (['build-package' ])
703
+
704
+ # then
705
+ self .assertEqual (validate_project_setup_mock .call_count , 4 )
706
+
700
707
def _expected_default_dags_dir (self ):
701
708
return (Path (os .getcwd ()) / '.dags' ).as_posix ()
702
709
@@ -707,3 +714,17 @@ def _touch_file(self, file_name: str, content: str = ''):
707
714
f .write_text (content )
708
715
return f
709
716
717
+
718
+ class ValidateProjectSetupTestCase (TestCase ):
719
+
720
+ @mock .patch ('bigflow.cli.check_if_project_setup_exists' )
721
+ @mock .patch ('bigflow.cli.run_process' )
722
+ def test_should_raise_error_if_no_expected_message_found_in_setup_output (
723
+ self , run_process_mock , check_if_project_setup_exists_mock ):
724
+ # given
725
+ run_process_mock .return_value = 'Unexpected message'
726
+
727
+ # then
728
+ with self .assertRaises (ValueError ) as e :
729
+ # when
730
+ validate_project_setup ()
0 commit comments