// Copyright (C) 2018 Marius Schellenberger package jwt import ( "errors" "testing" "time" ) func TestValidate(t *testing.T) { jwt := New(time.Second, true) token := NewToken(map[string]interface{}{ "sub": "1234567890", "name": "John Doe", "admin": true, "fizz": "buzz", }, nil) err := jwt.Sign(token) if err != nil { t.Error(err) } _, err = DecodeToken("") if err == nil { t.Error(errors.New("token is empty")) } nt, err := DecodeToken(token.String()) if err != nil { t.Error(err) } err = jwt.Verify(nt) if err != nil { t.Error(err) } time.Sleep(time.Second * 2) err = jwt.Verify(nt) if err == nil { t.Error(errors.New("token should be expired")) } err = jwt.Invalidate(nt) if err != nil { t.Error(err) } err = jwt.Invalidate(nt) if err == nil { t.Error(errors.New("double invalidate")) } err = jwt.Verify(nt) if err == nil { t.Error(errors.New("token should be blacklisted")) } err = jwt.Stop() if err != nil { t.Error(err) } }