def test_GIVEN_non_existant_user_in_list_WHEN_get_filtered_THEN_user_is_replaced_by_default_user(self):
        nobody_username = "******"
        config = ConfigMother.test_configuration_with_values(nobody_username=nobody_username)
        client = MajicWebserviceClient(config)
        client.get_properties_list = Mock(return_value={
            JSON_MODEL_RUNS: RunModelPropertiesMother.create_model_run_properties([1], owner="non_existant_user")})

        results = client.get_properties_list_with_filtered_users()

        assert_that(results, is_(RunModelPropertiesMother.create_model_run_properties([1], owner=nobody_username)))
    def test_GIVEN_user_in_list_WHEN_get_filtered_THEN_user_kept(self):
        expected_user = getpass.getuser()
        nobody_username = "******"
        config = ConfigMother.test_configuration_with_values(nobody_username=nobody_username)
        client = MajicWebserviceClient(config)
        client.get_properties_list = Mock(return_value={
            JSON_MODEL_RUNS: RunModelPropertiesMother.create_model_run_properties([1], owner=expected_user)})

        results = client.get_properties_list_with_filtered_users()

        assert_that(results, is_(RunModelPropertiesMother.create_model_run_properties([1], owner=expected_user)))
    def test_GIVEN_one_extra_entry_on_model_list_WHEN_compare_THEN_extra_entry_is_in_new_dirs_list(self):

        runid = 12
        expected_new_dir = [FileProperties("{}/run{}".format(self.expected_path, runid), self.model_owner, False, False)]
        filelist = self.create_filelist_and_mock_file_stats([])
        model_properties = RunModelPropertiesMother.create_model_run_properties([runid])
        file_system_comparer = FileSystemComparer(self.config, self.mock_file_system_client)

        file_system_comparer.perform_analysis(model_properties)

        assert_that_file_system_comparer(file_system_comparer, expected_new_dirs=expected_new_dir)
    def test_GIVEN_existing_file_owned_by_someone_else_WHEN_compare_THEN_directory_is_set_for_change(self):

        runids = [23]
        expected_owner = "different_username"
        model_properties = RunModelPropertiesMother.create_model_run_properties(runids, owner=expected_owner)
        filelist = self.create_filelist_and_mock_file_stats(runids)
        expected_changed_dirs = [FileProperties("{}/{}".format(self.expected_path, file), expected_owner, False, False) for file in filelist]
        file_system_comparer = FileSystemComparer(self.config, self.mock_file_system_client)

        file_system_comparer.perform_analysis(model_properties)

        assert_that_file_system_comparer(file_system_comparer, expected_changed_dirs=expected_changed_dirs,
                                         existing_non_deleted_directories=expected_changed_dirs)
    def test_GIVEN_existing_file_is_not_public_and_model_is_WHEN_compare_THEN_directory_is_set_for_change(self):

        runids = [23]
        model_properties = RunModelPropertiesMother.create_model_run_properties(runids, public=True)
        filelist = self.create_filelist_and_mock_file_stats(runids)
        for mock_file_stat in self.mock_file_stats.values():
            mock_file_stat.is_published = False
        expected_changed_dirs = [FileProperties("{}/{}".format(self.expected_path, file), self.model_owner, False, True) for file in filelist]
        file_system_comparer = FileSystemComparer(self.config, self.mock_file_system_client)

        file_system_comparer.perform_analysis(model_properties)

        assert_that_file_system_comparer(file_system_comparer, expected_changed_dirs=expected_changed_dirs,
                                         existing_non_deleted_directories=expected_changed_dirs)
    def test_GIVEN_two_extra_models_WHEN_compare_THEN_models_appear_on_new_dirs_list(self):

        runids = [100, 12]
        expected_new_dirs = [FileProperties("{}/run{}".format(
            self.expected_path, runid),
            self.model_owner,
            False,
            False) for runid in runids]
        filelist = self.create_filelist_and_mock_file_stats([])
        model_properties = RunModelPropertiesMother.create_model_run_properties(runids)
        file_system_comparer = FileSystemComparer(self.config, self.mock_file_system_client)

        file_system_comparer.perform_analysis(model_properties)

        assert_that_file_system_comparer(file_system_comparer, expected_new_dirs=expected_new_dirs)
    def test_GIVEN_entries_in_file_list_same_as_model_list_WHEN_compare_THEN_no_extra_entires(self):

        runids = [100, 12]
        expected_new_dirs = []
        expected_existing_non_deleted_directories = [FileProperties("{}/run{}".format(
            self.expected_path, runid),
            self.model_owner,
            False,
            False) for runid in runids]
        filelist = self.create_filelist_and_mock_file_stats(runids)
        model_properties = RunModelPropertiesMother.create_model_run_properties(runids)
        file_system_comparer = FileSystemComparer(self.config, self.mock_file_system_client)

        file_system_comparer.perform_analysis(model_properties)

        assert_that_file_system_comparer(file_system_comparer, expected_new_dirs=expected_new_dirs,
                                    existing_non_deleted_directories=expected_existing_non_deleted_directories)