git.sr.ht/~pingoo/stdx@v0.0.0-20240218134121-094174641f6e/statelesstoken/stateless_test.go (about) 1 package statelesstoken_test 2 3 import ( 4 "strconv" 5 "testing" 6 "time" 7 8 "git.sr.ht/~pingoo/stdx/crypto" 9 "git.sr.ht/~pingoo/stdx/statelesstoken" 10 "git.sr.ht/~pingoo/stdx/uuid" 11 ) 12 13 func TestParseStateless(t *testing.T) { 14 key, err := crypto.NewAEADKey() 15 if err != nil { 16 t.Errorf("Generating Key") 17 } 18 19 for i := 0; i < 2000; i += 1 { 20 data := strconv.Itoa(i) 21 newToken, err := statelesstoken.New(key, uuid.NewV4(), time.Now().Add(24*time.Hour), data) 22 if err != nil { 23 t.Errorf("Generating stateless token: %v", err) 24 } 25 parsedToken, err := statelesstoken.ParseStateless(newToken.String()) 26 if err != nil { 27 t.Errorf("parsing statelesstoken: %v", err) 28 } 29 30 if parsedToken.Version() != newToken.Version() { 31 t.Errorf("token.Version (%v) != parsedToken.Version (%v)", newToken.Version(), parsedToken.Version()) 32 } 33 34 if !parsedToken.ID().Equal(newToken.ID()) { 35 t.Errorf("token.ID (%v) != parsedToken.ID (%v)", newToken.ID().String(), parsedToken.ID().String()) 36 } 37 38 if parsedToken.String() != newToken.String() { 39 t.Errorf("token.String() (%v) != parsedToken.String() (%v)", newToken.String(), parsedToken.String()) 40 } 41 42 if parsedToken.Data() != newToken.Data() { 43 t.Errorf("token.Data() (%v) != parsedToken.Data() (%v)", newToken.Data(), parsedToken.Data()) 44 } 45 46 if parsedToken.Data() != data { 47 t.Errorf("token.Data() (%v) != data (%v)", newToken.Data(), data) 48 } 49 } 50 } 51 52 func TestVerifyStateless(t *testing.T) { 53 wrongKey, err := crypto.NewAEADKey() 54 if err != nil { 55 t.Errorf("Generating wrong Key") 56 } 57 58 for i := 0; i < 2000; i += 1 { 59 key, err := crypto.NewAEADKey() 60 if err != nil { 61 t.Errorf("Generating Key") 62 } 63 64 data := strconv.Itoa(i) 65 newToken, err := statelesstoken.New(key, uuid.NewV4(), time.Now().Add(24*time.Hour), data) 66 if err != nil { 67 t.Errorf("Generating stateless token: %v", err) 68 } 69 70 err = newToken.Verify(key) 71 if err != nil { 72 t.Errorf("Verifying stateless token: %v", err) 73 } 74 75 err = newToken.Verify(wrongKey) 76 if err == nil { 77 t.Errorf("Accepting wrong key: %v", err) 78 } 79 } 80 }