- New canonical fields: SuccessCodes, FailureCodes, RateLimitCodes, MetadataPaths, Body - EffectiveSuccessCodes/FailureCodes/RateLimitCodes fallback logic - Legacy ValidStatus/InvalidStatus still parse
80 lines
2.3 KiB
Go
80 lines
2.3 KiB
Go
package providers
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
type verifyWrapper struct {
|
|
Verify VerifySpec `yaml:"verify"`
|
|
}
|
|
|
|
func TestVerifySpec_NewFieldsParse(t *testing.T) {
|
|
y := `
|
|
verify:
|
|
method: POST
|
|
url: https://api.example.com/v1/models
|
|
headers:
|
|
Authorization: "Bearer {{KEY}}"
|
|
body: '{"api_key":"{{KEY}}"}'
|
|
success_codes: [200, 201]
|
|
failure_codes: [401, 403]
|
|
rate_limit_codes: [429, 529]
|
|
metadata_paths:
|
|
org: organization.name
|
|
tier: rate_limit.tier
|
|
`
|
|
var w verifyWrapper
|
|
require.NoError(t, yaml.Unmarshal([]byte(y), &w))
|
|
|
|
assert.Equal(t, "POST", w.Verify.Method)
|
|
assert.Equal(t, `{"api_key":"{{KEY}}"}`, w.Verify.Body)
|
|
assert.Equal(t, []int{200, 201}, w.Verify.SuccessCodes)
|
|
assert.Equal(t, []int{401, 403}, w.Verify.FailureCodes)
|
|
assert.Equal(t, []int{429, 529}, w.Verify.RateLimitCodes)
|
|
assert.Equal(t, "organization.name", w.Verify.MetadataPaths["org"])
|
|
assert.Equal(t, "rate_limit.tier", w.Verify.MetadataPaths["tier"])
|
|
}
|
|
|
|
func TestVerifySpec_LegacyFieldsStillWork(t *testing.T) {
|
|
y := `
|
|
verify:
|
|
method: GET
|
|
url: https://api.example.com/v1/models
|
|
valid_status: [200, 204]
|
|
invalid_status: [401, 403, 404]
|
|
`
|
|
var w verifyWrapper
|
|
require.NoError(t, yaml.Unmarshal([]byte(y), &w))
|
|
|
|
assert.Equal(t, []int{200, 204}, w.Verify.ValidStatus)
|
|
assert.Equal(t, []int{401, 403, 404}, w.Verify.InvalidStatus)
|
|
// Effective* should fall back to legacy when canonical fields are empty
|
|
assert.Equal(t, []int{200, 204}, w.Verify.EffectiveSuccessCodes())
|
|
assert.Equal(t, []int{401, 403, 404}, w.Verify.EffectiveFailureCodes())
|
|
assert.Equal(t, []int{429}, w.Verify.EffectiveRateLimitCodes())
|
|
}
|
|
|
|
func TestVerifySpec_Defaults(t *testing.T) {
|
|
var v VerifySpec
|
|
assert.Equal(t, []int{200}, v.EffectiveSuccessCodes())
|
|
assert.Equal(t, []int{401, 403}, v.EffectiveFailureCodes())
|
|
assert.Equal(t, []int{429}, v.EffectiveRateLimitCodes())
|
|
}
|
|
|
|
func TestVerifySpec_CanonicalFieldsPreferred(t *testing.T) {
|
|
v := VerifySpec{
|
|
SuccessCodes: []int{201},
|
|
FailureCodes: []int{400},
|
|
RateLimitCodes: []int{503},
|
|
ValidStatus: []int{200},
|
|
InvalidStatus: []int{401},
|
|
}
|
|
assert.Equal(t, []int{201}, v.EffectiveSuccessCodes())
|
|
assert.Equal(t, []int{400}, v.EffectiveFailureCodes())
|
|
assert.Equal(t, []int{503}, v.EffectiveRateLimitCodes())
|
|
}
|