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/>.  
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								package  media_test  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"bytes" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"encoding/json" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"fmt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"io/ioutil" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http/httptest" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"testing" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-26 15:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediamodule  "code.superseriousbusiness.org/gotosocial/internal/api/client/media" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									apimodel  "code.superseriousbusiness.org/gotosocial/internal/api/model" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									apiutil  "code.superseriousbusiness.org/gotosocial/internal/api/util" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/config" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/db" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/email" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/federation" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/gtsmodel" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/media" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/oauth" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/processing" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/state" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/storage" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/internal/typeutils" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"code.superseriousbusiness.org/gotosocial/testrig" 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/stretchr/testify/suite" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  MediaUpdateTestSuite  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// standard suite interfaces 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Suite 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									db            db . DB 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-24 08:35:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									storage       * storage . Driver 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 10:58:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									federator     * federation . Federator 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-23 17:44:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tc            * typeutils . Converter 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-28 13:08:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediaManager  * media . Manager 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									oauthServer   oauth . Server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									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 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// standard suite models 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testTokens        map [ string ] * gtsmodel . Token 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testApplications  map [ string ] * gtsmodel . Application 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testUsers         map [ string ] * gtsmodel . User 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testAccounts      map [ string ] * gtsmodel . Account 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testAttachments   map [ string ] * gtsmodel . MediaAttachment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// item being tested 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mediaModule  * mediamodule . Module 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TEST  INFRASTRUCTURE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* /  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 15:46:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( suite  * MediaUpdateTestSuite )  SetupTest ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-11-14 15:57:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testrig . StartNoopWorkers ( & suite . state ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// setup standard items 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . InitTestConfig ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . InitTestLog ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 15:46:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . state . Caches . Init ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 15:46:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . db  =  testrig . NewTestDB ( & suite . state ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . StandardDBSetup ( suite . db ,  nil ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . StandardStorageSetup ( suite . storage ,  "../../../../testrig/media" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-23 17:44:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . tc  =  typeutils . NewConverter ( & suite . state ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 10:37:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . mediaManager  =  testrig . NewTestMediaManager ( & suite . state ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-03 16:03:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . oauthServer  =  testrig . NewTestOauthServer ( & suite . state ) 
							 
						 
					
						
							
								
									
										
										
										
											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 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									suite . emailSender  =  testrig . NewEmailSender ( "../../../../web/template/" ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-01-23 16:47:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . processor  =  testrig . NewTestProcessor ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										& suite . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . federator , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . emailSender , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										testrig . NewNoopWebPushSender ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . mediaManager , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// setup module being tested 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . mediaModule  =  mediamodule . New ( suite . processor ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 18:26:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 15:46:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// setup test data 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									suite . testTokens  =  testrig . NewTestTokens ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testApplications  =  testrig . NewTestApplications ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testUsers  =  testrig . NewTestUsers ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testAccounts  =  testrig . NewTestAccounts ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . testAttachments  =  testrig . NewTestAttachments ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * MediaUpdateTestSuite )  TearDownTest ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . StandardDBTeardown ( suite . db ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									testrig . StandardStorageTeardown ( suite . storage ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 15:46:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testrig . StopWorkers ( & suite . state ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ACTUAL  TESTS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* /  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * MediaUpdateTestSuite )  TestUpdateImage ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									toUpdate  :=  suite . testAttachments [ "local_account_1_unattached_1" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 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 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									buf ,  w ,  err  :=  testrig . CreateMultipartFormData ( nil ,  map [ string ] [ ] string { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-10 17:42:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										"id" :           { toUpdate . ID } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"description" :  { "new description!" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"focus" :        { "-0.1,0.3" } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodPut ,  fmt . Sprintf ( "http://localhost:8080/api/v1/media/%s" ,  toUpdate . ID ) ,  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 ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . AddParam ( mediamodule . IDKey ,  toUpdate . ID ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// do the actual request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . mediaModule . MediaPUTHandler ( ctx ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusOK ,  recorder . Code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  :=  recorder . Result ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									defer  result . Body . Close ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  ioutil . ReadAll ( result . Body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// reply should be an attachment 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									attachmentReply  :=  & apimodel . Attachment { } 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									err  =  json . Unmarshal ( b ,  attachmentReply ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// the reply should contain the updated fields 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . Equal ( "new description!" ,  * attachmentReply . Description ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-04 14:58:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualValues ( "image" ,  attachmentReply . Type ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualValues ( apimodel . MediaMeta { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Original :  apimodel . MediaDimensions { Width :  800 ,  Height :  450 ,  FrameRate :  "" ,  Duration :  0 ,  Bitrate :  0 ,  Size :  "800x450" ,  Aspect :  1.7777778 } , 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-19 15:28:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Small :     apimodel . MediaDimensions { Width :  512 ,  Height :  288 ,  FrameRate :  "" ,  Duration :  0 ,  Bitrate :  0 ,  Size :  "512x288" ,  Aspect :  1.7777778 } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-16 16:19:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Focus :     & apimodel . MediaFocus { X :  - 0.1 ,  Y :  0.3 } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-10 19:29:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ,  * attachmentReply . Meta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( toUpdate . Blurhash ,  * attachmentReply . Blurhash ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									suite . Equal ( toUpdate . ID ,  attachmentReply . ID ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . Equal ( toUpdate . URL ,  * attachmentReply . URL ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									suite . NotEmpty ( toUpdate . Thumbnail . URL ,  attachmentReply . PreviewURL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * MediaUpdateTestSuite )  TestUpdateImageShortDescription ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// set the min description length 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-30 13:41:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									config . SetMediaDescriptionMinChars ( 50 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									toUpdate  :=  suite . testAttachments [ "local_account_1_unattached_1" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 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 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									buf ,  w ,  err  :=  testrig . CreateMultipartFormData ( nil ,  map [ string ] [ ] string { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-10 17:42:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										"id" :           { toUpdate . ID } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"description" :  { "new description!" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										"focus" :        { "-0.1,0.3" } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										panic ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . Request  =  httptest . NewRequest ( http . MethodPut ,  fmt . Sprintf ( "http://localhost:8080/api/v1/media/%s" ,  toUpdate . ID ) ,  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 ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ctx . AddParam ( mediamodule . IDKey ,  toUpdate . ID ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// do the actual request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . mediaModule . MediaPUTHandler ( ctx ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualValues ( http . StatusBadRequest ,  recorder . Code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result  :=  recorder . Result ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									defer  result . Body . Close ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									b ,  err  :=  ioutil . ReadAll ( result . Body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// reply should be an error message 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . Equal ( ` { "error":"Bad Request: image description length must be between 50 and 500 characters (inclusive), but provided image description was 16 chars"} ` ,  string ( b ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-30 16:10:53 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  TestMediaUpdateTestSuite ( t  * testing . T )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Run ( t ,  new ( MediaUpdateTestSuite ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}