test(02-05): add tier1/tier2 provider guardrail test
- TestTier1Count asserts exactly 12 Tier 1 providers loaded - TestTier2Count asserts exactly 14 Tier 2 providers loaded - TestAllPatternsCompile verifies every regex compiles under RE2 - TestAllProvidersHaveKeywords guards Aho-Corasick pre-filter - TestTier1/Tier2ProviderNames lock in expected provider names Locks Phase 2 coverage against silent regressions in Phase 3+. Addresses PROV-01, PROV-02.
This commit is contained in:
103
pkg/providers/tier12_test.go
Normal file
103
pkg/providers/tier12_test.go
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
package providers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"regexp"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
// expectedTier1 lists all 12 Tier 1 Frontier provider names (PROV-01).
|
||||||
|
var expectedTier1 = []string{
|
||||||
|
"openai", "anthropic", "google-ai", "vertex-ai", "aws-bedrock",
|
||||||
|
"azure-openai", "meta-ai", "xai", "cohere", "mistral",
|
||||||
|
"inflection", "ai21",
|
||||||
|
}
|
||||||
|
|
||||||
|
// expectedTier2 lists all 14 Tier 2 Inference Platform provider names (PROV-02).
|
||||||
|
var expectedTier2 = []string{
|
||||||
|
"groq", "replicate", "anyscale", "together", "fireworks",
|
||||||
|
"baseten", "deepinfra", "lepton", "modal", "cerebrium",
|
||||||
|
"novita", "sambanova", "octoai", "friendli",
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTier1Count(t *testing.T) {
|
||||||
|
reg, err := NewRegistry()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewRegistry failed: %v", err)
|
||||||
|
}
|
||||||
|
stats := reg.Stats()
|
||||||
|
if got := stats.ByTier[1]; got != 12 {
|
||||||
|
t.Errorf("Tier 1 count = %d, want 12", got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTier2Count(t *testing.T) {
|
||||||
|
reg, err := NewRegistry()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewRegistry failed: %v", err)
|
||||||
|
}
|
||||||
|
stats := reg.Stats()
|
||||||
|
if got := stats.ByTier[2]; got != 14 {
|
||||||
|
t.Errorf("Tier 2 count = %d, want 14", got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAllPatternsCompile(t *testing.T) {
|
||||||
|
reg, err := NewRegistry()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewRegistry failed: %v", err)
|
||||||
|
}
|
||||||
|
for _, p := range reg.List() {
|
||||||
|
for i, pat := range p.Patterns {
|
||||||
|
if _, err := regexp.Compile(pat.Regex); err != nil {
|
||||||
|
t.Errorf("provider %q pattern[%d] regex %q failed to compile: %v",
|
||||||
|
p.Name, i, pat.Regex, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAllProvidersHaveKeywords(t *testing.T) {
|
||||||
|
reg, err := NewRegistry()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewRegistry failed: %v", err)
|
||||||
|
}
|
||||||
|
for _, p := range reg.List() {
|
||||||
|
if len(p.Keywords) == 0 {
|
||||||
|
t.Errorf("provider %q has no keywords (breaks AC pre-filter)", p.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTier1ProviderNames(t *testing.T) {
|
||||||
|
reg, err := NewRegistry()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewRegistry failed: %v", err)
|
||||||
|
}
|
||||||
|
for _, name := range expectedTier1 {
|
||||||
|
p, ok := reg.Get(name)
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("Tier 1 provider %q not found in registry", name)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if p.Tier != 1 {
|
||||||
|
t.Errorf("provider %q tier = %d, want 1", name, p.Tier)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTier2ProviderNames(t *testing.T) {
|
||||||
|
reg, err := NewRegistry()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("NewRegistry failed: %v", err)
|
||||||
|
}
|
||||||
|
for _, name := range expectedTier2 {
|
||||||
|
p, ok := reg.Get(name)
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("Tier 2 provider %q not found in registry", name)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if p.Tier != 2 {
|
||||||
|
t.Errorf("provider %q tier = %d, want 2", name, p.Tier)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user