structvalidation_test.go (2244B)
1 // GoToSocial 2 // Copyright (C) GoToSocial Authors admin@gotosocial.org 3 // SPDX-License-Identifier: AGPL-3.0-or-later 4 // 5 // This program is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Affero General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Affero General Public License for more details. 14 // 15 // You should have received a copy of the GNU Affero General Public License 16 // along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 package validate_test 19 20 import ( 21 "testing" 22 23 "github.com/stretchr/testify/suite" 24 "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" 25 "github.com/superseriousbusiness/gotosocial/internal/validate" 26 ) 27 28 type ValidateTestSuite struct { 29 suite.Suite 30 } 31 32 func (suite *ValidateTestSuite) TestValidateNilPointer() { 33 var nilUser *gtsmodel.User 34 suite.Panics(func() { 35 validate.Struct(nilUser) 36 }) 37 } 38 39 func (suite *ValidateTestSuite) TestValidatePointer() { 40 user := >smodel.User{} 41 err := validate.Struct(user) 42 suite.EqualError(err, "Key: 'User.ID' Error:Field validation for 'ID' failed on the 'required' tag\nKey: 'User.AccountID' Error:Field validation for 'AccountID' failed on the 'required' tag\nKey: 'User.EncryptedPassword' Error:Field validation for 'EncryptedPassword' failed on the 'required' tag\nKey: 'User.UnconfirmedEmail' Error:Field validation for 'UnconfirmedEmail' failed on the 'required_without' tag") 43 } 44 45 func (suite *ValidateTestSuite) TestValidateNil() { 46 suite.Panics(func() { 47 validate.Struct(nil) 48 }) 49 } 50 51 func (suite *ValidateTestSuite) TestValidateWeirdULID() { 52 type a struct { 53 ID bool `validate:"required,ulid"` 54 } 55 56 err := validate.Struct(a{ID: true}) 57 suite.Error(err) 58 } 59 60 func (suite *ValidateTestSuite) TestValidateNotStruct() { 61 type aaaaaaa string 62 aaaaaa := aaaaaaa("aaaa") 63 suite.Panics(func() { 64 validate.Struct(aaaaaa) 65 }) 66 } 67 68 func TestValidateTestSuite(t *testing.T) { 69 suite.Run(t, new(ValidateTestSuite)) 70 }