Skip to content

Syntax

Condor uses a declarative, HCL-like syntax for defining resources, tests, and configurations. This guide provides a complete reference to the syntax and supported constructs.

Resource Definitions

Resources define the endpoints, requests, or actions to be tested. They are reusable components referenced in tests.

Example: HTTP Resource

http "get_user" {
method = "get"
path = "/user/${var.id}"
headers {
Authorization = "Bearer ${var.auth_token}"
}
query {
expand = "details"
}
}

Attributes

  • method: (Required) The HTTP method (get, post, put, delete, etc.).
  • path: (Required) The endpoint path, supporting placeholders (e.g., {id}).
  • headers: (Optional) Key-value pairs for HTTP headers.
  • query: (Optional) Key-value pairs for query parameters.
  • body: (Optional) Request body, often encoded as JSON.

Test Definitions

Tests validate the behavior of resources by executing requests and asserting conditions.

Example: Basic Test

test "get_user_test" {
name = "Fetch user details"
request = http.get_user
variables {
auth_token = "your-auth-token"
id = "12345"
}
assert {
condition = resp.status == 200
error = "Expected status 200, got ${resp.status}."
}
assert {
condition = json::decode(resp.body).name != ""
error = "Expected a non-empty name in the response."
}
}

Blocks and Attributes

  • name: (Optional) Descriptive name for the test.
  • request: (Required) Reference to a defined resource.
  • variables: (Optional) Key-value pairs for dynamic inputs.
  • assert: (Required) Validates the response with conditions and optional error messages.

Assertions

  • condition: (Required) Logical expression that must evaluate to true.
  • error: (Optional) Error message displayed if the condition fails.

Environment Configurations

Environment files store configurations such as base_url and other variables.

Example: Environment File

base_url = "https://api.dev.example.com"
variables {
default_auth_token = "dev-auth-token"
}

Error Handling

When an assertion fails, Condor provides detailed error messages, including:

  • Failed condition.
  • Expected and actual values.
  • File and line number.

Example:

Error: Expected status 200, got 404.
on ./tests/get_user_test.condor line 12, in test "get_user_test":
11: assert {
12: condition = resp.status == 200
with resp.status as 404.

This syntax reference provides the foundation for writing robust Condor tests. Explore other sections for advanced usage and best practices.