You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/internal/server/repository_worker_session_i...

72 lines
1.8 KiB

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package server
import (
"context"
"testing"
"github.com/hashicorp/boundary/internal/db"
"github.com/hashicorp/boundary/internal/iam"
"github.com/hashicorp/boundary/internal/kms"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestUpsertSessionInfo(t *testing.T) {
t.Parallel()
ctx := context.Background()
conn, _ := db.TestSetup(t, "postgres")
rw := db.New(conn)
wrapper := db.TestWrapper(t)
testKms := kms.TestKms(t, conn, wrapper)
testRepo, err := NewRepository(ctx, rw, rw, testKms)
require.NoError(t, err)
iamRepo := iam.TestRepo(t, conn, wrapper)
iam.TestScopes(t, iamRepo)
tests := []struct {
name string
workerId string
expectedErrMsg string
}{
{
name: "empty worker id",
expectedErrMsg: "missing worker id",
},
{
name: "worker does not exist",
workerId: "w_dne",
expectedErrMsg: "server.(Repository).UpsertSessionInfo: failed for w_dne: db.DoTx: db.Create: wt_public_id_check constraint failed: check constraint violated: integrity violation: error #1000",
},
{
name: "success",
workerId: func() string {
return TestPkiWorker(t, conn, wrapper).PublicId
}(),
},
{
name: "upsert on conflict",
workerId: func() string {
workerId := TestPkiWorker(t, conn, wrapper).PublicId
require.NoError(t, testRepo.UpsertSessionInfo(context.Background(), workerId))
return workerId
}(),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
err := testRepo.UpsertSessionInfo(context.Background(), tt.workerId)
if tt.expectedErrMsg != "" {
require.Error(err)
assert.ErrorContains(err, tt.expectedErrMsg)
return
}
require.NoError(err)
})
}
}