package main import ( "fmt" "testing" ) func TestGeneratePassphrase(t *testing.T) { profile := "guest" passphrase := "secret" site := Site{ Host: "google.com", MinimumLength: 6, MaximumLength: 18, SpecialCharacters: " !@#$%^&*()_+-=<>,./|\\", NumberOfSpecialCharacters: 2, NumberOfDigits: 2, NumberOfUpperCase: 1, PseudoSalt: "", } i := 0 expected := "Ce\\41ae|dc001da138" for i = 0; i < 2; i++ { b := site.generatePassphrase(profile, passphrase, site.PseudoSalt) actual := fmt.Sprintf("%s", string(b)) if actual != expected { t.FailNow() } } } func TestContainsDigits(t *testing.T) { expected := true actual := containsDigits([]byte("blah0blah2"), 2) if actual != expected { t.FailNow() } expected = false actual = containsDigits([]byte("blah0blah"), 2) if actual != expected { t.FailNow() } expected = true actual = containsDigits([]byte("blah0blah12"), 2) if actual != expected { t.FailNow() } } func TestContainsUppercase(t *testing.T) { expected := true actual := containsUppercase([]byte("Blah0Blah2"), 2) if actual != expected { t.FailNow() } expected = false actual = containsUppercase([]byte("Blah0blah"), 2) if actual != expected { t.FailNow() } expected = true actual = containsUppercase([]byte("Blah0BLaH12"), 2) if actual != expected { t.FailNow() } } func TestContainsSpecialCharacters(t *testing.T) { special := "~!@#$%^&*()_+-= []{};':\",./<>?\\|" expected := true actual := containsSpecialCharacters([]byte("Blah!Blah&"), special, 2) if actual != expected { t.FailNow() } expected = false actual = containsSpecialCharacters([]byte("Blah!blah"), special, 2) if actual != expected { t.FailNow() } expected = true actual = containsSpecialCharacters([]byte("Blah!BLa l."), special, 2) if actual != expected { t.FailNow() } special = " " expected = true actual = containsSpecialCharacters([]byte("Blah BLa l "), special, 2) if actual != expected { t.FailNow() } } func TestLength(t *testing.T) { expected := true actual := validateLength([]byte("eightormore"), 8, -1) if actual != expected { t.FailNow() } expected = true actual = validateLength([]byte("eighttoten"), 8, 10) if actual != expected { t.FailNow() } expected = false actual = validateLength([]byte("eighttoten----"), 8, 10) if actual != expected { t.FailNow() } expected = true actual = validateLength([]byte("maxof8--"), -1, 8) if actual != expected { t.FailNow() } expected = false actual = validateLength([]byte("ei"), 8, -1) if actual != expected { t.FailNow() } }