token_test.go 998 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package token_test
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/go-test/deep"
  6. "github.com/porter-dev/porter/internal/auth/token"
  7. )
  8. func TestGetAndEncodeTokenForUser(t *testing.T) {
  9. conf := &token.TokenGeneratorConf{
  10. TokenSecret: "fakesecret",
  11. }
  12. tok, err := token.GetTokenForUser(1)
  13. if err != nil {
  14. t.Fatalf("%v\n", err)
  15. }
  16. tokString, err := tok.EncodeToken(conf)
  17. if err != nil {
  18. t.Fatalf("%v\n", err)
  19. }
  20. // decode the token again and compare
  21. expToken := &token.Token{
  22. SubKind: token.User,
  23. Sub: "1",
  24. ProjectID: 1,
  25. IBy: 1,
  26. }
  27. gotToken, err := token.GetTokenFromEncoded(tokString, conf)
  28. if err != nil {
  29. t.Fatalf("%v\n", err)
  30. }
  31. if now := time.Now(); now.Sub(*gotToken.IAt) < 5 && now.Sub(*gotToken.IAt) >= 0 {
  32. t.Fatalf("time not within threshold: issued at %d, current time %d\n", gotToken.IAt.Unix(), now.Unix())
  33. }
  34. gotToken.IAt = nil
  35. if diff := deep.Equal(expToken, gotToken); diff != nil {
  36. t.Errorf("tokens not equal:")
  37. t.Error(diff)
  38. }
  39. }