The new design uses four separate service functions; List, ListPage, ListRefresh and ListRefreshPage. The first two are used during the initial pagination phase and the latter two are used for any subsequent refresh phases.
105 lines
3.5 KiB
Go
105 lines
3.5 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package target
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/hashicorp/boundary/internal/credential"
|
|
"github.com/hashicorp/boundary/internal/db"
|
|
"github.com/hashicorp/boundary/internal/target/store"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// TestNewCredentialLibrary creates a new in memory CredentialLibrary
|
|
// representing the relationship between targetId and credentialLibraryId with
|
|
// the given purpose.
|
|
func TestNewCredentialLibrary(targetId, credentialLibraryId string, purpose credential.Purpose) *CredentialLibrary {
|
|
return &CredentialLibrary{
|
|
CredentialLibrary: &store.CredentialLibrary{
|
|
TargetId: targetId,
|
|
CredentialLibraryId: credentialLibraryId,
|
|
CredentialPurpose: string(purpose),
|
|
},
|
|
}
|
|
}
|
|
|
|
// TestNewTargetAddress creates a new in memory TargetAddress
|
|
// representing the association between a Target and network address.
|
|
func TestNewTargetAddress(targetId, address string) *Address {
|
|
return &Address{
|
|
TargetAddress: &store.TargetAddress{
|
|
TargetId: targetId,
|
|
Address: address,
|
|
},
|
|
}
|
|
}
|
|
|
|
// TestNewStaticCredential creates a new in memory StaticCredential
|
|
// representing the relationship between targetId and credentialId with
|
|
// the given purpose.
|
|
func TestNewStaticCredential(targetId, credentialId string, purpose credential.Purpose) *StaticCredential {
|
|
return &StaticCredential{
|
|
StaticCredential: &store.StaticCredential{
|
|
TargetId: targetId,
|
|
CredentialId: credentialId,
|
|
CredentialPurpose: string(purpose),
|
|
},
|
|
}
|
|
}
|
|
|
|
// TestCredentialLibrary creates a CredentialLibrary for targetId and
|
|
// libraryId with the credential purpose of brokered.
|
|
func TestCredentialLibrary(t testing.TB, conn *db.DB, targetId, libraryId string) *CredentialLibrary {
|
|
t.Helper()
|
|
require := require.New(t)
|
|
rw := db.New(conn)
|
|
lib := TestNewCredentialLibrary(targetId, libraryId, credential.BrokeredPurpose)
|
|
err := rw.Create(context.Background(), lib)
|
|
require.NoError(err)
|
|
return lib
|
|
}
|
|
|
|
// TestTargetAddress creates am association for targetId and
|
|
// a given address value.
|
|
func TestTargetAddress(t testing.TB, conn *db.DB, targetId, address string) *Address {
|
|
t.Helper()
|
|
require := require.New(t)
|
|
rw := db.New(conn)
|
|
staticAddress := TestNewTargetAddress(targetId, address)
|
|
err := rw.Create(context.Background(), staticAddress)
|
|
require.NoError(err)
|
|
return staticAddress
|
|
}
|
|
|
|
// TestListTargets exposes the repo listTargets method for testing purposes.
|
|
func TestListTargets(t testing.TB, repo *Repository, ctx context.Context, opts ...Option) ([]Target, time.Time) {
|
|
targets, ttime, err := repo.listTargets(ctx, opts...)
|
|
require.NoError(t, err)
|
|
return targets, ttime
|
|
}
|
|
|
|
// TestListTargetsRefresh exposes the repo listTargetsRefresh method for testing purposes.
|
|
func TestListTargetsRefresh(t testing.TB, repo *Repository, ctx context.Context, updateAfter time.Time, opts ...Option) ([]Target, time.Time) {
|
|
targets, ttime, err := repo.listTargetsRefresh(ctx, updateAfter, opts...)
|
|
require.NoError(t, err)
|
|
return targets, ttime
|
|
}
|
|
|
|
// TestListDeletedIds exposes the repo listDeletedIds method for testing purposes.
|
|
func TestListDeletedIds(t testing.TB, repo *Repository, ctx context.Context, since time.Time) ([]string, time.Time) {
|
|
ids, ttime, err := repo.listDeletedIds(ctx, since)
|
|
require.NoError(t, err)
|
|
return ids, ttime
|
|
}
|
|
|
|
// TestEstimatedCount exposes the repo estimatedCount method for testing purposes.
|
|
func TestEstimatedCount(t testing.TB, repo *Repository, ctx context.Context) int {
|
|
n, err := repo.estimatedCount(ctx)
|
|
require.NoError(t, err)
|
|
return n
|
|
}
|