1package jwt_test 2 3import ( 4 "github.com/form3tech-oss/jwt-go" 5 "strings" 6 "testing" 7) 8 9var noneTestData = []struct { 10 name string 11 tokenString string 12 alg string 13 key interface{} 14 claims map[string]interface{} 15 valid bool 16}{ 17 { 18 "Basic", 19 "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.", 20 "none", 21 jwt.UnsafeAllowNoneSignatureType, 22 map[string]interface{}{"foo": "bar"}, 23 true, 24 }, 25 { 26 "Basic - no key", 27 "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.", 28 "none", 29 nil, 30 map[string]interface{}{"foo": "bar"}, 31 false, 32 }, 33 { 34 "Signed", 35 "eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIifQ.W-jEzRfBigtCWsinvVVuldiuilzVdU5ty0MvpLaSaqK9PlAWWlDQ1VIQ_qSKzwL5IXaZkvZFJXT3yL3n7OUVu7zCNJzdwznbC8Z-b0z2lYvcklJYi2VOFRcGbJtXUqgjk2oGsiqUMUMOLP70TTefkpsgqDxbRh9CDUfpOJgW-dU7cmgaoswe3wjUAUi6B6G2YEaiuXC0XScQYSYVKIzgKXJV8Zw-7AN_DBUI4GkTpsvQ9fVVjZM9csQiEXhYekyrKu1nu_POpQonGd8yqkIyXPECNmmqH5jH4sFiF67XhD7_JpkvLziBpI-uh86evBUadmHhb9Otqw3uV3NTaXLzJw", 36 "none", 37 jwt.UnsafeAllowNoneSignatureType, 38 map[string]interface{}{"foo": "bar"}, 39 false, 40 }, 41} 42 43func TestNoneVerify(t *testing.T) { 44 for _, data := range noneTestData { 45 parts := strings.Split(data.tokenString, ".") 46 47 method := jwt.GetSigningMethod(data.alg) 48 err := method.Verify(strings.Join(parts[0:2], "."), parts[2], data.key) 49 if data.valid && err != nil { 50 t.Errorf("[%v] Error while verifying key: %v", data.name, err) 51 } 52 if !data.valid && err == nil { 53 t.Errorf("[%v] Invalid key passed validation", data.name) 54 } 55 } 56} 57 58func TestNoneSign(t *testing.T) { 59 for _, data := range noneTestData { 60 if data.valid { 61 parts := strings.Split(data.tokenString, ".") 62 method := jwt.GetSigningMethod(data.alg) 63 sig, err := method.Sign(strings.Join(parts[0:2], "."), data.key) 64 if err != nil { 65 t.Errorf("[%v] Error signing token: %v", data.name, err) 66 } 67 if sig != parts[2] { 68 t.Errorf("[%v] Incorrect signature.\nwas:\n%v\nexpecting:\n%v", data.name, sig, parts[2]) 69 } 70 } 71 } 72} 73