def test_default_values(self): config = Configuration() self.assertEqual(config.api_secret, None) self.assertEqual(config.host, 'api.castle.io') self.assertEqual(config.port, 443) self.assertEqual(config.url_prefix, '/v1') self.assertEqual(config.whitelisted, [HeadersFormatter.call(v) for v in WHITELISTED]) self.assertEqual(config.blacklisted, [HeadersFormatter.call(v) for v in BLACKLISTED]) self.assertEqual(config.request_timeout, 500) self.assertEqual(config.failover_strategy, 'allow')
def call(self): result = dict() for header_name, value in self.environ.items(): if not re.match(VALUABLE_HEADERS, header_name, flags=re.X | re.I): continue formatted_name = HeadersFormatter.call(header_name) result[formatted_name] = value return result
def blacklisted(self, value): if value: self.__blacklisted = [HeadersFormatter.call(v) for v in value] else: self.__blacklisted = []
def whitelisted(self, value): if value: self.__whitelisted = [HeadersFormatter.call(v) for v in value] else: self.__whitelisted = []
def ip_headers(self, value): if isinstance(value, list): self.__ip_headers = [HeadersFormatter.call(v) for v in value] else: raise ConfigurationError
def test_call_removes_http_and_capitalizes(self): self.assertEqual(HeadersFormatter.call('HTTP_X_TEST'), 'X-Test')
def test_without_http(self): self.assertEqual(HeadersFormatter.call('X_TEST'), 'X-Test')
def test_does_not_remove_http_if_there_is_no_divider(self): self.assertEqual(HeadersFormatter.call('httpX_teST'), 'Httpx-Test')
def test_mixed_dividers(self): self.assertEqual(HeadersFormatter.call('http-X_teST'), 'X-Test')