def test_config_init(self):
        config1 = ParselmouthConfig(
            ParselmouthProviders.google_dfp_premium,
            config_path=self.config_path,
        )
        self.assertDictEqual(self.credentials,
                             config1.get_credentials_arguments())

        config2 = ParselmouthConfig(
            ParselmouthProviders.google_dfp_premium,
            client_id='ID',
            client_secret='SECRET',
            refresh_token='REFRESH_TOKEN',
            network_code='NETWORK_CODE',
            application_name='APPLICATION_NAME',
        )
        self.assertDictEqual(self.credentials,
                             config2.get_credentials_arguments())
Beispiel #2
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)
                )
            )
 def test_no_config_params(self):
     with self.assertRaises(ParselmouthException):
         config = ParselmouthConfig(
             ParselmouthProviders.google_dfp_premium, )