This moves all of the tcp target functionality into a tcp package. It also establishes a Register function in the target package to allow specific target types to be registered at initilazation time. When registering, a target type needs to provide its Subtype, as well as some RepositoryHooks that are used by the target Repository.
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
package tcp
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/boundary/internal/db"
|
|
"github.com/hashicorp/boundary/internal/target"
|
|
"github.com/hashicorp/go-uuid"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// TestTarget is used to create a Target that can be used by tests in other packages.
|
|
func TestTarget(t *testing.T, conn *db.DB, scopeId, name string, opt ...target.Option) *Target {
|
|
t.Helper()
|
|
opt = append(opt, target.WithName(name))
|
|
opts := target.GetOpts(opt...)
|
|
require := require.New(t)
|
|
rw := db.New(conn)
|
|
tar, err := New(scopeId, opt...)
|
|
require.NoError(err)
|
|
id, err := db.NewPublicId(TargetPrefix)
|
|
require.NoError(err)
|
|
tar.PublicId = id
|
|
err = rw.Create(context.Background(), tar)
|
|
require.NoError(err)
|
|
|
|
if len(opts.WithHostSources) > 0 {
|
|
newHostSets := make([]interface{}, 0, len(opts.WithHostSources))
|
|
for _, s := range opts.WithHostSources {
|
|
hostSet, err := target.NewTargetHostSet(tar.PublicId, s)
|
|
require.NoError(err)
|
|
newHostSets = append(newHostSets, hostSet)
|
|
}
|
|
err := rw.CreateItems(context.Background(), newHostSets)
|
|
require.NoError(err)
|
|
}
|
|
if len(opts.WithCredentialSources) > 0 {
|
|
newCredLibs := make([]interface{}, 0, len(opts.WithCredentialSources))
|
|
for _, cl := range opts.WithCredentialSources {
|
|
newCl, err := target.NewCredentialLibrary(tar.PublicId, cl)
|
|
require.NoError(err)
|
|
newCredLibs = append(newCredLibs, newCl)
|
|
}
|
|
err := rw.CreateItems(context.Background(), newCredLibs)
|
|
require.NoError(err)
|
|
}
|
|
return tar
|
|
}
|
|
|
|
func testTargetName(t *testing.T, scopeId string) string {
|
|
t.Helper()
|
|
return fmt.Sprintf("%s-%s", scopeId, testId(t))
|
|
}
|
|
|
|
func testId(t *testing.T) string {
|
|
t.Helper()
|
|
id, err := uuid.GenerateUUID()
|
|
require.NoError(t, err)
|
|
return id
|
|
}
|