package otp import ( "testing" ) func TestFromURL(t *testing.T) { errorUrls := map[string]string{ "garbage": ":", "badScheme": "http://hotp/example.com:test?counter=0&digits=6&issuer=example.com&secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ", "badKey": "otpauth://motp/example.com:test?counter=0&digits=6&issuer=example.com&secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ", "noSecret": "otpauth://hotp/example.com:test?counter=0&digits=6&issuer=example.com", } otherUrls := map[string]string{ "badDigits": "otpauth://hotp/example.com:test?counter=0&digits=six&issuer=example.com&secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ", } for name, url := range errorUrls { _, err := FromURL(url) if err == nil { t.Logf("Error expected for %s url - %s", name, url) t.FailNow() } } for name, url := range otherUrls { _, err := FromURL(url) if err != nil { t.Logf("Error not expected for %s url - %s", name, url) t.Logf("\t %s", err.Error()) t.FailNow() } } }