WIP: Add tests for http functions

This commit is contained in:
Peter Stockings
2025-12-03 21:12:35 +11:00
parent c5eb1ce463
commit 049c875bc2
14 changed files with 979 additions and 69 deletions

57
db.py
View File

@@ -640,3 +640,60 @@ ORDER BY invocation_time DESC""", [http_function_id])
[user_id],
commit=True
)
# Function Testing Methods
def create_function_test(self, http_function_id, name, description, request_method, request_headers, request_body, expected_status, expected_output, assertions=None):
"""Create a new test case for a function"""
test = self.execute(
'''INSERT INTO http_function_tests
(http_function_id, name, description, request_method, request_headers, request_body, expected_status, expected_output, assertions)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)
RETURNING id, http_function_id, name, description, request_method, request_headers, request_body, expected_status, expected_output, assertions, created_at, updated_at''',
[http_function_id, name, description, request_method, json.dumps(request_headers), json.dumps(request_body), expected_status, json.dumps(expected_output) if expected_output else None, json.dumps(assertions) if assertions else '[]'],
commit=True,
one=True
)
return test
def get_function_tests(self, http_function_id):
"""Get all test cases for a function"""
tests = self.execute(
'''SELECT id, http_function_id, name, description, request_method, request_headers, request_body, expected_status, expected_output, assertions, created_at, updated_at
FROM http_function_tests
WHERE http_function_id = %s
ORDER BY created_at DESC''',
[http_function_id]
)
return tests if tests else []
def get_function_test(self, test_id):
"""Get a single test case"""
test = self.execute(
'''SELECT id, http_function_id, name, description, request_method, request_headers, request_body, expected_status, expected_output, assertions, created_at, updated_at
FROM http_function_tests
WHERE id = %s''',
[test_id],
one=True
)
return test
def update_function_test(self, test_id, name, description, request_method, request_headers, request_body, expected_status, expected_output, assertions=None):
"""Update an existing test case"""
test = self.execute(
'''UPDATE http_function_tests
SET name = %s, description = %s, request_method = %s, request_headers = %s, request_body = %s, expected_status = %s, expected_output = %s, assertions = %s, updated_at = NOW()
WHERE id = %s
RETURNING id, http_function_id, name, description, request_method, request_headers, request_body, expected_status, expected_output, assertions, created_at, updated_at''',
[name, description, request_method, json.dumps(request_headers), json.dumps(request_body), expected_status, json.dumps(expected_output) if expected_output else None, json.dumps(assertions) if assertions else '[]', test_id],
commit=True,
one=True
)
return test
def delete_function_test(self, test_id):
"""Delete a test case"""
self.execute(
'DELETE FROM http_function_tests WHERE id = %s',
[test_id],
commit=True
)