Files
ThingsBoard/Report Generator/lambda-python3.12/tests/integration/test_api_gateway.py
2024-07-31 14:02:59 -05:00

46 lines
1.5 KiB
Python

import os
import boto3
import pytest
import requests
"""
Make sure env variable AWS_SAM_STACK_NAME exists with the name of the stack we are going to test.
"""
class TestApiGateway:
@pytest.fixture()
def api_gateway_url(self):
""" Get the API Gateway URL from Cloudformation Stack outputs """
stack_name = os.environ.get("AWS_SAM_STACK_NAME")
if stack_name is None:
raise ValueError('Please set the AWS_SAM_STACK_NAME environment variable to the name of your stack')
client = boto3.client("cloudformation")
try:
response = client.describe_stacks(StackName=stack_name)
except Exception as e:
raise Exception(
f"Cannot find stack {stack_name} \n" f'Please make sure a stack with the name "{stack_name}" exists'
) from e
stacks = response["Stacks"]
stack_outputs = stacks[0]["Outputs"]
api_outputs = [output for output in stack_outputs if output["OutputKey"] == "HelloWorldApi"]
if not api_outputs:
raise KeyError(f"HelloWorldAPI not found in stack {stack_name}")
return api_outputs[0]["OutputValue"] # Extract url from stack outputs
def test_api_gateway(self, api_gateway_url):
""" Call the API Gateway endpoint and check the response """
response = requests.get(api_gateway_url)
assert response.status_code == 200
assert response.json() == {"message": "hello world"}