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/>.  
						 
					
						
							
								
									
										
										
										
											2023-02-22 22:36:18 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-27 11:23:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								package  util  
						 
					
						
							
								
									
										
										
										
											2023-02-22 22:36:18 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"fmt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"testing" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-26 15:34:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									apimodel  "code.superseriousbusiness.org/gotosocial/internal/api/model" 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-22 22:36:18 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/stretchr/testify/suite" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  OpenGraphTestSuite  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Suite 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * OpenGraphTestSuite )  TestParseDescription ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tests  :=  [ ] struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										name ,  in ,  exp  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "shellcmd" ,  in :  ` echo '\e]8;;http://example.com\e\This is a link\e]8;;\e' ` ,  exp :  ` echo '\e]8;;http://example.com\e\This is a link\e]8;;\e' ` } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "newlines" ,  in :  "test\n\ntest\ntest" ,  exp :  "test test test" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  _ ,  tt  :=  range  tests  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tt  :=  tt 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Run ( tt . name ,  func ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-27 11:23:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											suite . Equal ( fmt . Sprintf ( "content=\"%s\"" ,  tt . exp ) ,  ParseDescription ( tt . in ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-22 22:36:18 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( suite  * OpenGraphTestSuite )  TestWithAccountWithNote ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-12-27 11:23:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									baseMeta  :=  OGBase ( & apimodel . InstanceV1 { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										AccountDomain :  "example.org" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Languages :      [ ] string { "en" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 14:22:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									acct  :=  & apimodel . Account { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Acct :         "example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										DisplayName :  "example person!!" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										URL :          "https://example.org/@example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Note :         "<p>This is my profile, read it and weep! Weep then!</p>" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Username :     "example_account" , 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 14:22:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									accountMeta  :=  baseMeta . WithAccount ( & apimodel . WebAccount { Account :  acct } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-27 11:23:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualValues ( OGMeta { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Title :                 "example person!!, @example_account@example.org" , 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Type :                  "profile" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Locale :                "en" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										URL :                   "https://example.org/@example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										SiteName :              "example.org" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :           "content=\"This is my profile, read it and weep! Weep then!\"" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Image :                 "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ImageWidth :            "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ImageHeight :           "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ImageAlt :              "Avatar for example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ArticlePublisher :      "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ArticleAuthor :         "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ArticleModifiedTime :   "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ArticlePublishedTime :  "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ProfileUsername :       "example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ,  * accountMeta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * OpenGraphTestSuite )  TestWithAccountNoNote ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-12-27 11:23:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									baseMeta  :=  OGBase ( & apimodel . InstanceV1 { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										AccountDomain :  "example.org" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Languages :      [ ] string { "en" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 14:22:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									acct  :=  & apimodel . Account { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Acct :         "example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										DisplayName :  "example person!!" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										URL :          "https://example.org/@example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Note :         "" ,  // <- empty 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Username :     "example_account" , 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 14:22:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									accountMeta  :=  baseMeta . WithAccount ( & apimodel . WebAccount { Account :  acct } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-27 11:23:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualValues ( OGMeta { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Title :                 "example person!!, @example_account@example.org" , 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-03 16:18:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Type :                  "profile" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Locale :                "en" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										URL :                   "https://example.org/@example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										SiteName :              "example.org" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :           "content=\"This GoToSocial user hasn't written a bio yet!\"" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Image :                 "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ImageWidth :            "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ImageHeight :           "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ImageAlt :              "Avatar for example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ArticlePublisher :      "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ArticleAuthor :         "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ArticleModifiedTime :   "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ArticlePublishedTime :  "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ProfileUsername :       "example_account" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ,  * accountMeta ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-22 22:36:18 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  TestOpenGraphTestSuite ( t  * testing . T )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Run ( t ,  & OpenGraphTestSuite { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}