From 4bf6903f9058c0d4140a099c1b4344fe5521d262 Mon Sep 17 00:00:00 2001 From: Kian Parvin Date: Mon, 6 Jan 2025 08:51:59 +0200 Subject: [PATCH] chore: change exported surface of jujuauth pkg --- internal/jimm/jujuauth/factory.go | 9 +++++++-- internal/jimm/jujuauth/jwtgenerator.go | 6 +++--- internal/jimm/jujuauth/jwtgenerator_test.go | 10 ++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/internal/jimm/jujuauth/factory.go b/internal/jimm/jujuauth/factory.go index 43192ea9d..3bc72e262 100644 --- a/internal/jimm/jujuauth/factory.go +++ b/internal/jimm/jujuauth/factory.go @@ -1,12 +1,16 @@ -// Copyright 2024 Canonical. +// Copyright 2025 Canonical. package jujuauth +// Factory holds the necessary components for producing new stateful +// Juju authenticator objects. Because these objects are +// stateful, it is expected that a new one is used for each connection. type Factory struct { db GeneratorDatabase jwtService JWTService accessChecker GeneratorAccessChecker } +// NewFactory returns a new factory object. func NewFactory(db GeneratorDatabase, jwtService JWTService, accessChecker GeneratorAccessChecker) *Factory { return &Factory{ db: db, @@ -15,6 +19,7 @@ func NewFactory(db GeneratorDatabase, jwtService JWTService, accessChecker Gener } } +// New returns a new Juju token generator. func (f *Factory) New() TokenGenerator { - return New(f.db, f.accessChecker, f.jwtService) + return new(f.db, f.accessChecker, f.jwtService) } diff --git a/internal/jimm/jujuauth/jwtgenerator.go b/internal/jimm/jujuauth/jwtgenerator.go index 7924d2ce8..c96a6741d 100644 --- a/internal/jimm/jujuauth/jwtgenerator.go +++ b/internal/jimm/jujuauth/jwtgenerator.go @@ -1,4 +1,4 @@ -// Copyright 2024 Canonical. +// Copyright 2025 Canonical. // Package jujuauth generates JWT tokens to // authenticate and authorize messages to Juju controllers. @@ -56,8 +56,8 @@ type TokenGenerator struct { callCount int } -// New returns a new JWTGenerator. -func New(database GeneratorDatabase, accessChecker GeneratorAccessChecker, jwtService JWTService) TokenGenerator { +// new returns a new JWTGenerator. +func new(database GeneratorDatabase, accessChecker GeneratorAccessChecker, jwtService JWTService) TokenGenerator { return TokenGenerator{ database: database, accessChecker: accessChecker, diff --git a/internal/jimm/jujuauth/jwtgenerator_test.go b/internal/jimm/jujuauth/jwtgenerator_test.go index f04519486..23c61bf4e 100644 --- a/internal/jimm/jujuauth/jwtgenerator_test.go +++ b/internal/jimm/jujuauth/jwtgenerator_test.go @@ -1,4 +1,4 @@ -// Copyright 2024 Canonical. +// Copyright 2025 Canonical. package jujuauth_test @@ -238,7 +238,8 @@ func TestJWTGeneratorMakeLoginToken(t *testing.T) { }} for _, test := range tests { - generator := jujuauth.New(test.database, test.accessChecker, test.jwtService) + authFactory := jujuauth.NewFactory(test.database, test.jwtService, test.accessChecker) + generator := authFactory.New() generator.SetTags(mt, ct) i, err := dbmodel.NewIdentity(test.username) @@ -311,7 +312,7 @@ func TestJWTGeneratorMakeToken(t *testing.T) { }} for _, test := range tests { - generator := jujuauth.New( + authFactory := jujuauth.NewFactory( &testDatabase{ ctl: dbmodel.Controller{ CloudRegions: []dbmodel.CloudRegionControllerPriority{{ @@ -323,6 +324,7 @@ func TestJWTGeneratorMakeToken(t *testing.T) { }}, }, }, + test.jwtService, &testAccessChecker{ modelAccess: map[string]string{ mt.String(): "admin", @@ -336,8 +338,8 @@ func TestJWTGeneratorMakeToken(t *testing.T) { permissions: test.checkPermissions, permissionCheckErr: test.checkPermissionsError, }, - test.jwtService, ) + generator := authFactory.New() generator.SetTags(mt, ct) i, err := dbmodel.NewIdentity("eve@canonical.com")