github.com/core-coin/go-core/v2@v2.1.9/signer/core/validation_test.go (about) 1 // Copyright 2018 by the Authors 2 // This file is part of the go-core library. 3 // 4 // The go-core library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The go-core library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the go-core library. If not, see <http://www.gnu.org/licenses/>. 16 17 package core 18 19 import "testing" 20 21 func TestPasswordValidation(t *testing.T) { 22 testcases := []struct { 23 pw string 24 shouldFail bool 25 }{ 26 {"test", true}, 27 {"testtest\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98", true}, 28 {"placeOfInterest⌘", true}, 29 {"password\nwith\nlinebreak", true}, 30 {"password\twith\vtabs", true}, 31 // Ok passwords 32 {"password WhichIsOk", false}, 33 {"passwordOk!@#$%^&*()", false}, 34 {"12301203123012301230123012", false}, 35 } 36 for _, test := range testcases { 37 err := ValidatePasswordFormat(test.pw) 38 if err == nil && test.shouldFail { 39 t.Errorf("password '%v' should fail validation", test.pw) 40 } else if err != nil && !test.shouldFail { 41 42 t.Errorf("password '%v' shound not fail validation, but did: %v", test.pw, err) 43 } 44 } 45 }