2023-03-12 16:00:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// GoToSocial  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) GoToSocial Authors admin@gotosocial.org  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// SPDX-License-Identifier: AGPL-3.0-or-later  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This program is free software: you can redistribute it and/or modify  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// it under the terms of the GNU Affero General Public License as published by  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// the Free Software Foundation, either version 3 of the License, or  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// (at your option) any later version.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This program is distributed in the hope that it will be useful,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// but WITHOUT ANY WARRANTY; without even the implied warranty of  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// GNU Affero General Public License for more details.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You should have received a copy of the GNU Affero General Public License  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// along with this program.  If not, see <http://www.gnu.org/licenses/>.  
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								package  users_test  
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
									
										
										
										
											2023-01-13 17:02:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"bytes" 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"context" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"encoding/json" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"io/ioutil" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http/httptest" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"testing" 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-08 14:32:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"time" 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/gin-gonic/gin" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/stretchr/testify/suite" 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-13 17:29:43 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/activity/streams" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/activity/streams/vocab" 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/api/activitypub/users" 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/testrig" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  OutboxGetTestSuite  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									UserStandardTestSuite 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * OutboxGetTestSuite )  TestGetOutbox ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// the dereference we're gonna use 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									derefRequests  :=  testrig . NewTestDereferenceRequests ( suite . testAccounts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									signedRequest  :=  derefRequests [ "foss_satan_dereference_zork_outbox" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									targetAccount  :=  suite . testAccounts [ "local_account_1" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// setup request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recorder  :=  httptest . NewRecorder ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 08:32:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx ,  _  :=  testrig . CreateGinTestContext ( recorder ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodGet ,  targetAccount . OutboxURI ,  nil )  // the endpoint we're hitting 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-11 17:50:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "accept" ,  "application/activity+json" ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Signature" ,  signedRequest . SignatureHeader ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Date" ,  signedRequest . DateHeader ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// we need to pass the context through signature check first to set appropriate values on it 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . signatureCheck ( ctx ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// normally the router would populate these params from the path values, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// but because we're calling the function directly, we need to set them manually. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Params  =  gin . Params { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										gin . Param { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Key :    users . UsernameKey , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											Value :  targetAccount . Username , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// trigger the function being tested 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-31 17:31:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . userModule . OutboxGETHandler ( ctx ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusOK ,  recorder . Code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  :=  recorder . Result ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									defer  result . Body . Close ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  ioutil . ReadAll ( result . Body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-13 17:02:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dst  :=  new ( bytes . Buffer ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  json . Indent ( dst ,  b ,  "" ,  "  " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( ` { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "@context" :  "https://www.w3.org/ns/activitystreams" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "first" :  "http://localhost:8080/users/the_mighty_zork/outbox?page=true" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "id" :  "http://localhost:8080/users/the_mighty_zork/outbox" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "type" :  "OrderedCollection" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ` ,  dst . String ( ) )  
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m  :=  make ( map [ string ] interface { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  json . Unmarshal ( b ,  & m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									t ,  err  :=  streams . ToType ( context . Background ( ) ,  m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_ ,  ok  :=  t . ( vocab . ActivityStreamsOrderedCollection ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . True ( ok ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * OutboxGetTestSuite )  TestGetOutboxFirstPage ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// the dereference we're gonna use 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									derefRequests  :=  testrig . NewTestDereferenceRequests ( suite . testAccounts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									signedRequest  :=  derefRequests [ "foss_satan_dereference_zork_outbox_first" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									targetAccount  :=  suite . testAccounts [ "local_account_1" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// setup request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recorder  :=  httptest . NewRecorder ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 08:32:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx ,  _  :=  testrig . CreateGinTestContext ( recorder ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodGet ,  targetAccount . OutboxURI + "?page=true" ,  nil )  // the endpoint we're hitting 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-11 17:50:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "accept" ,  "application/activity+json" ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Signature" ,  signedRequest . SignatureHeader ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Date" ,  signedRequest . DateHeader ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// we need to pass the context through signature check first to set appropriate values on it 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . signatureCheck ( ctx ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// normally the router would populate these params from the path values, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// but because we're calling the function directly, we need to set them manually. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Params  =  gin . Params { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										gin . Param { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Key :    users . UsernameKey , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											Value :  targetAccount . Username , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// trigger the function being tested 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-08 14:32:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . userModule . OutboxGETHandler ( ctx ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusOK ,  recorder . Code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  :=  recorder . Result ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									defer  result . Body . Close ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  ioutil . ReadAll ( result . Body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-08 14:32:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									b  =  checkDropPublished ( suite . T ( ) ,  b ,  "orderedItems" ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-13 17:02:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dst  :=  new ( bytes . Buffer ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  json . Indent ( dst ,  b ,  "" ,  "  " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( ` { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "@context" :  "https://www.w3.org/ns/activitystreams" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "id" :  "http://localhost:8080/users/the_mighty_zork/outbox?page=true" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "next" :  "http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026max_id=01F8MHAMCHF6Y650WCRSCP4WMY" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "orderedItems" :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "actor" :  "http://localhost:8080/users/the_mighty_zork" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "cc" :  "http://localhost:8080/users/the_mighty_zork/followers" , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-08 14:32:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "id" :  "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity#Create" , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-13 17:02:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "object" :  "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "to" :  "https://www.w3.org/ns/activitystreams#Public" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "type" :  "Create" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "partOf" :  "http://localhost:8080/users/the_mighty_zork/outbox" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "prev" :  "http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026min_id=01F8MHAMCHF6Y650WCRSCP4WMY" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "type" :  "OrderedCollectionPage" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ` ,  dst . String ( ) )  
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m  :=  make ( map [ string ] interface { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  json . Unmarshal ( b ,  & m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									t ,  err  :=  streams . ToType ( context . Background ( ) ,  m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_ ,  ok  :=  t . ( vocab . ActivityStreamsOrderedCollectionPage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . True ( ok ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * OutboxGetTestSuite )  TestGetOutboxNextPage ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// the dereference we're gonna use 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									derefRequests  :=  testrig . NewTestDereferenceRequests ( suite . testAccounts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									signedRequest  :=  derefRequests [ "foss_satan_dereference_zork_outbox_next" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									targetAccount  :=  suite . testAccounts [ "local_account_1" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// setup request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recorder  :=  httptest . NewRecorder ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 08:32:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx ,  _  :=  testrig . CreateGinTestContext ( recorder ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodGet ,  targetAccount . OutboxURI + "?page=true&max_id=01F8MHAMCHF6Y650WCRSCP4WMY" ,  nil )  // the endpoint we're hitting 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-11 17:50:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "accept" ,  "application/activity+json" ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Signature" ,  signedRequest . SignatureHeader ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Date" ,  signedRequest . DateHeader ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// we need to pass the context through signature check first to set appropriate values on it 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . signatureCheck ( ctx ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// normally the router would populate these params from the path values, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// but because we're calling the function directly, we need to set them manually. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Params  =  gin . Params { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										gin . Param { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Key :    users . UsernameKey , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											Value :  targetAccount . Username , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										gin . Param { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Key :    users . MaxIDKey , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											Value :  "01F8MHAMCHF6Y650WCRSCP4WMY" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// trigger the function being tested 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-08 14:32:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . userModule . OutboxGETHandler ( ctx ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusOK ,  recorder . Code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  :=  recorder . Result ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									defer  result . Body . Close ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  ioutil . ReadAll ( result . Body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-13 17:02:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dst  :=  new ( bytes . Buffer ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  json . Indent ( dst ,  b ,  "" ,  "  " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( ` { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "@context" :  "https://www.w3.org/ns/activitystreams" , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-27 14:00:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  "id" :  "http://localhost:8080/users/the_mighty_zork/outbox?page=true&maxID=01F8MHAMCHF6Y650WCRSCP4WMY" , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-13 17:02:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  "orderedItems" :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "partOf" :  "http://localhost:8080/users/the_mighty_zork/outbox" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "type" :  "OrderedCollectionPage" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ` ,  dst . String ( ) )  
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m  :=  make ( map [ string ] interface { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  json . Unmarshal ( b ,  & m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									t ,  err  :=  streams . ToType ( context . Background ( ) ,  m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_ ,  ok  :=  t . ( vocab . ActivityStreamsOrderedCollectionPage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . True ( ok ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  TestOutboxGetTestSuite ( t  * testing . T )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Run ( t ,  new ( OutboxGetTestSuite ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2023-11-08 14:32:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// checkDropPublished checks the published field at given key position for formatting, and drops from the JSON.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This is useful because the published property is usually set to the current time string (which is difficult to test).  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  checkDropPublished ( t  * testing . T ,  b  [ ] byte ,  at  ... string )  [ ] byte  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m  :=  make ( map [ string ] any ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  :=  json . Unmarshal ( b ,  & m ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										t . Fatalf ( "error unmarshaling json into map: %v" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mm  :=  m 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  _ ,  key  :=  range  at  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch  vt  :=  mm [ key ] . ( type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  map [ string ] any : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mm  =  vt 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  s ,  ok  :=  mm [ "published" ] . ( string ) ;  ! ok  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										t . Fatal ( "missing published data on json" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  _ ,  err  :=  time . Parse ( time . RFC3339 ,  s ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										t . Fatalf ( "error parsing published time: %v" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									delete ( mm ,  "published" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  json . Marshal ( m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										t . Fatalf ( "error remarshaling json: %v" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  b 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}