swagger part 1

This commit is contained in:
jay brown
2025-08-05 07:03:35 -07:00
parent 56fb9b4ab6
commit 3de3d0a7b3
27 changed files with 3128 additions and 92 deletions
@@ -1,6 +1,7 @@
package cognitoauth
import (
"fmt"
"strings"
"testing"
@@ -224,6 +225,47 @@ func TestValidatePermitIOConfiguration_Unit(t *testing.T) {
}
})
t.Run("SpecificErrorBranchCoverage_UnprocessableEntity", func(t *testing.T) {
// Test UnprocessableEntityError error pattern
t.Setenv("DISABLE_AUTH", "false")
t.Setenv("PERMIT_IO_API_KEY", "test-unprocessable-key")
// Use httpbin to simulate a 422 status for health check pass
t.Setenv("PERMIT_IO_PDP_URL", "https://httpbin.org/status/200")
err := ValidatePermitIOConfiguration()
// This test aims to exercise different error pattern branches
// The exact error depends on external service behavior, but we exercise the paths
assert.Error(t, err)
assert.NotEmpty(t, err.Error())
})
t.Run("SpecificErrorBranchCoverage_AuthorizedPath", func(t *testing.T) {
// Test Unauthorized error pattern
t.Setenv("DISABLE_AUTH", "false")
t.Setenv("PERMIT_IO_API_KEY", "test-unauthorized-key")
// Use httpbin to return 200 for health check, then fail on permit validation
t.Setenv("PERMIT_IO_PDP_URL", "https://httpbin.org/status/200")
err := ValidatePermitIOConfiguration()
// This should pass health check but fail on permit client validation
// with unauthorized-type error
assert.Error(t, err)
assert.NotEmpty(t, err.Error())
})
t.Run("SpecificErrorBranchCoverage_GenericError", func(t *testing.T) {
// Test the final generic error catch-all branch
t.Setenv("DISABLE_AUTH", "false")
t.Setenv("PERMIT_IO_API_KEY", "test-generic-error-key")
// Use httpbin to return 200 for health check
t.Setenv("PERMIT_IO_PDP_URL", "https://httpbin.org/status/200")
err := ValidatePermitIOConfiguration()
// This should exercise the generic error branch
assert.Error(t, err)
assert.NotEmpty(t, err.Error())
})
t.Run("ErrorPatternMatching", func(t *testing.T) {
// Test different error pattern matching by setting up scenarios
// that would trigger different error handling branches
@@ -343,6 +385,22 @@ func TestValidatePermitIOConfiguration_Unit(t *testing.T) {
assert.Contains(t, err.Error(), "PERMIT_IO_API_KEY environment variable must be set")
})
t.Run("HealthCheckSuccessButPermitClientFails", func(t *testing.T) {
// This test aims to exercise the path where health check passes
// but permit client validation fails - testing different error branches
t.Setenv("DISABLE_AUTH", "false")
t.Setenv("PERMIT_IO_API_KEY", "permit_key_12345678901234567890")
// Use httpbin.org which should return 200 for any GET request
t.Setenv("PERMIT_IO_PDP_URL", "https://httpbin.org/get")
err := ValidatePermitIOConfiguration()
// Health check should pass, but permit validation should fail
// We want to exercise the permit validation error handling branches
assert.Error(t, err)
assert.NotEmpty(t, err.Error())
// This should hit the permit client validation and one of the error branches
})
t.Run("WhitespaceHandling", func(t *testing.T) {
t.Setenv("DISABLE_AUTH", "false")
t.Setenv("PERMIT_IO_API_KEY", " ")
@@ -401,6 +459,72 @@ func TestValidatePermitIOConfiguration_Unit(t *testing.T) {
// Should get connection refused which may trigger specific error patterns
assert.NotEmpty(t, err.Error())
})
// Test the success path more comprehensively
t.Run("TrySuccessPath", func(t *testing.T) {
t.Setenv("DISABLE_AUTH", "false")
t.Setenv("PERMIT_IO_API_KEY", "permit_key_test_success_path_12345")
// Use a URL that should return 200 for health check
t.Setenv("PERMIT_IO_PDP_URL", "https://httpbin.org/status/200")
err := ValidatePermitIOConfiguration()
// The health check should pass, but permit client will likely fail
// This exercises more of the validation logic including success formatting
if err != nil {
// Most likely outcome - permit client fails but health check passed
assert.NotEmpty(t, err.Error())
} else {
// Unlikely but if it passes, we got full success path coverage
t.Log("Full validation passed - excellent coverage")
}
})
// Test different API key patterns that might affect error handling
t.Run("VariousAPIKeyFormats", func(t *testing.T) {
apiKeys := []string{
"permit_key_valid_format_12345",
"api_key_different_format_67890",
"short_key_123",
"very_long_api_key_with_many_characters_to_test_different_scenarios_12345",
}
for i, apiKey := range apiKeys {
t.Run(fmt.Sprintf("APIKey_%d", i), func(t *testing.T) {
t.Setenv("DISABLE_AUTH", "false")
t.Setenv("PERMIT_IO_API_KEY", apiKey)
// Use a reliable URL for health check
t.Setenv("PERMIT_IO_PDP_URL", "https://httpbin.org/status/200")
err := ValidatePermitIOConfiguration()
// We expect these to fail at permit validation but pass health check
// This exercises the error handling with different API key formats
assert.Error(t, err)
assert.NotEmpty(t, err.Error())
})
}
})
// Test to try to hit the success path more directly
t.Run("MockSuccessPathWithLocalServer", func(t *testing.T) {
// This test tries to create a scenario where both health check and
// permit validation could potentially succeed to exercise success branches
t.Setenv("DISABLE_AUTH", "false")
t.Setenv("PERMIT_IO_API_KEY", "permit_key_2qy49PNhMv8e8z0NOJ6yqZdrtIknWulaY442P3AaCGFOXnRnWoSHP6elOeklsMqOoRaF23kaKQ5CSlscMq4exS")
// Use a URL that returns 200 for health check
t.Setenv("PERMIT_IO_PDP_URL", "https://httpbin.org/status/200")
err := ValidatePermitIOConfiguration()
// The health check should pass, permit validation will likely fail
// but this exercises more of the success-oriented code paths
if err != nil {
// Expected - permit validation fails but health check passed
t.Logf("Expected validation failure: %v", err)
assert.NotEmpty(t, err.Error())
} else {
// If this somehow passes, we hit the full success path
t.Log("Unexpected success - full validation passed")
}
})
})
}