How to use _run_forward_to_fallback_url method in localstack

Best Python code snippet using localstack_python

test_lambda_whitebox.py

Source:test_lambda_whitebox.py Github

copy

Full Screen

...32 THIS_FOLDER, "functions", "python3", "lambda2", "lambda2.zip"33)34class TestLambdaFallbackUrl(unittest.TestCase):35 @staticmethod36 def _run_forward_to_fallback_url(url, fallback=True, lambda_name=None, num_requests=3):37 lambda_client = aws_stack.create_external_boto_client("lambda")38 if fallback:39 config.LAMBDA_FALLBACK_URL = url40 else:41 config.LAMBDA_FORWARD_URL = url42 try:43 result = []44 for i in range(num_requests):45 lambda_name = lambda_name or "non-existing-lambda-%s" % i46 ctx = {"env": "test"}47 tmp = lambda_client.invoke(48 FunctionName=lambda_name,49 Payload=b'{"foo":"bar"}',50 InvocationType="RequestResponse",51 ClientContext=to_str(base64.b64encode(to_bytes(json.dumps(ctx)))),52 )53 result.append(tmp)54 return result55 finally:56 if fallback:57 config.LAMBDA_FALLBACK_URL = ""58 else:59 config.LAMBDA_FORWARD_URL = ""60 def test_forward_to_fallback_url_dynamodb(self):61 db_table = "lambda-records"62 ddb_client = aws_stack.create_external_boto_client("dynamodb")63 def num_items():64 return len((run_safe(ddb_client.scan, TableName=db_table) or {"Items": []})["Items"])65 items_before = num_items()66 self._run_forward_to_fallback_url("dynamodb://%s" % db_table)67 items_after = num_items()68 self.assertEqual(items_before + 3, items_after)69 def test_forward_to_fallback_url_http(self):70 class MyUpdateListener(ProxyListener):71 def forward_request(self, method, path, data, headers):72 records.append({"data": data, "headers": headers, "method": method, "path": path})73 return lambda_result74 lambda_result = {"result": "test123"}75 local_port = get_free_tcp_port()76 proxy = start_proxy(local_port, backend_url=None, update_listener=MyUpdateListener())77 local_url = "%s://localhost:%s" % (get_service_protocol(), local_port)78 # test 1: forward to LAMBDA_FALLBACK_URL79 records = []80 self._run_forward_to_fallback_url(local_url)81 items_after = len(records)82 for record in records:83 self.assertIn("non-existing-lambda", record["headers"]["lambda-function-name"])84 self.assertEqual(3, items_after)85 # create test Lambda86 lambda_name = "test-%s" % short_uid()87 testutil.create_lambda_function(88 handler_file=TEST_LAMBDA_PYTHON,89 func_name=lambda_name,90 libs=TEST_LAMBDA_LIBS,91 )92 # test 2: forward to LAMBDA_FORWARD_URL93 records = []94 inv_results = self._run_forward_to_fallback_url(95 local_url, lambda_name=lambda_name, fallback=False96 )97 items_after = len(records)98 for record in records:99 headers = record["headers"]100 self.assertIn("/lambda/", headers["Authorization"])101 self.assertEqual("POST", record["method"])102 self.assertIn("/functions/%s/invocations" % lambda_name, record["path"])103 self.assertTrue(headers.get("X-Amz-Client-Context"))104 self.assertEqual("RequestResponse", headers.get("X-Amz-Invocation-Type"))105 self.assertEqual({"foo": "bar"}, json.loads(to_str(record["data"])))106 self.assertEqual(3, items_after)107 # assert result payload matches108 response_payload = inv_results[0]["Payload"].read()...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run localstack automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful