feat(canary): register slowredirect generator in registry

Phase 3 wiring: registry.Build now maps token.TypeSlowRedirect to
slowredirect.New() alongside the existing webbug entry. The pending-
types regression guard sheds SlowRedirect from its list (5 remain:
docx, pdf, kubeconfig, envfile, mysql) and the cardinality assertion
moves from "exactly one generator" to "exactly two".
This commit is contained in:
CarterPerez-dev 2026-05-12 06:34:12 -04:00
parent 6dd520f966
commit be13d2f1c4
2 changed files with 14 additions and 5 deletions

View File

@ -6,6 +6,7 @@ package registry
import (
"github.com/CarterPerez-dev/cybersecurity-projects/canary-token-generator/backend/internal/token"
"github.com/CarterPerez-dev/cybersecurity-projects/canary-token-generator/backend/internal/token/generators"
"github.com/CarterPerez-dev/cybersecurity-projects/canary-token-generator/backend/internal/token/generators/slowredirect"
"github.com/CarterPerez-dev/cybersecurity-projects/canary-token-generator/backend/internal/token/generators/webbug"
)
@ -17,6 +18,7 @@ type Registry map[token.Type]generators.Generator
func Build(_ Config) Registry {
return Registry{
token.TypeWebbug: webbug.New(),
token.TypeWebbug: webbug.New(),
token.TypeSlowRedirect: slowredirect.New(),
}
}

View File

@ -22,6 +22,14 @@ func TestBuild_RegistersWebbug(t *testing.T) {
require.Equal(t, token.TypeWebbug, g.Type())
}
func TestBuild_RegistersSlowRedirect(t *testing.T) {
reg := registry.Build(registry.Config{BaseURL: testBaseURL})
g, ok := reg[token.TypeSlowRedirect]
require.True(t, ok, "expected slowredirect generator registered")
require.NotNil(t, g)
require.Equal(t, token.TypeSlowRedirect, g.Type())
}
func TestBuild_UnknownTypeReturnsZeroValue(t *testing.T) {
reg := registry.Build(registry.Config{BaseURL: testBaseURL})
g, ok := reg["nonexistent-type"]
@ -32,7 +40,6 @@ func TestBuild_UnknownTypeReturnsZeroValue(t *testing.T) {
func TestBuild_PendingTypesNotYetRegistered(t *testing.T) {
reg := registry.Build(registry.Config{BaseURL: testBaseURL})
pending := []token.Type{
token.TypeSlowRedirect,
token.TypeDocx,
token.TypePDF,
token.TypeKubeconfig,
@ -50,12 +57,12 @@ func TestBuild_PendingTypesNotYetRegistered(t *testing.T) {
}
}
func TestBuild_OnlyExpectedTypesPresentInPhase2(t *testing.T) {
func TestBuild_OnlyExpectedTypesPresentInPhase3(t *testing.T) {
reg := registry.Build(registry.Config{BaseURL: testBaseURL})
require.Len(
t,
reg,
1,
"Phase 2 registers exactly one generator (webbug); other phases append",
2,
"Phase 3 registers exactly two generators (webbug, slowredirect); other phases append",
)
}