fix: sync system identity upsert idempotency
Sync telesrv c7c5a3d (fix(auth): make system identity upsert idempotent). Skipped telesrv docs changes per public sync rules.
This commit is contained in:
parent
004365ed48
commit
a6fe2574fe
2 changed files with 60 additions and 22 deletions
|
|
@ -5,6 +5,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
|
|
@ -208,7 +209,7 @@ func TestLoginCodeDeliveryPostgresCommitAckLossRecoversFromReceipt(t *testing.T)
|
|||
}
|
||||
}
|
||||
|
||||
func TestLoginCodeDeliveryPostgresDifferentUsersDoNotRewriteOfficialUser(t *testing.T) {
|
||||
func TestLoginCodeDeliveryPostgresDifferentUsersDoNotRewriteOfficialIdentity(t *testing.T) {
|
||||
pool := testPool(t)
|
||||
ctx := context.Background()
|
||||
firstUser := createLoginCodeDeliveryTestUser(t, ctx, pool, "official-row-first")
|
||||
|
|
@ -222,6 +223,16 @@ func TestLoginCodeDeliveryPostgresDifferentUsersDoNotRewriteOfficialUser(t *test
|
|||
if err := pool.QueryRow(ctx, `SELECT xmin::text FROM users WHERE id = $1`, domain.OfficialSystemUserID).Scan(&xminBefore); err != nil {
|
||||
t.Fatalf("load official user xmin: %v", err)
|
||||
}
|
||||
var usernameBefore, usernameXminBefore string
|
||||
if err := pool.QueryRow(ctx, `
|
||||
SELECT username_lower, xmin::text
|
||||
FROM peer_usernames
|
||||
WHERE peer_type = 'user' AND peer_id = $1`, domain.OfficialSystemUserID).Scan(&usernameBefore, &usernameXminBefore); err != nil {
|
||||
t.Fatalf("load official username identity: %v", err)
|
||||
}
|
||||
if want := strings.ToLower(domain.OfficialSystemUser().Username); usernameBefore != want {
|
||||
t.Fatalf("official username = %q, want %q", usernameBefore, want)
|
||||
}
|
||||
|
||||
const workers = 12
|
||||
users := make([]domain.User, workers)
|
||||
|
|
@ -256,6 +267,16 @@ func TestLoginCodeDeliveryPostgresDifferentUsersDoNotRewriteOfficialUser(t *test
|
|||
if xminAfter != xminBefore {
|
||||
t.Fatalf("official system user row was rewritten: xmin %s -> %s", xminBefore, xminAfter)
|
||||
}
|
||||
var usernameAfter, usernameXminAfter string
|
||||
if err := pool.QueryRow(ctx, `
|
||||
SELECT username_lower, xmin::text
|
||||
FROM peer_usernames
|
||||
WHERE peer_type = 'user' AND peer_id = $1`, domain.OfficialSystemUserID).Scan(&usernameAfter, &usernameXminAfter); err != nil {
|
||||
t.Fatalf("reload official username identity: %v", err)
|
||||
}
|
||||
if usernameAfter != usernameBefore || usernameXminAfter != usernameXminBefore {
|
||||
t.Fatalf("official username identity was rewritten: %q/%s -> %q/%s", usernameBefore, usernameXminBefore, usernameAfter, usernameXminAfter)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoginCodeDeliveryPostgresReceiptRetentionIsBoundedAndSeekOrdered(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue