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  }