User Request
Chat-app e2e tests fail with sender_id: identity not found after architecture migration. OIDC-provisioned users need identity registration.
Specification
Problem
threads v0.3.2 added identity-service validation in SendMessage — it calls identity.GetIdentityType(senderID) and returns InvalidArgument "sender_id: identity not found" if the identity doesn't exist.
users.ResolveOrCreateUser (OIDC auto-provisioning path) creates a user record but does not call identity.RegisterIdentity(). In contrast, users.CreateUser (admin endpoint) does register the identity.
All e2e test users are created via OIDC login → ResolveOrCreateUser, so they lack identity records.
Fix
Add identityClient.RegisterIdentity() to ResolveOrCreateUser when created == true, matching the existing pattern in CreateUser:
// In ResolveOrCreateUser handler, after successful user creation:
if created {
_, err = s.identityClient.RegisterIdentity(ctx, &identityv1.RegisterIdentityRequest{
IdentityId: user.Meta.ID.String(),
IdentityType: identityv1.IdentityType_IDENTITY_TYPE_USER,
})
if err != nil {
// Rollback user creation
_ = s.store.DeleteUser(ctx, user.Meta.ID)
return nil, status.Errorf(codes.Internal, "register identity: %v", err)
}
}
Files
internal/server/server.go — ResolveOrCreateUser handler (add RegisterIdentity call)
- Reference:
CreateUser handler in same file (already has the pattern)
User Request
Chat-app e2e tests fail with
sender_id: identity not foundafter architecture migration. OIDC-provisioned users need identity registration.Specification
Problem
threadsv0.3.2 added identity-service validation inSendMessage— it callsidentity.GetIdentityType(senderID)and returnsInvalidArgument "sender_id: identity not found"if the identity doesn't exist.users.ResolveOrCreateUser(OIDC auto-provisioning path) creates a user record but does not callidentity.RegisterIdentity(). In contrast,users.CreateUser(admin endpoint) does register the identity.All e2e test users are created via OIDC login →
ResolveOrCreateUser, so they lack identity records.Fix
Add
identityClient.RegisterIdentity()toResolveOrCreateUserwhencreated == true, matching the existing pattern inCreateUser:Files
internal/server/server.go—ResolveOrCreateUserhandler (addRegisterIdentitycall)CreateUserhandler in same file (already has the pattern)