package storage_test import ( "testing" "time" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/fieldmaskpb" "google.golang.org/protobuf/types/known/timestamppb" "github.com/pomerium/pomerium/internal/testutil" "github.com/pomerium/pomerium/pkg/grpc/databroker" "github.com/pomerium/pomerium/pkg/grpc/session" "github.com/pomerium/pomerium/pkg/storage" ) func TestPatchRecord(t *testing.T) { tm := timestamppb.New(time.Date(2023, 10, 31, 12, 0, 0, 0, time.UTC)) s1 := &session.Session{Id: "session-id"} a1, _ := anypb.New(s1) r1 := &databroker.Record{Data: a1} s2 := &session.Session{Id: "new-session-id", AccessedAt: tm} a2, _ := anypb.New(s2) r2 := &databroker.Record{Data: a2} originalR1 := proto.Clone(r1).(*databroker.Record) m, _ := fieldmaskpb.New(&session.Session{}, "accessed_at") storage.PatchRecord(r1, r2, m) testutil.AssertProtoJSONEqual(t, `{ "data": { "@type": "type.googleapis.com/session.Session", "accessedAt": "2023-10-31T12:00:00Z", "id": "session-id" } }`, r2) // The existing record should not be modified. testutil.AssertProtoEqual(t, originalR1, r1) }