Some checks are pending
Go Benchmark / Performance Regression Check (push) Waiting to run
Cerberus Integration / Cerberus Security Stack Integration (push) Waiting to run
Upload Coverage to Codecov / Backend Codecov Upload (push) Waiting to run
Upload Coverage to Codecov / Frontend Codecov Upload (push) Waiting to run
CodeQL - Analyze / CodeQL analysis (go) (push) Waiting to run
CodeQL - Analyze / CodeQL analysis (javascript-typescript) (push) Waiting to run
CrowdSec Integration / CrowdSec Bouncer Integration (push) Waiting to run
Docker Build, Publish & Test / build-and-push (push) Waiting to run
Docker Build, Publish & Test / Security Scan PR Image (push) Blocked by required conditions
Quality Checks / Auth Route Protection Contract (push) Waiting to run
Quality Checks / Codecov Trigger/Comment Parity Guard (push) Waiting to run
Quality Checks / Backend (Go) (push) Waiting to run
Quality Checks / Frontend (React) (push) Waiting to run
Rate Limit integration / Rate Limiting Integration (push) Waiting to run
Security Scan (PR) / Trivy Binary Scan (push) Waiting to run
Supply Chain Verification (PR) / Verify Supply Chain (push) Waiting to run
WAF integration / Coraza WAF Integration (push) Waiting to run
55 lines
1.7 KiB
Go
Executable File
55 lines
1.7 KiB
Go
Executable File
package main
|
|
|
|
import "testing"
|
|
|
|
func TestParsePluginSignatures(t *testing.T) {
|
|
t.Run("unset env returns nil", func(t *testing.T) {
|
|
t.Setenv("CHARON_PLUGIN_SIGNATURES", "")
|
|
signatures := parsePluginSignatures()
|
|
if signatures != nil {
|
|
t.Fatalf("expected nil signatures when env is unset, got: %#v", signatures)
|
|
}
|
|
})
|
|
|
|
t.Run("invalid json returns nil", func(t *testing.T) {
|
|
t.Setenv("CHARON_PLUGIN_SIGNATURES", "{invalid}")
|
|
signatures := parsePluginSignatures()
|
|
if signatures != nil {
|
|
t.Fatalf("expected nil signatures for invalid json, got: %#v", signatures)
|
|
}
|
|
})
|
|
|
|
t.Run("invalid prefix returns nil", func(t *testing.T) {
|
|
t.Setenv("CHARON_PLUGIN_SIGNATURES", `{"plugin.so":"md5:deadbeef"}`)
|
|
signatures := parsePluginSignatures()
|
|
if signatures != nil {
|
|
t.Fatalf("expected nil signatures for invalid prefix, got: %#v", signatures)
|
|
}
|
|
})
|
|
|
|
t.Run("empty allowlist returns empty map", func(t *testing.T) {
|
|
t.Setenv("CHARON_PLUGIN_SIGNATURES", `{}`)
|
|
signatures := parsePluginSignatures()
|
|
if signatures == nil {
|
|
t.Fatal("expected non-nil empty map for strict empty allowlist")
|
|
}
|
|
if len(signatures) != 0 {
|
|
t.Fatalf("expected empty map, got: %#v", signatures)
|
|
}
|
|
})
|
|
|
|
t.Run("valid allowlist returns parsed map", func(t *testing.T) {
|
|
t.Setenv("CHARON_PLUGIN_SIGNATURES", `{"plugin-a.so":"sha256:abc123","plugin-b.so":"sha256:def456"}`)
|
|
signatures := parsePluginSignatures()
|
|
if signatures == nil {
|
|
t.Fatal("expected parsed signatures map, got nil")
|
|
}
|
|
if got := signatures["plugin-a.so"]; got != "sha256:abc123" {
|
|
t.Fatalf("unexpected plugin-a signature: %q", got)
|
|
}
|
|
if got := signatures["plugin-b.so"]; got != "sha256:def456" {
|
|
t.Fatalf("unexpected plugin-b signature: %q", got)
|
|
}
|
|
})
|
|
}
|