| 938 | } |
| 939 | |
| 940 | func User(t testing.TB, db database.Store, orig database.User) database.User { |
| 941 | loginType := takeFirst(orig.LoginType, database.LoginTypePassword) |
| 942 | email := takeFirst(orig.Email, testutil.GetRandomName(t)) |
| 943 | // A DB constraint requires login_type = 'none' and email = '' for service |
| 944 | // accounts. |
| 945 | if orig.IsServiceAccount { |
| 946 | loginType = database.LoginTypeNone |
| 947 | email = "" |
| 948 | } |
| 949 | |
| 950 | user, err := db.InsertUser(genCtx, database.InsertUserParams{ |
| 951 | ID: takeFirst(orig.ID, uuid.New()), |
| 952 | Email: email, |
| 953 | Username: takeFirst(orig.Username, testutil.GetRandomName(t)), |
| 954 | Name: takeFirst(orig.Name, testutil.GetRandomName(t)), |
| 955 | HashedPassword: takeFirstSlice(orig.HashedPassword, []byte(must(cryptorand.String(32)))), |
| 956 | CreatedAt: takeFirst(orig.CreatedAt, dbtime.Now()), |
| 957 | UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()), |
| 958 | RBACRoles: takeFirstSlice(orig.RBACRoles, []string{}), |
| 959 | LoginType: loginType, |
| 960 | Status: string(takeFirst(orig.Status, database.UserStatusDormant)), |
| 961 | IsServiceAccount: orig.IsServiceAccount, |
| 962 | }) |
| 963 | require.NoError(t, err, "insert user") |
| 964 | |
| 965 | user, err = db.UpdateUserStatus(genCtx, database.UpdateUserStatusParams{ |
| 966 | ID: user.ID, |
| 967 | Status: takeFirst(orig.Status, database.UserStatusActive), |
| 968 | UpdatedAt: dbtime.Now(), |
| 969 | UserIsSeen: false, |
| 970 | }) |
| 971 | require.NoError(t, err, "insert user") |
| 972 | |
| 973 | if !orig.LastSeenAt.IsZero() { |
| 974 | user, err = db.UpdateUserLastSeenAt(genCtx, database.UpdateUserLastSeenAtParams{ |
| 975 | ID: user.ID, |
| 976 | LastSeenAt: orig.LastSeenAt, |
| 977 | UpdatedAt: user.UpdatedAt, |
| 978 | }) |
| 979 | require.NoError(t, err, "user last seen") |
| 980 | } |
| 981 | |
| 982 | if orig.Deleted { |
| 983 | err = db.UpdateUserDeletedByID(genCtx, user.ID) |
| 984 | require.NoError(t, err, "set user as deleted") |
| 985 | } |
| 986 | return user |
| 987 | } |
| 988 | |
| 989 | func GitSSHKey(t testing.TB, db database.Store, orig database.GitSSHKey) database.GitSSHKey { |
| 990 | key, err := db.InsertGitSSHKey(genCtx, database.InsertGitSSHKeyParams{ |