def test_construct_from_properties_with_metadata(self): """Tests that constructing a communicator configuration using integrator and shopping cart data constructs properly """ self.config.set("ConnectSDK", "connect.api.integrator", "Ingenico.Integrator") self.config.set("ConnectSDK", "connect.api.shoppingCartExtension.creator", "Ingenico.Creator") self.config.set("ConnectSDK", "connect.api.shoppingCartExtension.name", "Ingenico.ShoppingCarts") self.config.set("ConnectSDK", "connect.api.shoppingCartExtension.version", "1.0") self.config.set("ConnectSDK", "connect.api.shoppingCartExtension.extensionId", "ExtensionId") communicator_config = CommunicatorConfiguration(self.config) self.assertDefaults(communicator_config) self.assertIsNone(communicator_config.api_key_id) self.assertIsNone(communicator_config.secret_api_key) self.assertIsNone(communicator_config.proxy_configuration) self.assertEqual("Ingenico.Integrator", communicator_config.integrator) self.assertIsNotNone(communicator_config.shopping_cart_extension) self.assertEqual("Ingenico.Creator", communicator_config.shopping_cart_extension.creator) self.assertEqual("Ingenico.ShoppingCarts", communicator_config.shopping_cart_extension.name) self.assertEqual("1.0", communicator_config.shopping_cart_extension.version) self.assertEqual( "ExtensionId", communicator_config.shopping_cart_extension.extension_id)
def test_construct_from_properties_with_host_and_scheme(self): """Tests that constructing a communicator configuration from a host and port correctly processes this info""" self.config.set("ConnectSDK", "connect.api.endpoint.scheme", "http") communicator_config = CommunicatorConfiguration(self.config) self.assertEqual("http://eu.sandbox.api-ingenico.com", communicator_config.api_endpoint.geturl())
def test_construct_from_properties_with_host_and_port(self): """Tests that constructing a communicator configuration from a host and port correctly processes this info""" self.config.set("ConnectSDK", "connect.api.endpoint.port", "8443") communicator_config = CommunicatorConfiguration(self.config) self.assertEqual("https://api-sandbox.globalcollect.com:8443", communicator_config.api_endpoint.geturl())
def assertDefaults(self, communicator_config): """Tests commonly used settings for testing url, authorization type, timeouts and max_connections""" # this argument should not be needed VV self.assertEqual("https://eu.sandbox.api-ingenico.com", communicator_config.api_endpoint.geturl()) self.assertEqual(AuthorizationType.get_authorization("v1HMAC"), communicator_config.authorization_type) self.assertEqual(20, communicator_config.connect_timeout) self.assertEqual(10, communicator_config.socket_timeout) self.assertEqual(CommunicatorConfiguration().DEFAULT_MAX_CONNECTIONS, communicator_config.max_connections)
def test_construct_from_properties_without_proxy(self): """Test if a CommunicatorConfiguration can be constructed correctly from a list of properties""" communicator_config = CommunicatorConfiguration(self.config) self.assertDefaults(communicator_config) self.assertIsNone(communicator_config.api_key_id) self.assertIsNone(communicator_config.secret_api_key) self.assertIsNone(communicator_config.proxy_configuration) self.assertIsNone(communicator_config.integrator) self.assertIsNone(communicator_config.shopping_cart_extension)
def create_communicator_configuration(properties_url=PROPERTIES_URL, max_connections=False): """Convenience method to create a communicator configuration that connects to a host stored in system variables""" try: parser = ConfigParser() parser.read(properties_url) with open(properties_url) as f: parser.read_file(f) configuration = CommunicatorConfiguration( parser, api_key_id=API_KEY_ID, secret_api_key=SECRET_API_KEY, max_connections=max_connections) except IOError as e: raise RuntimeError("Unable to read configuration", e) host = os.getenv("connect.api.endpoint.host") if host is not None: scheme = os.getenv("connect.api.endpoint.scheme", "https") port = int(os.getenv("connect.api.endpoint.port", -1)) configuration.api_endpoint = "{2}://{0}:{1}".format(host, port, scheme) return configuration
def test_construct_from_properties_with_max_connection(self): """Tests if a CommunicatorConfiguration can be constructed correctly from settings that contain a different number of maximum connections """ self.config.set("ConnectSDK", "connect.api.maxConnections", "100") communicator_config = CommunicatorConfiguration(self.config) self.assertEqual("https://eu.sandbox.api-ingenico.com", communicator_config.api_endpoint.geturl()) self.assertEqual(AuthorizationType.get_authorization("v1HMAC"), communicator_config.authorization_type) self.assertEqual(20, communicator_config.connect_timeout) self.assertEqual(10, communicator_config.socket_timeout) self.assertEqual(100, communicator_config.max_connections) self.assertIsNone(communicator_config.api_key_id) self.assertIsNone(communicator_config.secret_api_key) self.assertIsNone(communicator_config.proxy_configuration)
def test_construct_from_properties_with_proxy_without_authentication(self): """Tests if a CommunicatorConfiguration can be constructed correctly from settings including a proxy""" self.config.set('ConnectSDK', "connect.api.proxy.uri", "http://proxy.example.org:3128") communicator_config = CommunicatorConfiguration(self.config) self.assertDefaults(communicator_config) self.assertIsNone(communicator_config.api_key_id) self.assertIsNone(communicator_config.secret_api_key) proxy_config = communicator_config.proxy_configuration self.assertIsNotNone(proxy_config) self.assertEqual("http", proxy_config.scheme) self.assertEqual("proxy.example.org", proxy_config.host) self.assertEqual(3128, proxy_config.port) self.assertIsNone(proxy_config.username) self.assertIsNone(proxy_config.password)
def test_connect_nonexistent_proxy(self): """Try connecting to a nonexistent proxy and assert it fails to connect to it""" configparser = ConfigParser.ConfigParser() configparser.read(init_utils.PROPERTIES_URL_PROXY) communicator_config = CommunicatorConfiguration( configparser, connect_timeout=1, socket_timeout=1, api_key_id=init_utils.API_KEY_ID, secret_api_key=init_utils.SECRET_API_KEY, proxy_configuration=ProxyConfiguration(host="localhost", port=65535, username="******", password="******")) with Factory.create_client_from_configuration( communicator_config) as client: with self.assertRaises(CommunicationException): client.merchant(MERCHANT_ID).services().testconnection()