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-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								package  validate_test  
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"errors" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"fmt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"testing" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/stretchr/testify/suite" 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/config" 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-09 12:16:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/validate" 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  ValidationTestSuite  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Suite 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestCheckPasswordStrength ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									empty  :=  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									terriblePassword  :=  "password" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									weakPassword  :=  "OKPassword" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									shortPassword  :=  "Ok12" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									specialPassword  :=  "Ok12%" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									longPassword  :=  "thisisafuckinglongpasswordbutnospecialchars" 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-23 07:25:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tooLong  :=  "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, ante id iaculis suscipit, nibh nibh varius enim, eget euismod augue augue eget mi. Praesent tincidunt, ex id finibus congue, enim nunc euismod nulla, id tincidunt ipsum neque at nunc. Sed id convallis libero. Sed euismod augue augue eget mi. Praesent tincidunt, ex id finibus congue, enim nunc euismod nulla, id tincidunt ipsum neque at nunc. Sed id convallis libero. Sed euismod augue augue eget mi. Praesent tincidunt, ex id finibus congue, enim nunc euismod nulla, id tincidunt ipsum neque at nunc." 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									strongPassword  :=  "3dX5@Zc%mV*W2MBNEy$@" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  err  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-23 12:33:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Password ( empty ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-21 11:29:18 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "no password provided / provided password was 0 bytes" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-23 12:33:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Password ( terriblePassword ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "password is only 62% strength, try including more special characters, using uppercase letters, using numbers or using a longer password" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-23 12:33:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Password ( weakPassword ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "password is only 95% strength, try including more special characters, using numbers or using a longer password" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-23 12:33:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Password ( shortPassword ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "password is only 39% strength, try including more special characters or using a longer password" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-23 12:33:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Password ( specialPassword ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "password is only 53% strength, try including more special characters or using a longer password" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-23 12:33:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Password ( longPassword ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-23 12:33:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Password ( tooLong ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-21 11:29:18 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "password should be no more than 72 bytes, provided password was 571 bytes" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-23 12:33:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Password ( strongPassword ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateUsername ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									empty  :=  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tooLong  :=  "holycrapthisisthelongestusernameiveeverseeninmylifethatstoomuchman" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									withSpaces  :=  "this username has spaces in it" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									weirdChars  :=  "thisusername&&&&&&&istooweird!!" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									leadingSpace  :=  " see_that_leading_space" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									trailingSpace  :=  "thisusername_ends_with_a_space " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									newlines  :=  "this_is\n_almost_ok" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									goodUsername  :=  "this_is_a_good_username" 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 11:15:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									singleChar  :=  "s" 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									var  err  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Username ( empty ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-07 19:53:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualError ( err ,  "no username provided" ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Username ( tooLong ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-07 19:53:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualError ( err ,  fmt . Sprintf ( "given username %s was invalid: must contain only lowercase letters, numbers, and underscores, max 64 characters" ,  tooLong ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Username ( withSpaces ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-07 19:53:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualError ( err ,  fmt . Sprintf ( "given username %s was invalid: must contain only lowercase letters, numbers, and underscores, max 64 characters" ,  withSpaces ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Username ( weirdChars ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-07 19:53:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualError ( err ,  fmt . Sprintf ( "given username %s was invalid: must contain only lowercase letters, numbers, and underscores, max 64 characters" ,  weirdChars ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Username ( leadingSpace ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-07 19:53:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualError ( err ,  fmt . Sprintf ( "given username %s was invalid: must contain only lowercase letters, numbers, and underscores, max 64 characters" ,  leadingSpace ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Username ( trailingSpace ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-07 19:53:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualError ( err ,  fmt . Sprintf ( "given username %s was invalid: must contain only lowercase letters, numbers, and underscores, max 64 characters" ,  trailingSpace ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Username ( newlines ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-07 19:53:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . EqualError ( err ,  fmt . Sprintf ( "given username %s was invalid: must contain only lowercase letters, numbers, and underscores, max 64 characters" ,  newlines ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Username ( goodUsername ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-07 19:53:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 11:15:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  validate . Username ( singleChar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateEmail ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									empty  :=  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									notAnEmailAddress  :=  "this-is-no-email-address!" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									almostAnEmailAddress  :=  "@thisisalmostan@email.address" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									aWebsite  :=  "https://thisisawebsite.com" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emailAddress  :=  "thisis.actually@anemail.address" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  err  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Email ( empty ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "no email provided" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Email ( notAnEmailAddress ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "mail: missing '@' or angle-addr" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Email ( almostAnEmailAddress ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-15 05:36:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										suite . True ( "mail: no angle-addr"  ==  err . Error ( )  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// golang 1.21.8 fixed some inconsistencies in net/mail which leads 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// to different error messages. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											"mail: missing word in phrase: mail: invalid string"  ==  err . Error ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Email ( aWebsite ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "mail: missing '@' or angle-addr" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . Email ( emailAddress ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateLanguage ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-08-07 01:25:54 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									testCases  :=  [ ] struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										name ,  input ,  expected ,  err  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "empty" ,  err :  "no language provided" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "notALanguage" ,  input :  "this isn't a language at all!" ,  err :  "language: tag is not well-formed" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "english" ,  input :  "en" ,  expected :  "en" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Should be all lowercase 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "capitalEnglish" ,  input :  "EN" ,  expected :  "en" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Overlong, should be in ISO 639-1 format 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "arabic3Letters" ,  input :  "ara" ,  expected :  "ar" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Should be all lowercase 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "mixedCapsEnglish" ,  input :  "eN" ,  expected :  "en" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Region should be capitalized 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "englishUS" ,  input :  "en-us" ,  expected :  "en-US" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "dutch" ,  input :  "nl" ,  expected :  "nl" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "german" ,  input :  "de" ,  expected :  "de" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "chinese" ,  input :  "zh" ,  expected :  "zh" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "chineseSimplified" ,  input :  "zh-Hans" ,  expected :  "zh-Hans" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ name :  "chineseTraditional" ,  input :  "zh-Hant" ,  expected :  "zh-Hant" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  _ ,  testCase  :=  range  testCases  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										testCase  :=  testCase 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Run ( testCase . name ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											actual ,  actualErr  :=  validate . Language ( testCase . input ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  testCase . err  ==  ""  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												suite . Equal ( testCase . expected ,  actual ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												suite . NoError ( actualErr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												suite . Empty ( actual ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												suite . EqualError ( actualErr ,  testCase . err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateReason ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									empty  :=  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									badReason  :=  "because" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									goodReason  :=  "to smash the state and destroy capitalism ultimately and completely" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tooLong  :=  "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris auctor mollis viverra. Maecenas maximus mollis sem, nec fermentum velit consectetur non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Quisque a enim nibh. Vestibulum bibendum leo ac porttitor auctor. Curabitur velit tellus, facilisis vitae lorem a, ullamcorper efficitur leo. Sed a auctor tortor. Sed ut finibus ante, sit amet laoreet sapien. Donec ullamcorper tellus a nibh sodales vulputate. Donec id dolor eu odio mollis bibendum. Pellentesque habitant morbi tristique senectus et netus at." 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-03 14:38:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									unicode  :=  "⎾⎿⏀⏁⏂⏃⏄⏅⏆⏇" 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									var  err  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check with no reason required 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( empty ,  false ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( badReason ,  false ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( tooLong ,  false ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( goodReason ,  false ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-03 14:38:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( unicode ,  false ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-03 14:38:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// check with reason required 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( empty ,  true ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "no reason provided" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( badReason ,  true ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "reason should be at least 40 chars but 'because' was 7" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( tooLong ,  true ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . Error ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( errors . New ( "reason should be no more than 500 chars but given reason was 600" ) ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									err  =  validate . SignUpReason ( goodReason ,  true ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  suite . NoError ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										suite . Equal ( nil ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 09:30:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateProfileField ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-05-09 12:16:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										shortProfileField    =  "pronouns" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tooLongProfileField  =  "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eu bibendum elit. Sed ac interdum nisi. Vestibulum vulputate eros quis euismod imperdiet. Nulla sit amet dui sit amet lorem consectetur iaculis. Mauris eget lacinia metus. Curabitur nec dui eleifend massa nunc." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										trimmedProfileField  =  "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eu bibendum elit. Sed ac interdum nisi. Vestibulum vulputate eros quis euismod imperdiet. Nulla sit amet dui sit amet lorem consectetur iaculis. Mauris eget lacinia metus. Curabitur nec dui " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										err                  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									okFields  :=  [ ] * gtsmodel . Field { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Name :   "example" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Value :  shortProfileField , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  validate . ProfileFields ( okFields ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( shortProfileField ,  okFields [ 0 ] . Value ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 09:30:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-09 12:16:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dodgyFields  :=  [ ] * gtsmodel . Field { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Name :   "example" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Value :  tooLongProfileField , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  =  validate . ProfileFields ( dodgyFields ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Equal ( trimmedProfileField ,  dodgyFields [ 0 ] . Value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Len ( dodgyFields [ 0 ] . Value ,  255 ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-06 09:30:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-25 15:18:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateCustomCSSDisabled ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									config . SetAccountsAllowCustomCSS ( false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  :=  validate . CustomCSS ( "this will fail" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualError ( err ,  "accounts-allow-custom-css is not enabled for this instance" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateCustomCSSEnabled ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									config . SetAccountsAllowCustomCSS ( true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  :=  validate . CustomCSS ( "this will pass" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . NoError ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateCustomCSSTooLong ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									config . SetAccountsAllowCustomCSS ( true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									config . SetAccountsCustomCSSLength ( 5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  :=  validate . CustomCSS ( "this will fail" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualError ( err ,  "custom_css must be less than 5 characters, but submitted custom_css was 14 characters" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateCustomCSSTooLongZalgo ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									config . SetAccountsAllowCustomCSS ( true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									config . SetAccountsCustomCSSLength ( 5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									zalgo  :=  "p̵̹̜͇̺̜̱͊̓̈́͛̀͊͘͜e̷̡̱̲̼̪̗̙̐͐̃́̄̉͛̔e̷̞̰̜̲̥̘̻͔̜̞̬͚͋̊͑͗̅̓͛͗̎̃̈́̐̂̕͝ ̷̨̢̡̱̖̤͇̻͕̲̤̞̑ͅp̶̰̜̟̠̏̇̇̆̐̒͋̔͘ḛ̵̾͘ę̷̝͙͕͓͓̱̠̤̳̻̜̗͖̞͙̻̆̓̄͋̎͊̀̋̿́̐͛͗̄̈́̚͠ ̵̨̨̫͕̲͚̮͕̳̉̾̔̍͐p̶̘̞̠̘̎̓̍̑̀͗̃̈́͂́̈́͆͘͜͝͝o̶̜͛̒͒̉̑͒̿͗̐̃͝o̵̼̒͌̓ ̵̢̗̦͔͉͈̰̘̋̃̐̑̅̽̏̄̅͐͆̔͊̃̋͝p̵̩̱̆̆͂̂͛̓̋̅͝o̶̪̰̲̝̻̳̦̮̮͔̒ͅơ̸̧̨̟͇̪̰̜̠̦͇̇̎͗̏̏̈́͂̉̏͐́̃̀͆͠ͅ" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  :=  validate . CustomCSS ( zalgo ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualError ( err ,  "custom_css must be less than 5 characters, but submitted custom_css was 275 characters" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateCustomCSSTooLongUnicode ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									config . SetAccountsAllowCustomCSS ( true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									config . SetAccountsCustomCSSLength ( 5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									unicode  :=  "⎾⎿⏀⏁⏂⏃⏄⏅⏆⏇" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									err  :=  validate . CustomCSS ( unicode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . EqualError ( err ,  "custom_css must be less than 5 characters, but submitted custom_css was 10 characters" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-20 11:46:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( suite  * ValidationTestSuite )  TestValidateEmojiShortcode ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  testStruct  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										shortcode  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ok         bool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  _ ,  test  :=  range  [ ] testStruct { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "peepee" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "poo-poo" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "-peepee" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "p" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "pp" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "6969" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "__peepee" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "_" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Too long. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "_XxX_Ultimate_Gamer_dude_6969_420_" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											shortcode :  "_XxX_Ultimate_Gamer_dude_6969_" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ok :         true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										err  :=  validate . EmojiShortcode ( test . shortcode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ok  :=  err  ==  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ! suite . Equal ( test . ok ,  ok )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											suite . T ( ) . Logf ( "fail on %s" ,  test . shortcode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 20:46:45 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  TestValidationTestSuite ( t  * testing . T )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									suite . Run ( t ,  new ( ValidationTestSuite ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}