From 73dd8373621531253c6906638091a7c79ee7aef4 Mon Sep 17 00:00:00 2001 From: CarterPerez-dev Date: Wed, 13 May 2026 13:54:33 -0400 Subject: [PATCH] feat(canary): register pdf generator in registry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fourth entry in the registry map. Cardinality bumps 3 → 4; pending list shrinks to {kubeconfig, envfile, mysql} (3 remaining). - registry.go: adds the import + token.TypePDF: pdf.New() entry - registry_test.go: - TestBuild_RegistersPDF added (mirrors RegistersDocx) - TypePDF removed from TestBuild_PendingTypesNotYetRegistered - TestBuild_OnlyExpectedTypesPresentInPhase4 renamed → InPhase5, cardinality assertion bumped 3 → 4 Pre-audit gate clean at HEAD: go build ./... + go vet ./... + go test -race -timeout=60s ./... + go test -tags=integration -race -timeout=300s ./internal/token/... ./internal/event/... + golangci-lint run ./... all pass with 0 issues. --- .../token/generators/registry/registry.go | 2 ++ .../token/generators/registry/registry_test.go | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/registry/registry.go b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/registry/registry.go index df854172..ec0ff68e 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/registry/registry.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/registry/registry.go @@ -7,6 +7,7 @@ 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/docx" + "github.com/CarterPerez-dev/cybersecurity-projects/canary-token-generator/backend/internal/token/generators/pdf" "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" ) @@ -22,5 +23,6 @@ func Build(_ Config) Registry { token.TypeWebbug: webbug.New(), token.TypeSlowRedirect: slowredirect.New(), token.TypeDocx: docx.New(), + token.TypePDF: pdf.New(), } } diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/registry/registry_test.go b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/registry/registry_test.go index d0ecdd84..190a0386 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/registry/registry_test.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/registry/registry_test.go @@ -38,6 +38,14 @@ func TestBuild_RegistersDocx(t *testing.T) { require.Equal(t, token.TypeDocx, g.Type()) } +func TestBuild_RegistersPDF(t *testing.T) { + reg := registry.Build(registry.Config{BaseURL: testBaseURL}) + g, ok := reg[token.TypePDF] + require.True(t, ok, "expected pdf generator registered") + require.NotNil(t, g) + require.Equal(t, token.TypePDF, g.Type()) +} + func TestBuild_UnknownTypeReturnsZeroValue(t *testing.T) { reg := registry.Build(registry.Config{BaseURL: testBaseURL}) g, ok := reg["nonexistent-type"] @@ -48,7 +56,6 @@ func TestBuild_UnknownTypeReturnsZeroValue(t *testing.T) { func TestBuild_PendingTypesNotYetRegistered(t *testing.T) { reg := registry.Build(registry.Config{BaseURL: testBaseURL}) pending := []token.Type{ - token.TypePDF, token.TypeKubeconfig, token.TypeEnvfile, token.TypeMySQL, @@ -64,12 +71,12 @@ func TestBuild_PendingTypesNotYetRegistered(t *testing.T) { } } -func TestBuild_OnlyExpectedTypesPresentInPhase4(t *testing.T) { +func TestBuild_OnlyExpectedTypesPresentInPhase5(t *testing.T) { reg := registry.Build(registry.Config{BaseURL: testBaseURL}) require.Len( t, reg, - 3, - "Phase 4 registers exactly three generators (webbug, slowredirect, docx); other phases append", + 4, + "Phase 5 registers exactly four generators (webbug, slowredirect, docx, pdf); other phases append", ) }