# features/greet.feature @greet @smoke Feature: Greet Service The greet service should return appropriate greetings @basic Scenario: Default greeting Given the server is running When I request the default greeting Then the response should be "{\"message\":\"Hello world!\"}" @basic Scenario: Personalized greeting Given the server is running When I request a greeting for "John" Then the response should be "{\"message\":\"Hello John!\"}" @v2 @api Scenario: v2 greeting with JSON POST request Given the server is running with v2 enabled When I send a POST request to v2 greet with name "John" Then the response should be "{\"message\":\"Hello my friend John!\"}" Scenario: v2 default greeting with empty name Given the server is running with v2 enabled When I send a POST request to v2 greet with name "" Then the response should be "{\"message\":\"Hello my friend!\"}" Scenario: v2 greeting with missing name field Given the server is running with v2 enabled When I send a POST request to v2 greet with invalid JSON "{}" Then the response should be "{\"message\":\"Hello my friend!\"}" Scenario: v2 greeting with name that is too long Given the server is running with v2 enabled When I send a POST request to v2 greet with name "ThisNameIsWayTooLongAndShouldFailValidationBecauseItExceedsTheMaximumAllowedLengthOf100Characters!!!!" Then the response should contain error "validation_failed" @ratelimit @skip @bdd-deferred # NOTE: Functional behavior validated by unit tests in pkg/middleware/ratelimit_test.go. # BDD scenario currently skipped: env-var-based rate limit config does not reach the # already-started test server (architectural limitation of testsetup, not the middleware). # TODO: rework testserver to allow per-scenario rate limit config (admin endpoint or # per-scenario fresh server), then re-enable this scenario. Scenario: Greet endpoint rejects requests over the rate limit Given the server is running with rate limit set to 3 requests per minute and burst 3 When I make 3 requests to "/api/v1/greet/Alice" Then all responses should have status 200 When I make 1 more request to "/api/v1/greet/Alice" Then the response should have status 429 And the response body should contain "rate_limited" And the response should have header "Retry-After"