예제 #1
0
    def __init__(self,
                 config=None,
                 provider_name=None,
                 network_timeout=60 * 10,
                 **kwargs):
        """
        Constructor

        Authenticates a provider client for the given domain.

        @param config: parselmouth.config.ParselmouthConfig
        @param provider_name: any(parselmouth.constants.ParseltoungProvider)
        @param network_timeout: int, number seconds before timing out a request
            the given ad provider service
        """
        self._network_timeout = network_timeout
        self.provider_config = config
        # Load the provider configuration
        if self.provider_config and not isinstance(self.provider_config, ParselmouthConfig):
            raise ParselmouthException(
                "Invalid config.  Config should be of type ParselmouthConfig",
            )
        elif not self.provider_config:
            self.provider_config = ParselmouthConfig(provider_name, **kwargs)

        # Get interface for given provider
        self.provider_name = self.provider_config.provider_name
        provider_interface_class = self.get_ad_service_interface_for_provider(
            self.provider_name
        )

        self.provider = provider_interface_class(
            **self.provider_config.get_credentials_arguments()
        )
        self.tree_builder = TreeBuilder(
            self.provider_name,
            self.provider,
        )

        # Attempt to access the network to check proper configuration
        try:
            self.get_network_timezone()
        except Exception as e:
            raise ParselmouthException(
                "Provider not configured correctly. Got error: '{}'".format(
                    str(e)
                )
            )
예제 #2
0
 def setUp(self):
     self.tree_builder = TreeBuilder(None, None)