This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
name: Integration Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
integration-test:
|
||||
runs-on: generic
|
||||
container:
|
||||
image: python:3
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install pytest requests
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
pytest run_test.py
|
||||
@@ -0,0 +1,120 @@
|
||||
# Integration Test
|
||||
|
||||
An example integration test for the CleverBrag API health endpoint.
|
||||
|
||||
## Overview
|
||||
|
||||
This project contains integration tests that validate the functionality of the CleverBrag API's health endpoint. The tests ensure that the API is responding correctly and returning the expected health status.
|
||||
|
||||
## Features
|
||||
|
||||
- **Health Endpoint Testing**: Validates the `/v3/health` endpoint of the CleverBrag API
|
||||
- **Automated CI/CD**: Continuous integration using Forgejo workflows
|
||||
- **Python-based**: Uses pytest framework for testing
|
||||
- **HTTP Request Testing**: Validates API responses and status codes
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
.
|
||||
├── README.md # This file
|
||||
├── run_test.py # Main test file
|
||||
└── .forgejo/
|
||||
└── workflows/
|
||||
└── integration-test.yaml # CI/CD workflow configuration
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.x
|
||||
- pytest
|
||||
- requests
|
||||
|
||||
## Installation
|
||||
|
||||
1. Clone the repository:
|
||||
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd integration-test
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
|
||||
```bash
|
||||
pip install pytest requests
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Running Tests Locally
|
||||
|
||||
You can run the tests in several ways:
|
||||
|
||||
1. **Using pytest** (recommended):
|
||||
|
||||
```bash
|
||||
pytest run_test.py
|
||||
```
|
||||
|
||||
2. **Running directly with Python**:
|
||||
|
||||
```bash
|
||||
python run_test.py
|
||||
```
|
||||
|
||||
3. **Verbose output**:
|
||||
|
||||
```bash
|
||||
pytest run_test.py -v
|
||||
```
|
||||
|
||||
### Test Details
|
||||
|
||||
The test suite includes:
|
||||
|
||||
- **`test_health_endpoint()`**: Tests the health endpoint at `https://api.cleverbrag.epsilon.cleverthis.com/v3/health`
|
||||
- Verifies HTTP 200 status code
|
||||
- Validates JSON response structure
|
||||
- Checks that `results.message` equals "ok"
|
||||
|
||||
## CI/CD Integration
|
||||
|
||||
This project uses Forgejo for continuous integration. The workflow automatically:
|
||||
|
||||
1. Triggers on pushes to the `master` branch
|
||||
2. Sets up a Python 3 environment
|
||||
3. Installs required dependencies (`pytest` and `requests`)
|
||||
4. Runs the test suite using pytest
|
||||
|
||||
### Workflow Configuration
|
||||
|
||||
The CI/CD pipeline is defined in `.forgejo/workflows/integration-test.yaml` and runs on a generic runner with a Python 3 container.
|
||||
|
||||
## API Endpoint
|
||||
|
||||
The tests target the following endpoint:
|
||||
|
||||
- **URL**: `https://api.cleverbrag.epsilon.cleverthis.com/v3/health`
|
||||
- **Method**: GET
|
||||
- **Expected Response**:
|
||||
|
||||
```json
|
||||
{
|
||||
"results": {
|
||||
"message": "ok"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Add or modify tests as needed
|
||||
4. Ensure all tests pass locally
|
||||
5. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
This project is part of the CleverBrag API testing suite.
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
import pytest
|
||||
import requests
|
||||
|
||||
|
||||
def test_health_endpoint():
|
||||
"""
|
||||
Test the health endpoint to ensure it returns the expected response.
|
||||
|
||||
Makes an HTTP GET request to the health endpoint and validates:
|
||||
- The request is successful (status code 200)
|
||||
- The response is valid JSON
|
||||
- The response contains results.message == "ok"
|
||||
"""
|
||||
url = "https://api.cleverbrag.epsilon.cleverthis.com/v3/health"
|
||||
|
||||
# Make the HTTP request
|
||||
response = requests.get(url)
|
||||
|
||||
# Assert the request was successful
|
||||
assert (
|
||||
response.status_code == 200
|
||||
), f"Expected status code 200, got {response.status_code}"
|
||||
|
||||
# Parse the JSON response
|
||||
json_response = response.json()
|
||||
|
||||
# Validate the response structure and content
|
||||
assert "results" in json_response, "Response should contain 'results' key"
|
||||
assert (
|
||||
"message" in json_response["results"]
|
||||
), "Response results should contain 'message' key"
|
||||
assert (
|
||||
json_response["results"]["message"] == "ok"
|
||||
), f"Expected message 'ok', got '{json_response['results']['message']}'"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Allow running the test directly with python run_test.py
|
||||
test_health_endpoint()
|
||||
print("Health endpoint test passed!")
|
||||
Reference in New Issue
Block a user