See what TestSprite’s AI generates for your APIs:TestSprite automatically generates comprehensive security tests like this one that validates API signature handling:
Expandable Sample Security Test
Copy
import hashlibimport hmacimport jsonimport pytestimport requestsimport time# Define the API URL and credentials (use environment variables for added security)api_url = "https://your-api-url.com/v1/text2music/generateMusic"api_key = "hide_for_privacy_protection"api_secret = "hide_for_privacy_protection"def create_signature(api_secret, data_to_sign): return hmac.new(api_secret.encode(), data_to_sign.encode(), hashlib.sha256).hexdigest()def test_invalid_gx_signature(): # Construct the payload payload = { "duration": 10, "text": "intense EDM", } payload_json = json.dumps(payload, separators=(",", ":")) # Create correct signature timestamp = str(int(time.time() * 1000)) data_to_sign = f"{timestamp}.{payload_json}" correct_signature = create_signature(api_secret, data_to_sign) # Tamper the payload tampered_payload = payload_json.replace("intense EDM", "soft jazz") # Use correct timestamp and an intentionally incorrect signature tampered_signature = create_signature(api_secret, f"{timestamp}.{tampered_payload}") # Create headers with tampered payload headers = { "gx-key": api_key, "gx-signature": f"t={timestamp},v={tampered_signature}", "Content-Type": "application/json", } # Send POST request with tampered payload response = requests.post(api_url, data=tampered_payload, headers=headers) # Parse the response response_data = response.json() # Assertions assert "statusCode" in response_data, "Expected 'statusCode' in the response" assert response_data["statusCode"] == 400, f"Expected statusCode 400, got {response_data['statusCode']}"test_invalid_gx_signature()
This test validates that your API properly rejects requests with invalid signatures, ensuring security integrity.