@@ -4,6 +4,7 @@ package users_test
44
55import (
66 "context"
7+ "crypto/rand"
78 "encoding/json"
89 "os"
910 "path/filepath"
@@ -42,25 +43,29 @@ func TestImport_loadAndSkip(t *testing.T) {
4243 ctx := t .Context ()
4344 hasher := testHasher (t )
4445 v2Pool := testPool (t )
46+ stmts := v2Pool .Statements ()
47+
48+ suffix := rand .Text ()
49+ projectID := "proj_" + suffix
50+ userID := "usr_" + suffix
51+ t .Cleanup (func () { _ = stmts .DeleteProjectByID (context .Background (), projectID ) })
4552
46- dir := t .TempDir ()
47- path := filepath .Join (dir , "user.json" )
48- writeUserFile (t , path , "usr_import_1" )
53+ path := writeUserFile (t , projectID , "team_" + suffix , userID )
4954
5055 require .NoError (t , users .Import (ctx , v2Pool , hasher , "postgres" , []string {path }))
5156
52- got , err := v2Pool . Statements () .GetUser (ctx , database .And (
53- database .Equal (database .Col (domain .UserFieldProjectID ), "proj_demo" ),
54- database .Equal (database .Col (domain .UserFieldID ), "usr_import_1" ),
57+ got , err := stmts .GetUser (ctx , database .And (
58+ database .Equal (database .Col (domain .UserFieldProjectID ), projectID ),
59+ database .Equal (database .Col (domain .UserFieldID ), userID ),
5560 ), service.UserQueryOptions {
5661 AttributeKeys : []string {"username" },
5762 })
5863 require .NoError (t , err )
59- require .Equal (t , "usr_import_1" , got .ID )
64+ require .Equal (t , userID , got .ID )
6065
61- pw , err := v2Pool . Statements () .GetUserPassword (ctx , database .And (
62- database .Equal (database .Col (domain .UserPasswordFieldProjectID ), "proj_demo" ),
63- database .Equal (database .Col (domain .UserPasswordFieldUserID ), "usr_import_1" ),
66+ pw , err := stmts .GetUserPassword (ctx , database .And (
67+ database .Equal (database .Col (domain .UserPasswordFieldProjectID ), projectID ),
68+ database .Equal (database .Col (domain .UserPasswordFieldUserID ), userID ),
6469 ))
6570 require .NoError (t , err )
6671 require .NotEmpty (t , pw .EncodedHash )
@@ -76,47 +81,50 @@ func TestImport_spannerRejected(t *testing.T) {
7681
7782func TestImport_teamPlaceholderNameTaken (t * testing.T ) {
7883 ctx := t .Context ()
79- v2Pool := testV2Pool (t )
84+ v2Pool := testPool (t )
8085 stmts := v2Pool .Statements ()
8186
87+ suffix := rand .Text ()
88+ projectID := "proj_" + suffix
89+ teamID := "team_" + suffix
90+
8291 require .NoError (t , stmts .CreateProject (ctx , & domain.Project {
83- ID : "proj_123" ,
84- Name : "project-proj_123" ,
92+ ID : projectID ,
93+ Name : "project-" + projectID ,
8594 PreviewOrigins : []string {},
8695 }))
87- t .Cleanup (func () { _ = stmts .DeleteProjectByID (context .Background (), "proj_123" ) })
96+ t .Cleanup (func () { _ = stmts .DeleteProjectByID (context .Background (), projectID ) })
8897
8998 // The placeholder name is derived from the team ID, so parking it on another
9099 // team makes the insert fail on the name index instead of the primary key.
91100 require .NoError (t , stmts .CreateTeam (ctx , & domain.Team {
92- ProjectID : "proj_123" ,
93- ID : "team_456 " ,
94- Name : "team-team_123" ,
101+ ProjectID : projectID ,
102+ ID : teamID + "_other " ,
103+ Name : "team-" + teamID ,
95104 }))
96105
97- doc := validDocument ()
98- doc .Header .ProjectID = "proj_123"
99- doc .Header .TeamID = "team_123"
100- doc .Header .ID = "usr_name_123"
101- raw , err := json .Marshal (doc )
102- require .NoError (t , err )
103- path := filepath .Join (t .TempDir (), "user.json" )
104- require .NoError (t , os .WriteFile (path , raw , 0o600 ))
106+ path := writeUserFile (t , projectID , teamID , "usr_" + suffix )
105107
106108 // The import fails either way; what matters is that it names the team it
107109 // could not create, rather than a later team_memberships insert tripping
108110 // over the missing team's foreign key.
109- err = users .Import (ctx , v2Pool , testHasher (t ), "postgres" , []string {path })
111+ err : = users .Import (ctx , v2Pool , testHasher (t ), "postgres" , []string {path })
110112 require .Error (t , err )
111- require .Contains (t , err .Error (), `ensure team "team_123 "` )
113+ require .Contains (t , err .Error (), `ensure team "` + teamID + ` "` )
112114 require .Contains (t , err .Error (), "uq_teams_project_name" )
113115}
114116
115- func writeUserFile (t * testing.T , path , userID string ) {
117+ // writeUserFile writes a valid user document carrying the given IDs and returns
118+ // its path.
119+ func writeUserFile (t * testing.T , projectID , teamID , userID string ) string {
116120 t .Helper ()
117121 doc := validDocument ()
122+ doc .Header .ProjectID = projectID
123+ doc .Header .TeamID = teamID
118124 doc .Header .ID = userID
119125 raw , err := json .Marshal (doc )
120126 require .NoError (t , err )
127+ path := filepath .Join (t .TempDir (), "user.json" )
121128 require .NoError (t , os .WriteFile (path , raw , 0o600 ))
129+ return path
122130}
0 commit comments