pomerium/pkg/grpc/databroker/sync_test.go
Joe Kralicky 396c35b6b4
New tracing system (#5388)
* update tracing config definitions

* new tracing system

* performance improvements

* only configure tracing in envoy if it is enabled in pomerium

* [tracing] refactor to use custom extension for trace id editing (#5420)

refactor to use custom extension for trace id editing

* set default tracing sample rate to 1.0

* fix proxy service http middleware

* improve some existing auth related traces

* test fixes

* bump envoyproxy/go-control-plane

* code cleanup

* test fixes

* Fix missing spans for well-known endpoints

* import extension apis from pomerium/envoy-custom
2025-01-21 13:26:32 -05:00

68 lines
1.8 KiB
Go

package databroker_test
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/otel/trace"
grpc "google.golang.org/grpc"
"github.com/pomerium/pomerium/internal/databroker"
"github.com/pomerium/pomerium/internal/testutil"
databrokerpb "github.com/pomerium/pomerium/pkg/grpc/databroker"
"github.com/pomerium/pomerium/pkg/grpc/session"
"github.com/pomerium/pomerium/pkg/grpc/user"
"github.com/pomerium/pomerium/pkg/protoutil"
)
func Test_SyncLatestRecords(t *testing.T) {
t.Parallel()
ctx, clearTimeout := context.WithTimeout(context.Background(), time.Minute)
defer clearTimeout()
cc := testutil.NewGRPCServer(t, func(s *grpc.Server) {
databrokerpb.RegisterDataBrokerServiceServer(s, databroker.New(ctx, trace.NewNoopTracerProvider()))
})
c := databrokerpb.NewDataBrokerServiceClient(cc)
expected := []*user.User{
{Id: "u1"},
{Id: "u2"},
{Id: "u3"},
}
for _, u := range expected {
_, err := c.Put(ctx, &databrokerpb.PutRequest{
Records: []*databrokerpb.Record{
databrokerpb.NewRecord(u),
},
})
require.NoError(t, err)
}
// add a non-user record to make sure it gets ignored
_, err := c.Put(ctx, &databrokerpb.PutRequest{
Records: []*databrokerpb.Record{
{
Id: "u4",
Type: protoutil.GetTypeURL(new(user.User)),
Data: protoutil.NewAny(&session.Session{Id: "s1"}),
},
},
})
require.NoError(t, err)
var actual []*user.User
serverVersion, latestRecordVersion, err := databrokerpb.SyncLatestRecords(context.Background(), c, func(u *user.User) {
actual = append(actual, u)
})
assert.NoError(t, err)
assert.NotZero(t, serverVersion)
assert.Equal(t, uint64(4), latestRecordVersion)
testutil.AssertProtoEqual(t, expected, actual)
}