mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-06-05 22:44:17 +00:00
2d1b04c637
* Multiple fixes - refresh coordinator dedup + memory pressure wire - middleware sse consolidation + timer leak + claim cache - universal cache sync backfill + isDebug gate - lazy background task race - memory monitor stw cached + refresh() api * fix(auth): suppress OIDC redirects on non-navigation requests - [x] Add isNonNavigationRequest using Sec-Fetch-Mode and Accept headers - [x] Add comprehensive TestIsNonNavigationRequest - [x] Update ServeHTTP to 401 non-navigation and AJAX requests Fixes #129 * feat(config): add custom CA and insecure skip verify for OIDC TLS - [x] Add CACertPath, CACertPEM, InsecureSkipVerify to Config - [x] Implement loadCACertPool for CA bundle loading - [x] Update HTTPClientConfig with RootCAs and InsecureSkipVerify - [x] Apply CA pool and skip verify to pooled HTTP clients - [x] Enhance configKey to distinguish TLS configs - [x] Add comprehensive ca_cert_test.go Fixes #125 * feat(oidc): add custom CA certificate support for private OIDC providers - [x] Add caCertPath, caCertPEM, insecureSkipVerify config options - [x] Update traefik.yml with new OIDC client config fields - [x] Add configuration schema descriptions for new options - [x] Update README table and add Custom CA Certificates section * Fix the documentation. * test(redis): add oversized argument rejection test - [x] Add TestRedisConn_RejectOversizedArgumentBytes - [x] Import strings package * Dependencies cleanup
30 lines
853 B
Go
30 lines
853 B
Go
package traefikoidc
|
|
|
|
import (
|
|
"regexp"
|
|
"testing"
|
|
)
|
|
|
|
// TestNewUUIDv4 verifies the in-house UUID v4 generator produces RFC 4122
|
|
// compliant identifiers. Locks in the replacement for github.com/google/uuid
|
|
// — a regression here would weaken the CSRF token used in the OIDC flow.
|
|
func TestNewUUIDv4(t *testing.T) {
|
|
rfc4122v4 := regexp.MustCompile(`^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$`)
|
|
|
|
const samples = 1000
|
|
seen := make(map[string]struct{}, samples)
|
|
for i := 0; i < samples; i++ {
|
|
got, err := newUUIDv4()
|
|
if err != nil {
|
|
t.Fatalf("newUUIDv4 failed: %v", err)
|
|
}
|
|
if !rfc4122v4.MatchString(got) {
|
|
t.Fatalf("UUID %q does not match RFC 4122 v4 format", got)
|
|
}
|
|
if _, dup := seen[got]; dup {
|
|
t.Fatalf("duplicate UUID emitted within %d samples: %q", samples, got)
|
|
}
|
|
seen[got] = struct{}{}
|
|
}
|
|
}
|