@@ -58,10 +58,9 @@ func TestHandleListAccounts(t *testing.T) {
5858 HandleListAccounts (deps , c )
5959 require .Equal (t , http .StatusOK , w .Code )
6060
61- response , err := testutil .NewTestResponseFromReader (w .Body )
62- require .NoError (t , err )
61+ response := testutil .NewTestResponseFromRecorder (w )
6362 response .AssertOk (t )
64- require . Len ( t , response . Response . Message , 1 ) // Admin + created account
63+ response . AssertMessageIsListLength ( t , 1 ) // Admin + created account
6564 })
6665}
6766
@@ -146,11 +145,11 @@ func TestHandleCreateAccount(t *testing.T) {
146145 }, "POST" , "/api/v1/accounts" , testutil .WithBody (body ))
147146 require .Equal (t , http .StatusCreated , w .Code )
148147
149- response , err := testutil .NewTestResponseFromReader (w .Body )
150- require .NoError (t , err )
148+ response := testutil .NewTestResponseFromRecorder (w )
151149 response .AssertOk (t )
152- response .AssertMessageContains (t , "id" )
153- require .NotZero (t , response .Response .Message .(map [string ]interface {})["id" ])
150+ response .AssertMessageJSONKeyValue (t , "id" , func (t * testing.T , value any ) {
151+ require .NotZero (t , value )
152+ })
154153 })
155154}
156155
@@ -279,11 +278,11 @@ func TestHandleUpdateAccount(t *testing.T) {
279278 }, "PATCH" , "/api/v1/accounts/" + strconv .Itoa (int (account .ID )), testutil .WithBody (body ))
280279 require .Equal (t , http .StatusOK , w .Code )
281280
282- response , err := testutil .NewTestResponseFromReader (w .Body )
283- require .NoError (t , err )
281+ response := testutil .NewTestResponseFromRecorder (w )
284282 response .AssertOk (t )
285- response .AssertMessageContains (t , "owner" )
286- require .True (t , response .Response .Message .(map [string ]any )["owner" ].(bool ))
283+ response .AssertMessageJSONKeyValue (t , "owner" , func (t * testing.T , value any ) {
284+ require .True (t , value .(bool ))
285+ })
287286 })
288287
289288 t .Run ("update with empty payload" , func (t * testing.T ) {
@@ -310,8 +309,7 @@ func TestHandleUpdateAccount(t *testing.T) {
310309 require .Equal (t , http .StatusBadRequest , w .Code )
311310
312311 // Verify no changes were made
313- response , err := testutil .NewTestResponseFromReader (w .Body )
314- require .NoError (t , err )
312+ response := testutil .NewTestResponseFromRecorder (w )
315313 response .AssertNotOk (t )
316314 })
317315
@@ -332,10 +330,11 @@ func TestHandleUpdateAccount(t *testing.T) {
332330 }, "PATCH" , "/api/v1/accounts/" + strconv .Itoa (int (account .ID )), testutil .WithBody (body ))
333331 require .Equal (t , http .StatusOK , w .Code )
334332
335- response , err := testutil .NewTestResponseFromReader (w .Body )
336- require .NoError (t , err )
333+ response := testutil .NewTestResponseFromRecorder (w )
337334 response .AssertOk (t )
338- require .Equal (t , "newname" , response .Response .Message .(map [string ]any )["username" ])
335+ response .AssertMessageJSONKeyValue (t , "username" , func (t * testing.T , value any ) {
336+ require .Equal (t , "newname" , value )
337+ })
339338 })
340339
341340 t .Run ("update password only" , func (t * testing.T ) {
@@ -412,20 +411,20 @@ func TestHandleUpdateAccount(t *testing.T) {
412411 }, "PATCH" , "/api/v1/accounts/" + strconv .Itoa (int (account .ID )), testutil .WithBody (body ))
413412 require .Equal (t , http .StatusOK , w .Code )
414413
415- response , err := testutil .NewTestResponseFromReader (w .Body )
416- require .NoError (t , err )
414+ response := testutil .NewTestResponseFromRecorder (w )
417415 response .AssertOk (t )
418-
419- config := response .Response .Message .(map [string ]any )["config" ].(map [string ]any )
420- require .True (t , config ["ShowId" ].(bool ))
421- require .True (t , config ["ListMode" ].(bool ))
422- require .True (t , config ["HideThumbnail" ].(bool ))
423- require .True (t , config ["HideExcerpt" ].(bool ))
424- require .Equal (t , "dark" , config ["Theme" ])
425- require .True (t , config ["KeepMetadata" ].(bool ))
426- require .True (t , config ["UseArchive" ].(bool ))
427- require .True (t , config ["CreateEbook" ].(bool ))
428- require .True (t , config ["MakePublic" ].(bool ))
416+ response .AssertMessageJSONKeyValue (t , "config" , func (t * testing.T , value any ) {
417+ config := value .(map [string ]any )
418+ require .True (t , config ["ShowId" ].(bool ))
419+ require .True (t , config ["ListMode" ].(bool ))
420+ require .True (t , config ["HideThumbnail" ].(bool ))
421+ require .True (t , config ["HideExcerpt" ].(bool ))
422+ require .Equal (t , "dark" , config ["Theme" ])
423+ require .True (t , config ["KeepMetadata" ].(bool ))
424+ require .True (t , config ["UseArchive" ].(bool ))
425+ require .True (t , config ["CreateEbook" ].(bool ))
426+ require .True (t , config ["MakePublic" ].(bool ))
427+ })
429428 })
430429
431430 t .Run ("update all fields" , func (t * testing.T ) {
@@ -461,20 +460,22 @@ func TestHandleUpdateAccount(t *testing.T) {
461460 }, "PATCH" , "/api/v1/accounts/" + strconv .Itoa (int (account .ID )), testutil .WithBody (body ))
462461 require .Equal (t , http .StatusOK , w .Code )
463462
464- response , err := testutil .NewTestResponseFromReader (w .Body )
465- require .NoError (t , err )
463+ response := testutil .NewTestResponseFromRecorder (w )
466464 response .AssertOk (t )
467-
468- msg := response .Response .Message .(map [string ]any )
469- require .Equal (t , "updated" , msg ["username" ])
470- require .True (t , msg ["owner" ].(bool ))
471-
472- config := msg ["config" ].(map [string ]any )
473- require .True (t , config ["ShowId" ].(bool ))
474- require .True (t , config ["ListMode" ].(bool ))
475- require .True (t , config ["HideThumbnail" ].(bool ))
476- require .True (t , config ["HideExcerpt" ].(bool ))
477- require .Equal (t , "dark" , config ["Theme" ])
465+ response .AssertMessageJSONKeyValue (t , "username" , func (t * testing.T , value any ) {
466+ require .Equal (t , "updated" , value )
467+ })
468+ response .AssertMessageJSONKeyValue (t , "owner" , func (t * testing.T , value any ) {
469+ require .True (t , value .(bool ))
470+ })
471+ response .AssertMessageJSONKeyValue (t , "config" , func (t * testing.T , value any ) {
472+ config := value .(map [string ]any )
473+ require .True (t , config ["ShowId" ].(bool ))
474+ require .True (t , config ["ListMode" ].(bool ))
475+ require .True (t , config ["HideThumbnail" ].(bool ))
476+ require .True (t , config ["HideExcerpt" ].(bool ))
477+ require .Equal (t , "dark" , config ["Theme" ])
478+ })
478479
479480 // Verify password change
480481 loginBody := `{"username": "updated", "password": "newpass"}`
0 commit comments