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-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								package  media_test  
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"bytes" 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"context" 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"crypto/rand" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"encoding/base64" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"encoding/json" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"fmt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"io/ioutil" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http/httptest" 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"testing" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/stretchr/testify/suite" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediamodule  "github.com/superseriousbusiness/gotosocial/internal/api/client/media" 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									apimodel  "github.com/superseriousbusiness/gotosocial/internal/api/model" 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-31 15:47:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									apiutil  "github.com/superseriousbusiness/gotosocial/internal/api/util" 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/config" 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/db" 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 15:46:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/email" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/federation" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 09:47:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/log" 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/media" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/oauth" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-30 13:12:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/processing" 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/state" 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 12:08:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/storage" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/typeutils" 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 10:37:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/visibility" 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/testrig" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  MediaCreateTestSuite  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// standard suite interfaces 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Suite 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									db            db . DB 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-24 08:35:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									storage       * storage . Driver 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 13:08:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediaManager  * media . Manager 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 10:58:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									federator     * federation . Federator 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-23 17:44:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tc            * typeutils . Converter 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									oauthServer   oauth . Server 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 15:46:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emailSender   email . Sender 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-22 16:05:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									processor     * processing . Processor 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									state         state . State 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// standard suite models 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 11:45:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testTokens        map [ string ] * gtsmodel . Token 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testClients       map [ string ] * gtsmodel . Client 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									testApplications  map [ string ] * gtsmodel . Application 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testUsers         map [ string ] * gtsmodel . User 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testAccounts      map [ string ] * gtsmodel . Account 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testAttachments   map [ string ] * gtsmodel . MediaAttachment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// item being tested 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 18:14:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediaModule  * mediamodule . Module 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TEST  INFRASTRUCTURE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* /  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * MediaCreateTestSuite )  SetupSuite ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . state . Caches . Init ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . StartWorkers ( & suite . state ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// setup standard items 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 13:31:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testrig . InitTestConfig ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 05:37:33 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testrig . InitTestLog ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . db  =  testrig . NewTestDB ( & suite . state ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . state . DB  =  suite . db 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 12:08:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . storage  =  testrig . NewInMemoryStorage ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . state . Storage  =  suite . storage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-23 17:44:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . tc  =  typeutils . NewConverter ( & suite . state ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 10:37:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . StartTimelines ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										& suite . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										visibility . NewFilter ( & suite . state ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . tc , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . mediaManager  =  testrig . NewTestMediaManager ( & suite . state ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									suite . oauthServer  =  testrig . NewTestOauthServer ( suite . db ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . federator  =  testrig . NewTestFederator ( & suite . state ,  testrig . NewTestTransportController ( & suite . state ,  testrig . NewMockHTTPClient ( nil ,  "../../../../testrig/media" ) ) ,  suite . mediaManager ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 15:46:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . emailSender  =  testrig . NewEmailSender ( "../../../../web/template/" ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . processor  =  testrig . NewTestProcessor ( & suite . state ,  suite . federator ,  suite . emailSender ,  suite . mediaManager ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// setup module being tested 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . mediaModule  =  mediamodule . New ( suite . processor ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * MediaCreateTestSuite )  TearDownSuite ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-08-17 17:26:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  err  :=  suite . db . Close ( ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-17 12:02:29 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										log . Panicf ( nil ,  "error closing db connection: %s" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testrig . StopWorkers ( & suite . state ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * MediaCreateTestSuite )  SetupTest ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . state . Caches . Init ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-10 13:32:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testrig . StandardDBSetup ( suite . db ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testrig . StandardStorageSetup ( suite . storage ,  "../../../../testrig/media" ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									suite . testTokens  =  testrig . NewTestTokens ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testClients  =  testrig . NewTestClients ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testApplications  =  testrig . NewTestApplications ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testUsers  =  testrig . NewTestUsers ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testAccounts  =  testrig . NewTestAccounts ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testAttachments  =  testrig . NewTestAttachments ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * MediaCreateTestSuite )  TearDownTest ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . StandardDBTeardown ( suite . db ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . StandardStorageTeardown ( suite . storage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ACTUAL  TESTS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* /  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( suite  * MediaCreateTestSuite )  TestMediaCreateSuccessful ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// set up the context for the request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									t  :=  suite . testTokens [ "local_account_1" ] 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									oauthToken  :=  oauth . DBTokenToToken ( t ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									recorder  :=  httptest . NewRecorder ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 08:32:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx ,  _  :=  testrig . CreateGinTestContext ( recorder ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedApplication ,  suite . testApplications [ "application_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedToken ,  oauthToken ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedUser ,  suite . testUsers [ "local_account_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedAccount ,  suite . testAccounts [ "local_account_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// see what's in storage *before* the request 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 09:44:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  storageKeysBeforeRequest  [ ] string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  :=  suite . storage . WalkKeys ( ctx ,  func ( ctx  context . Context ,  key  string )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										storageKeysBeforeRequest  =  append ( storageKeysBeforeRequest ,  key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// create the request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									buf ,  w ,  err  :=  testrig . CreateMultipartFormData ( "file" ,  "../../../../testrig/media/test-jpeg.jpg" ,  map [ string ] string { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"description" :  "this is a test image -- a cool background from somewhere" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"focus" :        "-0.5,0.5" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodPost ,  "http://localhost:8080/api/v1/media" ,  bytes . NewReader ( buf . Bytes ( ) ) )  // the endpoint we're hitting 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Content-Type" ,  w . FormDataContentType ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-11 17:50:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "accept" ,  "application/json" ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-31 15:47:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . AddParam ( apiutil . APIVersionKey ,  apiutil . APIv1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// do the actual request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . mediaModule . MediaCreatePOSTHandler ( ctx ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check what's in storage *after* the request 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 09:44:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  storageKeysAfterRequest  [ ] string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  :=  suite . storage . WalkKeys ( ctx ,  func ( ctx  context . Context ,  key  string )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										storageKeysAfterRequest  =  append ( storageKeysAfterRequest ,  key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-12 21:03:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusOK ,  recorder . Code ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  :=  recorder . Result ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									defer  result . Body . Close ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  ioutil . ReadAll ( result . Body ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									fmt . Println ( string ( b ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									attachmentReply  :=  & apimodel . Attachment { } 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  json . Unmarshal ( b ,  attachmentReply ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . Equal ( "this is a test image -- a cool background from somewhere" ,  * attachmentReply . Description ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . Equal ( "image" ,  attachmentReply . Type ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualValues ( apimodel . MediaMeta { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Original :  apimodel . MediaDimensions { 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Width :   1920 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Height :  1080 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Size :    "1920x1080" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Aspect :  1.7777778 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Small :  apimodel . MediaDimensions { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-23 11:13:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Width :   512 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Height :  288 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Size :    "512x288" , 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Aspect :  1.7777778 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-16 16:19:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Focus :  & apimodel . MediaFocus { 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											X :  - 0.5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Y :  0.5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ,  attachmentReply . Meta ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-10 14:05:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . Equal ( "LiBzRk#6V[WF_NvzV@WY_3rqV@a$" ,  attachmentReply . Blurhash ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . NotEmpty ( attachmentReply . ID ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NotEmpty ( attachmentReply . URL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NotEmpty ( attachmentReply . PreviewURL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( len ( storageKeysBeforeRequest ) + 2 ,  len ( storageKeysAfterRequest ) )  // 2 images should be added to storage: the original and the thumbnail 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( suite  * MediaCreateTestSuite )  TestMediaCreateSuccessfulV2 ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// set up the context for the request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									t  :=  suite . testTokens [ "local_account_1" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									oauthToken  :=  oauth . DBTokenToToken ( t ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recorder  :=  httptest . NewRecorder ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx ,  _  :=  testrig . CreateGinTestContext ( recorder ,  nil ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedApplication ,  suite . testApplications [ "application_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedToken ,  oauthToken ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedUser ,  suite . testUsers [ "local_account_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedAccount ,  suite . testAccounts [ "local_account_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// see what's in storage *before* the request 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 09:44:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  storageKeysBeforeRequest  [ ] string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  :=  suite . storage . WalkKeys ( ctx ,  func ( ctx  context . Context ,  key  string )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										storageKeysBeforeRequest  =  append ( storageKeysBeforeRequest ,  key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// create the request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									buf ,  w ,  err  :=  testrig . CreateMultipartFormData ( "file" ,  "../../../../testrig/media/test-jpeg.jpg" ,  map [ string ] string { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"description" :  "this is a test image -- a cool background from somewhere" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"focus" :        "-0.5,0.5" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodPost ,  "http://localhost:8080/api/v2/media" ,  bytes . NewReader ( buf . Bytes ( ) ) )  // the endpoint we're hitting 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Content-Type" ,  w . FormDataContentType ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "accept" ,  "application/json" ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-31 15:47:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . AddParam ( apiutil . APIVersionKey ,  apiutil . APIv2 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// do the actual request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . mediaModule . MediaCreatePOSTHandler ( ctx ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check what's in storage *after* the request 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 09:44:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  storageKeysAfterRequest  [ ] string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  :=  suite . storage . WalkKeys ( ctx ,  func ( ctx  context . Context ,  key  string )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										storageKeysAfterRequest  =  append ( storageKeysAfterRequest ,  key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusOK ,  recorder . Code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  :=  recorder . Result ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									defer  result . Body . Close ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  ioutil . ReadAll ( result . Body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fmt . Println ( string ( b ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									attachmentReply  :=  & apimodel . Attachment { } 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  json . Unmarshal ( b ,  attachmentReply ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( "this is a test image -- a cool background from somewhere" ,  * attachmentReply . Description ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( "image" ,  attachmentReply . Type ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualValues ( apimodel . MediaMeta { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Original :  apimodel . MediaDimensions { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Width :   1920 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Height :  1080 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Size :    "1920x1080" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Aspect :  1.7777778 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Small :  apimodel . MediaDimensions { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Width :   512 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Height :  288 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Size :    "512x288" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Aspect :  1.7777778 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-16 16:19:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Focus :  & apimodel . MediaFocus { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											X :  - 0.5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Y :  0.5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ,  attachmentReply . Meta ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-10 14:05:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . Equal ( "LiBzRk#6V[WF_NvzV@WY_3rqV@a$" ,  attachmentReply . Blurhash ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . NotEmpty ( attachmentReply . ID ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Nil ( attachmentReply . URL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NotEmpty ( attachmentReply . PreviewURL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( len ( storageKeysBeforeRequest ) + 2 ,  len ( storageKeysAfterRequest ) )  // 2 images should be added to storage: the original and the thumbnail 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( suite  * MediaCreateTestSuite )  TestMediaCreateLongDescription ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// set up the context for the request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									t  :=  suite . testTokens [ "local_account_1" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									oauthToken  :=  oauth . DBTokenToToken ( t ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recorder  :=  httptest . NewRecorder ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 08:32:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx ,  _  :=  testrig . CreateGinTestContext ( recorder ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedApplication ,  suite . testApplications [ "application_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedToken ,  oauthToken ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedUser ,  suite . testUsers [ "local_account_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedAccount ,  suite . testAccounts [ "local_account_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// read a random string of a really long description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									descriptionBytes  :=  make ( [ ] byte ,  5000 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  _ ,  err  :=  rand . Read ( descriptionBytes ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									description  :=  base64 . RawStdEncoding . EncodeToString ( descriptionBytes ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// create the request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									buf ,  w ,  err  :=  testrig . CreateMultipartFormData ( "file" ,  "../../../../testrig/media/test-jpeg.jpg" ,  map [ string ] string { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"description" :  description , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"focus" :        "-0.5,0.5" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodPost ,  "http://localhost:8080/api/v1/media" ,  bytes . NewReader ( buf . Bytes ( ) ) )  // the endpoint we're hitting 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Content-Type" ,  w . FormDataContentType ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "accept" ,  "application/json" ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-31 15:47:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . AddParam ( apiutil . APIVersionKey ,  apiutil . APIv1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// do the actual request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . mediaModule . MediaCreatePOSTHandler ( ctx ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusBadRequest ,  recorder . Code ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  :=  recorder . Result ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									defer  result . Body . Close ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  ioutil . ReadAll ( result . Body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . Equal ( ` { "error":"Bad Request: image description length must be between 0 and 500 characters (inclusive), but provided image description was 6667 chars"} ` ,  string ( b ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * MediaCreateTestSuite )  TestMediaCreateTooShortDescription ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// set the min description length 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-30 13:41:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									config . SetMediaDescriptionMinChars ( 500 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// set up the context for the request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									t  :=  suite . testTokens [ "local_account_1" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									oauthToken  :=  oauth . DBTokenToToken ( t ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recorder  :=  httptest . NewRecorder ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 08:32:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx ,  _  :=  testrig . CreateGinTestContext ( recorder ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedApplication ,  suite . testApplications [ "application_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedToken ,  oauthToken ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedUser ,  suite . testUsers [ "local_account_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Set ( oauth . SessionAuthorizedAccount ,  suite . testAccounts [ "local_account_1" ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// create the request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									buf ,  w ,  err  :=  testrig . CreateMultipartFormData ( "file" ,  "../../../../testrig/media/test-jpeg.jpg" ,  map [ string ] string { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"description" :  "" ,  // provide an empty description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"focus" :        "-0.5,0.5" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodPost ,  "http://localhost:8080/api/v1/media" ,  bytes . NewReader ( buf . Bytes ( ) ) )  // the endpoint we're hitting 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "Content-Type" ,  w . FormDataContentType ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ctx . Request . Header . Set ( "accept" ,  "application/json" ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-31 15:47:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . AddParam ( apiutil . APIVersionKey ,  apiutil . APIv1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// do the actual request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . mediaModule . MediaCreatePOSTHandler ( ctx ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response -- there should be no error because minimum description length is checked on *UPDATE*, not initial upload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusOK ,  recorder . Code ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  TestMediaCreateTestSuite ( t  * testing . T )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Run ( t ,  new ( MediaCreateTestSuite ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}