@@ -111,7 +111,7 @@ func (pg *PostgresResource) nextError() (int, bool) {
111111}
112112
113113// NewOwner returns an Owner with sensible defaults for any zero-value fields.
114- func NewOwner (o client.Owner ) client.Owner {
114+ func NewOwner (o client.Owner ) * client.Owner {
115115 if o .Id == "" {
116116 o .Id = testids .RandomWorkspaceID ()
117117 }
@@ -121,7 +121,7 @@ func NewOwner(o client.Owner) client.Owner {
121121 if o .Email == "" {
122122 o .Email = "team@example.com"
123123 }
124- return o
124+ return & o
125125}
126126
127127// ProjectAttrs defines the fields callers can specify when creating a fake project.
@@ -132,29 +132,29 @@ type ProjectAttrs struct {
132132}
133133
134134// NewProject returns a Project with sensible defaults for any zero-value fields.
135- func NewProject (attrs ProjectAttrs ) client.Project {
135+ func NewProject (attrs ProjectAttrs ) * client.Project {
136136 if attrs .Id == "" {
137137 attrs .Id = testids .RandomProjectID ()
138138 }
139139 if attrs .Name == "" {
140140 attrs .Name = "My Project"
141141 }
142- return client.Project {
142+ return & client.Project {
143143 Id : attrs .Id ,
144144 Name : attrs .Name ,
145145 Owner : client.Owner {Id : attrs .OwnerId },
146146 }
147147}
148148
149149// NewEnvironment returns an Environment with sensible defaults for any zero-value fields.
150- func NewEnvironment (e client.Environment ) client.Environment {
150+ func NewEnvironment (e client.Environment ) * client.Environment {
151151 if e .Id == "" {
152152 e .Id = testids .RandomEnvironmentID ()
153153 }
154154 if e .Name == "" {
155155 e .Name = "My Environment"
156156 }
157- return e
157+ return & e
158158}
159159
160160// NewKV returns a KeyValueDetail with sensible defaults for any zero-value fields.
@@ -282,9 +282,9 @@ type Server struct {
282282 server * httptest.Server
283283 Requests []RecordedRequest
284284 CurrentUser * client.User
285- Owners * Resource [client.Owner ]
286- Projects * Resource [client.Project ]
287- Environments * Resource [client.Environment ]
285+ Owners * Resource [* client.Owner ]
286+ Projects * Resource [* client.Project ]
287+ Environments * Resource [* client.Environment ]
288288 KV * KVResource
289289 Postgres * PostgresResource
290290}
@@ -295,7 +295,7 @@ type Server struct {
295295func (s * Server ) ownerByID (id string ) (client.Owner , bool ) {
296296 for _ , o := range s .Owners .Instances {
297297 if o .Id == id {
298- return o , true
298+ return * o , true
299299 }
300300 }
301301 return client.Owner {}, false
@@ -328,9 +328,9 @@ func NewServer(t *testing.T) *Server {
328328 t .Helper ()
329329
330330 s := & Server {
331- Owners : & Resource [client.Owner ]{},
332- Projects : & Resource [client.Project ]{},
333- Environments : & Resource [client.Environment ]{},
331+ Owners : & Resource [* client.Owner ]{},
332+ Projects : & Resource [* client.Project ]{},
333+ Environments : & Resource [* client.Environment ]{},
334334 KV : & KVResource {},
335335 Postgres : & PostgresResource {},
336336 }
@@ -361,7 +361,7 @@ func NewServer(t *testing.T) *Server {
361361 record (r )
362362 result := s .Owners .Instances
363363 if name := r .URL .Query ().Get ("name" ); name != "" {
364- var filtered []client.Owner
364+ var filtered []* client.Owner
365365 for _ , o := range s .Owners .Instances {
366366 if o .Name == name {
367367 filtered = append (filtered , o )
@@ -371,8 +371,7 @@ func NewServer(t *testing.T) *Server {
371371 }
372372 wrapped := make ([]client.OwnerWithCursor , len (result ))
373373 for i := range result {
374- o := result [i ]
375- wrapped [i ] = client.OwnerWithCursor {Owner : & o }
374+ wrapped [i ] = client.OwnerWithCursor {Owner : result [i ]}
376375 }
377376 writeJSON (w , http .StatusOK , wrapped )
378377 })
@@ -395,7 +394,7 @@ func NewServer(t *testing.T) *Server {
395394 record (r )
396395 result := s .Projects .Instances
397396 if ownerIDs := queryListValues (r , "ownerId" ); len (ownerIDs ) > 0 {
398- var filtered []client.Project
397+ var filtered []* client.Project
399398 for _ , p := range result {
400399 if slices .Contains (ownerIDs , p .Owner .Id ) {
401400 filtered = append (filtered , p )
@@ -404,7 +403,7 @@ func NewServer(t *testing.T) *Server {
404403 result = filtered
405404 }
406405 if name := r .URL .Query ().Get ("name" ); name != "" {
407- var filtered []client.Project
406+ var filtered []* client.Project
408407 for _ , p := range result {
409408 if p .Name == name {
410409 filtered = append (filtered , p )
@@ -414,7 +413,8 @@ func NewServer(t *testing.T) *Server {
414413 }
415414 wrapped := make ([]client.ProjectWithCursor , len (result ))
416415 for i := range result {
417- p := result [i ]
416+ // Copy before setting Owner so the response doesn't mutate stored state.
417+ p := * result [i ]
418418 owner , ok := s .ownerByID (p .Owner .Id )
419419 if ! ok {
420420 http .Error (w , "fake server: project owner not seeded: " + p .Owner .Id , http .StatusInternalServerError )
@@ -430,8 +430,10 @@ func NewServer(t *testing.T) *Server {
430430 mux .HandleFunc ("GET /projects/{id}" , func (w http.ResponseWriter , r * http.Request ) {
431431 record (r )
432432 id := r .PathValue ("id" )
433- for _ , p := range s .Projects .Instances {
434- if p .Id == id {
433+ for _ , stored := range s .Projects .Instances {
434+ if stored .Id == id {
435+ // Copy before setting Owner so the response doesn't mutate stored state.
436+ p := * stored
435437 owner , ok := s .ownerByID (p .Owner .Id )
436438 if ! ok {
437439 http .Error (w , "fake server: project owner not seeded: " + p .Owner .Id , http .StatusInternalServerError )
@@ -450,7 +452,7 @@ func NewServer(t *testing.T) *Server {
450452 record (r )
451453 result := s .Environments .Instances
452454 if projectIDs := queryListValues (r , "projectId" ); len (projectIDs ) > 0 {
453- var filtered []client.Environment
455+ var filtered []* client.Environment
454456 for _ , e := range result {
455457 if slices .Contains (projectIDs , e .ProjectId ) {
456458 filtered = append (filtered , e )
@@ -459,7 +461,7 @@ func NewServer(t *testing.T) *Server {
459461 result = filtered
460462 }
461463 if name := r .URL .Query ().Get ("name" ); name != "" {
462- var filtered []client.Environment
464+ var filtered []* client.Environment
463465 for _ , e := range result {
464466 if e .Name == name {
465467 filtered = append (filtered , e )
@@ -469,7 +471,7 @@ func NewServer(t *testing.T) *Server {
469471 }
470472 wrapped := make ([]client.EnvironmentWithCursor , len (result ))
471473 for i := range result {
472- wrapped [i ] = client.EnvironmentWithCursor {Environment : result [i ]}
474+ wrapped [i ] = client.EnvironmentWithCursor {Environment : * result [i ]}
473475 }
474476 writeJSON (w , http .StatusOK , wrapped )
475477 })
@@ -530,7 +532,7 @@ func NewServer(t *testing.T) *Server {
530532 var owner client.Owner
531533 for _ , o := range s .Owners .Instances {
532534 if o .Id == body .OwnerId {
533- owner = o
535+ owner = * o
534536 break
535537 }
536538 }
0 commit comments