github.com/psiphon-labs/psiphon-tunnel-core@v2.0.28+incompatible/psiphon/common/values/values_test.go (about) 1 /* 2 * Copyright (c) 2019, Psiphon Inc. 3 * All rights reserved. 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU 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 General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 package values 21 22 import ( 23 "testing" 24 25 "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common" 26 ) 27 28 func TestValues(t *testing.T) { 29 30 testValues := []string{"a", "b", "c"} 31 32 spec := NewPickOneSpec(testValues) 33 34 key, err := common.MakeSecureRandomBytes(32) 35 if err != nil { 36 t.Fatalf("MakeSecureRandomBytes failed: %s", err) 37 } 38 39 obfuscatedSpec, err := spec.Obfuscate(key, 10, 20) 40 if err != nil { 41 t.Fatalf("Obfuscate failed: %s", err) 42 } 43 44 spec = DeobfuscateValueSpec(obfuscatedSpec, key) 45 if spec == nil { 46 t.Fatalf("DeobfuscateValueSpec failed") 47 } 48 49 values := make(map[string]bool) 50 51 SetUserAgentsSpec(spec) 52 53 for i := 0; i < 100; i++ { 54 values[GetUserAgent()] = true 55 } 56 57 if len(values) != len(testValues) { 58 t.Fatalf("unexpected values count") 59 } 60 61 for _, testValue := range testValues { 62 _, ok := values[testValue] 63 if !ok { 64 t.Fatalf("unexpected missing value") 65 } 66 } 67 }