From 5884f9861616346f7148edb477d669e552301ebf Mon Sep 17 00:00:00 2001 From: CarterPerez-dev Date: Wed, 13 May 2026 03:15:00 -0400 Subject: [PATCH] feat(canary): register docx generator in registry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 4 Task 4.5 — adds token.TypeDocx: docx.New() to registry.Build. Test updates: - TestBuild_RegistersDocx: new, mirrors the webbug + slowredirect registration tests - TestBuild_PendingTypesNotYetRegistered: drops TypeDocx from the pending list (4 remain: pdf, kubeconfig, envfile, mysql) - TestBuild_OnlyExpectedTypesPresentInPhase3 → TestBuild_OnlyExpectedTypesPresentInPhase4: cardinality assertion bumped from 2 to 3 --- .../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 b77e9541..df854172 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 @@ -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/docx" "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" ) @@ -20,5 +21,6 @@ func Build(_ Config) Registry { return Registry{ token.TypeWebbug: webbug.New(), token.TypeSlowRedirect: slowredirect.New(), + token.TypeDocx: docx.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 f0ddfd6c..d0ecdd84 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 @@ -30,6 +30,14 @@ func TestBuild_RegistersSlowRedirect(t *testing.T) { require.Equal(t, token.TypeSlowRedirect, g.Type()) } +func TestBuild_RegistersDocx(t *testing.T) { + reg := registry.Build(registry.Config{BaseURL: testBaseURL}) + g, ok := reg[token.TypeDocx] + require.True(t, ok, "expected docx generator registered") + require.NotNil(t, g) + require.Equal(t, token.TypeDocx, g.Type()) +} + func TestBuild_UnknownTypeReturnsZeroValue(t *testing.T) { reg := registry.Build(registry.Config{BaseURL: testBaseURL}) g, ok := reg["nonexistent-type"] @@ -40,7 +48,6 @@ func TestBuild_UnknownTypeReturnsZeroValue(t *testing.T) { func TestBuild_PendingTypesNotYetRegistered(t *testing.T) { reg := registry.Build(registry.Config{BaseURL: testBaseURL}) pending := []token.Type{ - token.TypeDocx, token.TypePDF, token.TypeKubeconfig, token.TypeEnvfile, @@ -57,12 +64,12 @@ func TestBuild_PendingTypesNotYetRegistered(t *testing.T) { } } -func TestBuild_OnlyExpectedTypesPresentInPhase3(t *testing.T) { +func TestBuild_OnlyExpectedTypesPresentInPhase4(t *testing.T) { reg := registry.Build(registry.Config{BaseURL: testBaseURL}) require.Len( t, reg, - 2, - "Phase 3 registers exactly two generators (webbug, slowredirect); other phases append", + 3, + "Phase 4 registers exactly three generators (webbug, slowredirect, docx); other phases append", ) }