コード例 #1
0
def test_in_new_origen_proc():
    import origen

    assert "test_in_new_origen_proc" not in origen.users.keys()
    out = in_new_origen_proc(func__test_users_are_reset)
    assert out["users"] == [getpass.getuser(), "test_in_new_origen_proc"]

    assert "test_in_new_origen_proc" not in origen.current_user().datasets
    out = in_new_origen_proc(func__test_with_config)
    assert out["datasets"] == ["test_in_new_origen_proc"]
コード例 #2
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_error_on_invalid_auth_method(self, capfd):
     retn = in_new_origen_proc(mod=mailer_configs)
     assert retn["server"] == "smtp.origen.org"
     assert retn["auth_method"] == "None"
     out = capfd.readouterr().out
     assert "Invalid auth method 'blah!' found in the mailer configuration" in out
     assert "Unable to fully configure mailer from config!" in out
     assert "Forcing no authentication (mailer__auth_method = 'None')" in out
コード例 #3
0
 def test_error_message_on_default_data_and_given_hierarchy(self, capfd):
     ''' As no datasets were given, giving a hierarchy is not allowed '''
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["datasets"] == ["__origen__default__"]
     assert retn["hierarchy"] == ["__origen__default__"]
     stdout = capfd.readouterr().out
     assert "Providing config value 'user__data_lookup_hierarchy' without providing 'user__datasets' is not allowed" in stdout
     assert "Forcing default dataset..." in stdout
コード例 #4
0
 def test_error_message_on_default_data_and_empty_hierarchy(self, capfd):
     ''' Same as the above - cannot give an empty hierarchy either '''
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["datasets"] == ["__origen__default__"]
     assert retn["hierarchy"] == ["__origen__default__"]
     stdout = capfd.readouterr().out
     assert "Providing config value 'user__data_lookup_hierarchy' without providing 'user__datasets' is not allowed" in stdout
     assert "Forcing default dataset..." in stdout
コード例 #5
0
 def test_single_dataset_and_explicit_hierarchy(self):
     ''' Very close to what is already tested, but simple enough to do'''
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["datasets"] == ["test"]
     assert retn["hierarchy"] == ["test"]
     assert retn["first_name_unset"] == None
     assert retn["first_name_dataset_unset"] == None
     assert retn["first_name"] == "Corey2"
     assert retn["first_name_dataset"] == "Corey2"
コード例 #6
0
 def test_default_dataset_and_hierarchy(self):
     ''' No datasets given, nor any hierarchy. Absolute base case '''
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["datasets"] == ["__origen__default__"]
     assert retn["hierarchy"] == ["__origen__default__"]
     assert retn["first_name_unset"] == None
     assert retn["first_name_dataset_unset"] == None
     assert retn["first_name"] == "COREY"
     assert retn["first_name_dataset"] == "COREY"
コード例 #7
0
 def test_single_dataset_and_default_hierarchy(self):
     ''' Default hierarchy should be the only dataset '''
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["datasets"] == ["test"]
     assert retn["hierarchy"] == ["test"]
     assert retn["first_name_unset"] == None
     assert retn["first_name_dataset_unset"] == None
     assert retn["first_name"] == "Corey"
     assert retn["first_name_dataset"] == "Corey"
コード例 #8
0
 def test_error_on_duplicate_datasets_in_hierarchy(self, capfd):
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["data_lookup_hierarchy"] == []
     assert set(retn["datasets"]) == set(
         ['test', 'test2', 'git', 'forumsys', 'backup'])
     stdout = capfd.readouterr().out
     assert "dataset 'test' can only appear once in the dataset hierarchy (first appearance at index 0 - duplicate at index 2)" in stdout
     assert "Forcing empty dataset lookup hierarchy..." in stdout
     assert f"Data lookup hierarchy for user '{getpass.getuser()}' is empty" in stdout
コード例 #9
0
 def test_error_on_invalid_datasets_in_hierarchy(self, capfd):
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["data_lookup_hierarchy"] == []
     assert set(retn["datasets"]) == set(
         ['test', 'test2', 'git', 'forumsys', 'backup'])
     stdout = capfd.readouterr().out
     assert "'blah' is not a valid dataset and cannot be used in the dataset hierarchy" in stdout
     assert "Forcing empty dataset lookup hierarchy..." in stdout
     assert f"Data lookup hierarchy for user '{getpass.getuser()}' is empty" in stdout
コード例 #10
0
 def test_single_dataset_and_empty_hierarchy(self):
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["datasets"] == ["test"]
     assert retn["hierarchy"] == []
     assert isinstance(retn["first_name_unset"], OSError)
     assert str(
         retn["first_name_unset"]
     ) == "Dataset hierarchy is empty! Data lookups must explicitly name the dataset to query"
     assert retn["first_name_dataset_unset"] == None
     assert retn["first_name_unset_2"] == None
コード例 #11
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_tls_service_user(self):
     retn = in_new_origen_proc(mod=mailer_configs)
     assert retn["server"] == "smtp.origen.org"
     assert retn["auth_method"] == "TLS"
     assert retn["service_user"] == "mailer_service_user"
     assert isinstance(retn["dataset"], OSError)
     assert "Cannot query the user dataset for the mailer when specifying a service user" in str(
         retn["dataset"])
     assert retn["username"] == "mailer"
     assert retn["password"] == "test"
     assert retn["sender"] == "*****@*****.**"
コード例 #12
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_tls_dataset_with_backup(self):
     retn = in_new_origen_proc(mod=mailer_configs)
     assert retn["server"] == "smtp.origen.org"
     assert retn["auth_method"] == "TLS"
     assert retn["service_user"] == None
     assert retn["dataset"] == "for_mailer"
     assert retn["username"] == "mailer_name"
     assert retn["password"] == "mailer_pw"
     assert retn["sender"] == "*****@*****.**"
     assert retn["for_mailer_dataset_email"] == None
     assert retn["not_mailer_dataset_email"] == "*****@*****.**"
     assert retn["hierarchy"] == ["not_mailer"]
コード例 #13
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_maillist_toml_ext_overwrite_maillist_ext(self):
     ''' Confirm that, within the same directory, a .maillist.toml overwrites a .maillist '''
     retn = in_new_origen_proc(mod=mailer_configs)
     ml_file = self.config_tests_maillists_root.joinpath(
         "ext_overwrite/ext_overwrite.maillist")
     assert ml_file.exists
     assert set(retn["maillists"]) == set(
         [*self.available_maillists, "ext_overwrite"])
     ml = retn["ext_overwrite"]
     assert ml["resolve_recipients"] == ["*****@*****.**"]
     assert ml["file"] == self.config_tests_maillists_root.joinpath(
         "ext_overwrite/ext_overwrite.maillist.toml")
コード例 #14
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_error_on_tls_with_invalid_service_user(self, capfd):
     err = "Invalid service user 'blah' provided in mailer configuration"
     retn = in_new_origen_proc(mod=mailer_configs)
     assert retn["server"] == "smtp.origen.org"
     assert retn["auth_method"] == "TLS"
     assert isinstance(retn["service_user"], OSError)
     assert err in str(retn["service_user"])
     assert isinstance(retn["username"], OSError)
     assert err in str(retn["username"])
     assert isinstance(retn["password"], OSError)
     assert err in str(retn["password"])
     assert isinstance(retn["test"], OSError)
     assert err in str(retn["test"])
     assert err in capfd.readouterr().out
コード例 #15
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_mailer_minimum(self):
     retn = in_new_origen_proc(mod=mailer_configs)
     assert retn["server"] == "smtp_minimum.origen.org"
     assert retn["port"] == None
     assert retn["auth_method"] == "None"
     assert retn["domain"] == None
     assert retn["timeout"] == 60
     assert retn["service_user"] == None
     assert retn["dataset"] == None
     assert isinstance(retn["username"], OSError)
     assert "Cannot retrieve username when using auth method 'None'" in str(
         retn["username"])
     assert isinstance(retn["password"], OSError)
     assert "Cannot retrieve password when using auth method 'None'" in str(
         retn["password"])
     assert retn["sender"] == "*****@*****.**"
コード例 #16
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
    def test_error_message_on_conflicting_audiences(self, capfd):
        retn = in_new_origen_proc(mod=mailer_configs)

        def err_msg_regex(f, given_aud, mapped_given_aud, mapped_aud):
            return f"Maillist at '.*{f}.maillist.*' was given audience '{given_aud}' \\(maps to '{mapped_given_aud}'\\) but conflicts with the named audience '{mapped_aud}'. Maillist not added."

        stdout = capfd.readouterr().out
        assert set(retn["maillists"]) == self.available_maillists

        # Original maillists should be maintained
        n = "dev"
        ml = retn[n]
        f = self.app_ml_base.joinpath("dev.maillist.toml")
        assert ml["name"] == n
        assert ml["resolve_recipients"] == ["dev@test_apps.origen.org"]
        assert ml["audience"] == "development"
        assert ml["file"] == f
        assert re.search(err_msg_regex(n, "other", "other", "development"),
                         stdout)

        n = "develop"
        ml = retn[n]
        f = self.app_ml_base.joinpath("develop.maillist")
        assert ml["name"] == n
        assert ml["resolve_recipients"] == [
            "d1@test_apps.origen.org", "d2@test_apps.origen.org",
            "d3@test_apps.origen.org", "d4@test_apps.origen.org"
        ]
        assert ml["audience"] == "development"
        assert ml["file"] == f
        assert re.search(err_msg_regex(n, "prod", "production", "development"),
                         stdout)

        n = "prod"
        ml = retn[n]
        f = self.app_ml_base.joinpath("prod.maillist.toml")
        assert ml["name"] == n
        assert ml["resolve_recipients"] == [
            'prod1@test_apps.origen.org', 'prod2@test_apps.origen.org'
        ]
        assert ml["audience"] == "production"
        assert ml["file"] == f
        assert re.search(
            err_msg_regex(n, "development", "development", "production"),
            stdout)
コード例 #17
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_adding_custom_mailist_directories(self):
     retn = in_new_origen_proc(mod=mailer_configs)
     assert set(retn["maillists"]) == set(
         [*self.available_maillists, "custom1", "custom2", "other"])
     ml = retn["custom1"]
     assert ml["name"] == "custom1"
     assert ml["resolve_recipients"] == ["*****@*****.**", "*****@*****.**"]
     assert ml["audience"] == None
     assert ml["file"] == self.config_tests_maillists_root.joinpath(
         "custom/custom1.maillist")
     ml = retn["custom2"]
     assert ml["name"] == "custom2"
     assert ml["resolve_recipients"] == ["*****@*****.**", "*****@*****.**"]
     assert ml["audience"] == "development"
     assert ml["file"] == self.config_tests_maillists_root.joinpath(
         "custom/custom2.maillist.toml")
     assert set(retn["dev_maillists"]) == set(
         [*self.dev_maillists, "other", "custom2"])
コード例 #18
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
    def test_redundant_audience_parameter(self):
        # This should be fine, albeit redundant
        # prod.toml -> set to release
        retn = in_new_origen_proc(mod=mailer_configs)

        # release.toml -> set to develop
        ml = retn["development"]
        assert ml["name"] == "development"
        assert ml["resolve_recipients"] == ["*****@*****.**"]
        assert ml["audience"] == "development"
        assert ml["file"] == self.config_tests_maillists_root.joinpath(
            "redundant_audience/development.maillist.toml")

        # dev.toml -> set to production
        ml = retn["release"]
        assert ml["name"] == "release"
        assert ml["resolve_recipients"] == ["*****@*****.**"]
        assert ml["audience"] == "production"
        assert ml["file"] == self.config_tests_maillists_root.joinpath(
            "redundant_audience/release.maillist.toml")
コード例 #19
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
    def test_error_nessage_on_invalid_toml(self, capfd):
        retn = in_new_origen_proc(mod=mailer_configs)
        assert set(retn["maillists"]) == self.available_maillists

        # The original develop maillist should persist
        ml = retn["develop"]
        assert ml["name"] == "develop"
        assert ml["resolve_recipients"] == [
            "d1@test_apps.origen.org",
            "d2@test_apps.origen.org",
            "d3@test_apps.origen.org",
            "d4@test_apps.origen.org",
        ]
        stdout = capfd.readouterr().out

        def err_msg_regex(name):
            return f"Errors encountered building maillist '{name}' from .*invalid_toml.*{name}.maillist.*: unexpected eof encountered"

        assert re.search(err_msg_regex("develop"), stdout)
        assert re.search(err_msg_regex("invalid_toml"), stdout)
コード例 #20
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_mailists_overwrite_lower_priority_ones(self):
     retn = in_new_origen_proc(mod=mailer_configs)
     assert set(retn["maillists"]) == set(
         [*self.available_maillists, "custom1", "custom2"])
     ml = retn["custom2"]
     assert ml["name"] == "custom2"
     assert ml["resolve_recipients"] == [
         "*****@*****.**", "*****@*****.**"
     ]
     assert ml["audience"] == None
     assert ml["file"] == self.config_tests_maillists_root.joinpath(
         "override/custom2.maillist")
     ml = retn["develop"]
     assert ml["name"] == "develop"
     assert ml["resolve_recipients"] == [
         "*****@*****.**", "*****@*****.**"
     ]
     assert ml["audience"] == "development"
     assert ml["file"] == self.config_tests_maillists_root.joinpath(
         "override/develop.maillist.toml")
コード例 #21
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_error_on_bad_system(self, capfd):
     err = "Unrecognized mailer system 'blah'"
     retn = in_new_origen_proc(mod=mailer_configs)
     assert retn["mailer"] is None
     assert retn["app_mailer"] is None
     assert err in capfd.readouterr().err
コード例 #22
0
 def test_multi_datasets_and_default_hierarchy(self):
     ''' Default hierarchy for multiple datasets is empty '''
     retn = in_new_origen_proc(mod=user_configs)
     assert set(retn["datasets"]) == set(["test_1st", "test_2nd"])
     assert retn["hierarchy"] == []
     assert retn["hierarchy_2"] == ["test_1st", "test_2nd"]
コード例 #23
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_mailer_empty(self, capfd):
     retn = in_new_origen_proc(mod=mailer_configs)
     assert retn["mailer"] is None
     assert retn["app_mailer"] is None
     assert capfd.readouterr().err == ""
コード例 #24
0
 def test_empty_datasets(self):
     retn = in_new_origen_proc(mod=user_configs)
     assert retn["datasets"] == ["__origen__default__"]
     assert retn["hierarchy"] == ["__origen__default__"]
コード例 #25
0
ファイル: test_mailer.py プロジェクト: Origen-SDK/o2
 def test_error_on_missing_server(self, capfd):
     err = "Mailer\'s \'server\' parameter has not been set. Please provide a \'server\' to enable use of the mailer"
     retn = in_new_origen_proc(mod=mailer_configs)
     assert retn["mailer"] is None
     assert retn["app_mailer"] is None
     assert err in capfd.readouterr().err