refact(target): Add context to RepositoryFactory constructor

`errors.New` requires a context, so I've made that available from the
Controller, and updated all `NewDeprecated` functions to `New` while
I was at it
This commit is contained in:
Hugo Vieira authored and Timothy Messier committed 2022-09-07 17:53:40 +00:00
1 parent bf263fbd7d
commit bf1486f75e
16 files changed
+51 -46

No files matched your search

+1 -1
View File
@@ -478,7 +478,7 @@ func (b *Server) CreateInitialTarget(ctx context.Context) (target.Target, error)
}
}()
targetRepo, err := target.NewRepository(rw, rw, kmsCache)
targetRepo, err := target.NewRepository(ctx, rw, rw, kmsCache)
if err != nil {
return nil, fmt.Errorf("error creating target repository: %w", err)
}
+1 -1
View File
@@ -334,7 +334,7 @@ func New(ctx context.Context, conf *Config) (*Controller, error) {
return password.NewRepository(dbase, dbase, c.kms)
}
c.TargetRepoFn = func(o ...target.Option) (*target.Repository, error) {
return target.NewRepository(dbase, dbase, c.kms, o...)
return target.NewRepository(ctx, dbase, dbase, c.kms, o...)
}
c.SessionRepoFn = func(opt ...session.Option) (*session.Repository, error) {
return session.NewRepository(ctx, dbase, dbase, c.kms, opt...)
@@ -77,7 +77,7 @@ func testService(t *testing.T, ctx context.Context, conn *db.DB, kms *kms.Kms, w
rw := db.New(conn)
sche := scheduler.TestScheduler(t, conn, wrapper)
repoFn := func(o ...target.Option) (*target.Repository, error) {
return target.NewRepository(rw, rw, kms, o...)
return target.NewRepository(ctx, rw, rw, kms, o...)
}
iamRepoFn := func() (*iam.Repository, error) {
return iam.TestRepo(t, conn, wrapper), nil
@@ -710,8 +710,9 @@ func TestUpdate(t *testing.T) {
_ = iam.TestUserRole(t, conn, r.GetPublicId(), at.GetIamUserId())
_ = iam.TestRoleGrant(t, conn, r.GetPublicId(), "id=*;type=*;actions=*")
ctx := context.Background()
repoFn := func(o ...target.Option) (*target.Repository, error) {
return target.NewRepository(rw, rw, kms)
return target.NewRepository(ctx, rw, rw, kms)
}
repo, err := repoFn()
require.NoError(t, err, "Couldn't create new target repo.")
@@ -729,7 +730,6 @@ func TestUpdate(t *testing.T) {
{Id: hs[1].GetPublicId(), HostCatalogId: hs[1].GetCatalogId()},
}
ctx := context.Background()
ttar, err := target.New(ctx, tcp.Subtype, proj.GetPublicId(),
target.WithName("default"),
target.WithDescription("default"),
@@ -1134,13 +1134,13 @@ func TestUpdate_BadVersion(t *testing.T) {
_ = iam.TestUserRole(t, conn, r.GetPublicId(), at.GetIamUserId())
_ = iam.TestRoleGrant(t, conn, r.GetPublicId(), "id=*;type=*;actions=*")
ctx := context.Background()
repoFn := func(o ...target.Option) (*target.Repository, error) {
return target.NewRepository(rw, rw, kms)
return target.NewRepository(ctx, rw, rw, kms)
}
repo, err := repoFn()
require.NoError(t, err, "Couldn't create new target repo.")
ctx := context.Background()
ttar, err := target.New(ctx, tcp.Subtype, proj.GetPublicId(), target.WithName("default"), target.WithDescription("default"))
tar := ttar.(*tcp.Target)
tar.DefaultPort = 2
@@ -2740,7 +2740,7 @@ func TestAuthorizeSession(t *testing.T) {
require.NoError(t, err)
repoFn := func(o ...target.Option) (*target.Repository, error) {
return target.NewRepository(rw, rw, kms)
return target.NewRepository(ctx, rw, rw, kms)
}
iamRepo := iam.TestRepo(t, conn, wrapper)
iamRepoFn := func() (*iam.Repository, error) {
@@ -3000,7 +3000,7 @@ func TestAuthorizeSessionTypedCredentials(t *testing.T) {
require.NoError(t, err)
repoFn := func(o ...target.Option) (*target.Repository, error) {
return target.NewRepository(rw, rw, kms)
return target.NewRepository(ctx, rw, rw, kms)
}
iamRepo := iam.TestRepo(t, conn, wrapper)
iamRepoFn := func() (*iam.Repository, error) {
@@ -3579,7 +3579,7 @@ func TestAuthorizeSession_Errors(t *testing.T) {
require.NoError(t, err)
repoFn := func(o ...target.Option) (*target.Repository, error) {
return target.NewRepository(rw, rw, kms)
return target.NewRepository(ctx, rw, rw, kms)
}
iamRepo := iam.TestRepo(t, conn, wrapper)
iamRepoFn := func() (*iam.Repository, error) {
+3 -3
View File
@@ -963,7 +963,7 @@ func TestRepository_CancelSession(t *testing.T) {
// is terminated when the one connection is closed.
tcpTarget := tcp.TestTarget(ctx, t, conn, proj.PublicId, "test target", target.WithSessionConnectionLimit(1))
targetRepo, err := target.NewRepository(rw, rw, testKms)
targetRepo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
_, _, _, err = targetRepo.AddTargetHostSources(ctx, tcpTarget.GetPublicId(), tcpTarget.GetVersion(), []string{sets[0].PublicId})
require.NoError(t, err)
@@ -1491,7 +1491,7 @@ func testSessionCredentialParams(t *testing.T, conn *db.DB, wrapper wrapping.Wra
ctx := context.Background()
kms := kms.TestKms(t, conn, wrapper)
targetRepo, err := target.NewRepository(rw, rw, kms)
targetRepo, err := target.NewRepository(ctx, rw, rw, kms)
require.NoError(err)
tar, _, _, err := targetRepo.LookupTarget(ctx, params.TargetId)
require.NoError(err)
@@ -1530,7 +1530,7 @@ func TestRepository_deleteTargetFKey(t *testing.T) {
kms := kms.TestKms(t, conn, wrapper)
ctx := context.Background()
repo, err := NewRepository(ctx, rw, rw, kms)
targetRepo, err := target.NewRepository(rw, rw, kms)
targetRepo, err := target.NewRepository(ctx, rw, rw, kms)
require.NoError(t, err)
tests := []struct {
@@ -90,7 +90,7 @@ func TestService_AuthorizeConnection(t *testing.T) {
// is terminated when the one connection is closed.
tcpTarget := tcp.TestTarget(ctx, t, conn, proj.PublicId, "test target", target.WithSessionConnectionLimit(1))
targetRepo, err := target.NewRepository(rw, rw, testKms)
targetRepo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
_, _, _, err = targetRepo.AddTargetHostSources(ctx, tcpTarget.GetPublicId(), tcpTarget.GetVersion(), []string{sets[0].PublicId})
require.NoError(t, err)
@@ -51,7 +51,7 @@ func TestServiceCloseConnections(t *testing.T) {
// is terminated when the one connection is closed.
tcpTarget := tcp.TestTarget(ctx, t, conn, proj.PublicId, "test target", target.WithSessionConnectionLimit(1))
targetRepo, err := target.NewRepository(rw, rw, testKms)
targetRepo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
_, _, _, err = targetRepo.AddTargetHostSources(ctx, tcpTarget.GetPublicId(), tcpTarget.GetVersion(), []string{sets[0].PublicId})
require.NoError(t, err)
+1 -1
View File
@@ -144,7 +144,7 @@ func TestSessionParams(t testing.TB, conn *db.DB, wrapper wrapping.Wrapper, iamR
tcpTarget := tcp.TestTarget(ctx, t, conn, proj.PublicId, "test target")
kms := kms.TestKms(t, conn, wrapper)
targetRepo, err := target.NewRepository(rw, rw, kms)
targetRepo, err := target.NewRepository(ctx, rw, rw, kms)
require.NoError(err)
_, _, _, err = targetRepo.AddTargetHostSources(ctx, tcpTarget.GetPublicId(), tcpTarget.GetVersion(), []string{sets[0].PublicId})
require.NoError(err)
+5 -5
View File
@@ -48,16 +48,16 @@ type Repository struct {
// - WithLimit: sets a limit on the number of results returned by various repo operations.
// - WithPermissions: defines the permissions the user has to perform different
// actions and access resources within the created repo object.
func NewRepository(r db.Reader, w db.Writer, kms *kms.Kms, opt ...Option) (*Repository, error) {
func NewRepository(ctx context.Context, r db.Reader, w db.Writer, kms *kms.Kms, opt ...Option) (*Repository, error) {
const op = "target.NewRepository"
if r == nil {
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "nil reader")
return nil, errors.New(ctx, errors.InvalidParameter, op, "nil reader")
}
if w == nil {
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "nil writer")
return nil, errors.New(ctx, errors.InvalidParameter, op, "nil writer")
}
if kms == nil {
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "nil kms")
return nil, errors.New(ctx, errors.InvalidParameter, op, "nil kms")
}
opts := GetOpts(opt...)
@@ -68,7 +68,7 @@ func NewRepository(r db.Reader, w db.Writer, kms *kms.Kms, opt ...Option) (*Repo
for _, p := range opts.WithPermissions {
if p.Resource != resource.Target {
return nil, errors.New(context.Background(), errors.InvalidParameter, op, "permission for incorrect resource found")
return nil, errors.New(ctx, errors.InvalidParameter, op, "permission for incorrect resource found")
}
}
@@ -48,7 +48,7 @@ func TestRepository_SetTargetCredentialSources(t *testing.T) {
rw := db.New(conn)
wrapper := db.TestWrapper(t)
testKms := kms.TestKms(t, conn, wrapper)
repo, err := target.NewRepository(rw, rw, testKms)
repo, err := target.NewRepository(context.Background(), rw, rw, testKms)
require.NoError(t, err)
iamRepo := iam.TestRepo(t, conn, wrapper)
+2 -1
View File
@@ -1,6 +1,7 @@
package target
import (
"context"
"database/sql"
"testing"
@@ -126,7 +127,7 @@ func TestNewRepository(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
got, err := NewRepository(tt.args.r, tt.args.w, tt.args.kms, tt.args.opts...)
got, err := NewRepository(context.Background(), tt.args.r, tt.args.w, tt.args.kms, tt.args.opts...)
if tt.wantErr {
require.Error(err)
assert.Equal(tt.wantErrString, err.Error())
+3 -2
View File
@@ -158,14 +158,15 @@ func TestTargetHostSet_ImmutableFields(t *testing.T) {
conn, _ := db.TestSetup(t, "postgres")
wrapper := db.TestWrapper(t)
testKms := kms.TestKms(t, conn, wrapper)
ctx := context.Background()
rw := db.New(conn)
repo, err := target.NewRepository(rw, rw, testKms)
repo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
ts := timestamp.Timestamp{Timestamp: &timestamppb.Timestamp{Seconds: 0, Nanos: 0}}
_, proj := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper))
ctx := context.Background()
projTarget := tcp.TestTarget(ctx, t, conn, proj.PublicId, tcp.TestId(t))
testCats := static.TestCatalogs(t, conn, proj.PublicId, 1)
hsets := static.TestSets(t, conn, testCats[0].GetPublicId(), 2)
@@ -29,7 +29,7 @@ func TestRepository_AddTargetCredentialSources(t *testing.T) {
testKms := kms.TestKms(t, conn, wrapper)
iamRepo := iam.TestRepo(t, conn, wrapper)
_, staticProj := iam.TestScopes(t, iamRepo)
repo, err := target.NewRepository(rw, rw, testKms)
repo, err := target.NewRepository(context.Background(), rw, rw, testKms)
require.NoError(t, err)
csVault := vault.TestCredentialStores(t, conn, wrapper, staticProj.GetPublicId(), 1)[0]
@@ -336,7 +336,7 @@ func TestRepository_DeleteTargetCredentialSources(t *testing.T) {
testKms := kms.TestKms(t, conn, wrapper)
iamRepo := iam.TestRepo(t, conn, wrapper)
_, proj := iam.TestScopes(t, iamRepo)
repo, err := target.NewRepository(rw, rw, testKms)
repo, err := target.NewRepository(context.Background(), rw, rw, testKms)
require.NoError(t, err)
type args struct {
@@ -563,7 +563,7 @@ func TestRepository_SetTargetCredentialSources(t *testing.T) {
rw := db.New(conn)
wrapper := db.TestWrapper(t)
testKms := kms.TestKms(t, conn, wrapper)
repo, err := target.NewRepository(rw, rw, testKms)
repo, err := target.NewRepository(context.Background(), rw, rw, testKms)
require.NoError(t, err)
iamRepo := iam.TestRepo(t, conn, wrapper)
@@ -34,7 +34,7 @@ func TestRepository_AddTargetHostSets(t *testing.T) {
testKms := kms.TestKms(t, conn, wrapper)
iamRepo := iam.TestRepo(t, conn, wrapper)
_, staticProj := iam.TestScopes(t, iamRepo)
repo, err := target.NewRepository(rw, rw, testKms)
repo, err := target.NewRepository(context.Background(), rw, rw, testKms)
require.NoError(t, err)
createHostSetsFn := func(projects []string) []string {
@@ -199,10 +199,10 @@ func TestRepository_DeleteTargetHosts(t *testing.T) {
testKms := kms.TestKms(t, conn, wrapper)
iamRepo := iam.TestRepo(t, conn, wrapper)
_, proj := iam.TestScopes(t, iamRepo)
repo, err := target.NewRepository(rw, rw, testKms)
require.NoError(t, err)
ctx := context.Background()
repo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
type args struct {
target target.Target
@@ -404,7 +404,9 @@ func TestRepository_SetTargetHostSets(t *testing.T) {
rw := db.New(conn)
wrapper := db.TestWrapper(t)
testKms := kms.TestKms(t, conn, wrapper)
repo, err := target.NewRepository(rw, rw, testKms)
ctx := context.Background()
repo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
iamRepo := iam.TestRepo(t, conn, wrapper)
@@ -427,8 +429,6 @@ func TestRepository_SetTargetHostSets(t *testing.T) {
return results
}
ctx := context.Background()
setupFn := func(target target.Target) []target.HostSource {
hs := createHostSetsFn()
_, created, _, err := repo.AddTargetHostSources(context.Background(), target.GetPublicId(), 1, hs)
@@ -28,7 +28,9 @@ func TestRepository_CreateTarget(t *testing.T) {
rw := db.New(conn)
wrapper := db.TestWrapper(t)
testKms := kms.TestKms(t, conn, wrapper)
repo, err := target.NewRepository(rw, rw, testKms)
ctx := context.Background()
repo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
_, proj := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper))
@@ -38,8 +40,6 @@ func TestRepository_CreateTarget(t *testing.T) {
cs := vault.TestCredentialStores(t, conn, wrapper, proj.GetPublicId(), 1)[0]
vault.TestCredentialLibraries(t, conn, wrapper, cs.GetPublicId(), 2)
ctx := context.Background()
type args struct {
target target.Target
opt []target.Option
@@ -165,7 +165,7 @@ func TestRepository_UpdateTcpTarget(t *testing.T) {
wrapper := db.TestWrapper(t)
testKms := kms.TestKms(t, conn, wrapper)
repo, err := target.NewRepository(rw, rw, testKms)
repo, err := target.NewRepository(context.Background(), rw, rw, testKms)
require.NoError(t, err)
id := tcp.TestId(t)
+5 -4
View File
@@ -32,7 +32,7 @@ func TestRepository_LookupTarget(t *testing.T) {
_, _, err := iamRepo.UpdateScope(ctx, proj, 1, []string{"name"})
require.NoError(t, err)
rw := db.New(conn)
repo, err := target.NewRepository(rw, rw, testKms)
repo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
tgt := tcp.TestTarget(ctx, t, conn, proj.PublicId, "target-name")
@@ -160,7 +160,7 @@ func TestRepository_ListRoles_Multiple_Scopes(t *testing.T) {
}
rw := db.New(conn)
repo, err := target.NewRepository(rw, rw, testKms,
repo, err := target.NewRepository(ctx, rw, rw, testKms,
target.WithPermissions([]perms.Permission{
{
ScopeId: proj1.PublicId,
@@ -191,10 +191,11 @@ func TestRepository_DeleteTarget(t *testing.T) {
testKms := kms.TestKms(t, conn, wrapper)
iamRepo := iam.TestRepo(t, conn, wrapper)
_, proj := iam.TestScopes(t, iamRepo)
repo, err := target.NewRepository(rw, rw, testKms)
require.NoError(t, err)
ctx := context.Background()
repo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
type args struct {
target target.Target
opt []target.Option
+6 -4
View File
@@ -23,9 +23,10 @@ func Test_TestTcpTarget(t *testing.T) {
testKms := kms.TestKms(t, conn, wrapper)
iamRepo := iam.TestRepo(t, conn, wrapper)
_, proj := iam.TestScopes(t, iamRepo)
repo, err := target.NewRepository(rw, rw, testKms)
require.NoError(err)
ctx := context.Background()
repo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(err)
cats := static.TestCatalogs(t, conn, proj.PublicId, 1)
hsets := static.TestSets(t, conn, cats[0].GetPublicId(), 2)
@@ -56,9 +57,10 @@ func Test_TestCredentialLibrary(t *testing.T) {
testKms := kms.TestKms(t, conn, wrapper)
iamRepo := iam.TestRepo(t, conn, wrapper)
_, proj := iam.TestScopes(t, iamRepo)
repo, err := target.NewRepository(rw, rw, testKms)
require.NoError(err)
ctx := context.Background()
repo, err := target.NewRepository(ctx, rw, rw, testKms)
require.NoError(err)
tar := tcp.TestTarget(ctx, t, conn, proj.PublicId, t.Name())
store := vault.TestCredentialStores(t, conn, wrapper, proj.GetPublicId(), 1)[0]