1// Copyright 2015 Keybase, Inc. All rights reserved. Use of 2// this source code is governed by the included BSD license. 3 4package libkb 5 6import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10) 11 12type checkerTest struct { 13 input string 14 valid bool 15} 16 17var usernameTests = []checkerTest{ 18 {input: "a", valid: false}, 19 {input: "az", valid: true}, 20 {input: "0123456789abcdef", valid: true}, 21 {input: "0123456789abcdefg", valid: false}, 22 {input: "_foo", valid: false}, 23 {input: "foo_bar_baz", valid: true}, 24 {input: "foo__bar", valid: false}, 25 {input: "Upper_Case", valid: true}, 26} 27 28func TestCheckUsername(t *testing.T) { 29 for _, test := range usernameTests { 30 res := CheckUsername.F(test.input) 31 require.Equal(t, res, test.valid) 32 } 33} 34 35var deviceNameTests = []checkerTest{ 36 {input: "home computer", valid: true}, 37 {input: " home computer", valid: false}, 38 {input: " home computer ", valid: false}, 39 {input: "home computer ", valid: false}, 40 {input: "home computer", valid: false}, 41 {input: "home - computer", valid: true}, 42 {input: "Mike's computer", valid: true}, 43 {input: "tab\tcomputer", valid: false}, 44 {input: "foo -- computer", valid: false}, 45 {input: "foo - _ - computer", valid: false}, 46 {input: "home computer-", valid: false}, 47 {input: "home computer+", valid: true}, 48 {input: "home computer'", valid: false}, 49 {input: "home computer_", valid: false}, 50 {input: "notascii", valid: false}, 51 {input: "John’s iPhone", valid: true}, 52 {input: "absolute@unit", valid: false}, 53 {input: "absolute(unit", valid: false}, 54} 55 56func TestCheckDeviceName(t *testing.T) { 57 for _, test := range deviceNameTests { 58 res := CheckDeviceName.F(test.input) 59 require.Equal(t, res, test.valid) 60 } 61} 62 63type normalizeTest struct { 64 name1 string 65 name2 string 66} 67 68var deviceNormalizeTests = []normalizeTest{ 69 {name1: "home computer", name2: "homecomputer"}, 70 {name1: "home - computer", name2: "homecomputer"}, 71 {name1: "Mike's computer", name2: "mikescomputer"}, 72 {name1: "John’s iPhone", name2: "johnsiphone"}, 73} 74 75func TestNormalizeDeviceName(t *testing.T) { 76 for _, test := range deviceNormalizeTests { 77 require.Equal(t, test.name2, CheckDeviceName.Normalize(test.name1)) 78 } 79} 80