KRBError_test.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package messages
  2. import (
  3. "encoding/hex"
  4. "github.com/jcmturner/gokrb5/iana/msgtype"
  5. "github.com/jcmturner/gokrb5/testdata"
  6. "github.com/stretchr/testify/assert"
  7. "testing"
  8. "time"
  9. )
  10. func TestUnmarshalKRBError(t *testing.T) {
  11. var a KRBError
  12. v := "encode_krb5_error"
  13. b, err := hex.DecodeString(testdata.TestVectors[v])
  14. if err != nil {
  15. t.Fatalf("Test vector read error of %s: %v\n", v, err)
  16. }
  17. err = a.Unmarshal(b)
  18. if err != nil {
  19. t.Fatalf("Unmarshal error of %s: %v\n", v, err)
  20. }
  21. //Parse the test time value into a time.Time type
  22. tt, _ := time.Parse(testdata.TEST_TIME_FORMAT, testdata.TEST_TIME)
  23. assert.Equal(t, testdata.TEST_KVNO, a.PVNO, "PVNO is not as expected")
  24. assert.Equal(t, msgtype.KRB_ERROR, a.MsgType, "Message type is not as expected")
  25. assert.Equal(t, tt, a.CTime, "CTime not as expected")
  26. assert.Equal(t, 123456, a.Cusec, "Client microseconds not as expected")
  27. assert.Equal(t, tt, a.STime, "STime not as expected")
  28. assert.Equal(t, 123456, a.Susec, "Service microseconds not as expected")
  29. assert.Equal(t, 60, a.ErrorCode, "Error code not as expected")
  30. assert.Equal(t, testdata.TEST_REALM, a.CRealm, "CRealm not as expected")
  31. assert.Equal(t, testdata.TEST_PRINCIPALNAME_NAMETYPE, a.CName.NameType, "CName NameType not as expected")
  32. assert.Equal(t, len(testdata.TEST_PRINCIPALNAME_NAMESTRING), len(a.CName.NameString), "CName does not have the expected number of NameStrings")
  33. assert.Equal(t, testdata.TEST_PRINCIPALNAME_NAMESTRING, a.CName.NameString, "CName entries not as expected")
  34. assert.Equal(t, testdata.TEST_REALM, a.Realm, "Realm not as expected")
  35. assert.Equal(t, testdata.TEST_PRINCIPALNAME_NAMETYPE, a.SName.NameType, "Ticket SName NameType not as expected")
  36. assert.Equal(t, len(testdata.TEST_PRINCIPALNAME_NAMESTRING), len(a.SName.NameString), "Ticket SName does not have the expected number of NameStrings")
  37. assert.Equal(t, testdata.TEST_PRINCIPALNAME_NAMESTRING, a.SName.NameString, "Ticket SName name string entries not as expected")
  38. assert.Equal(t, "krb5data", a.EText, "EText not as expected")
  39. assert.Equal(t, []byte("krb5data"), a.EData, "EData not as expected")
  40. }
  41. func TestUnmarshalKRBError_optionalsNULL(t *testing.T) {
  42. var a KRBError
  43. v := "encode_krb5_error(optionalsNULL)"
  44. b, err := hex.DecodeString(testdata.TestVectors[v])
  45. if err != nil {
  46. t.Fatalf("Test vector read error of %s: %v\n", v, err)
  47. }
  48. err = a.Unmarshal(b)
  49. if err != nil {
  50. t.Fatalf("Unmarshal error of %s: %v\n", v, err)
  51. }
  52. //Parse the test time value into a time.Time type
  53. tt, _ := time.Parse(testdata.TEST_TIME_FORMAT, testdata.TEST_TIME)
  54. assert.Equal(t, testdata.TEST_KVNO, a.PVNO, "PVNO is not as expected")
  55. assert.Equal(t, msgtype.KRB_ERROR, a.MsgType, "Message type is not as expected")
  56. assert.Equal(t, 123456, a.Cusec, "Client microseconds not as expected")
  57. assert.Equal(t, tt, a.STime, "STime not as expected")
  58. assert.Equal(t, 123456, a.Susec, "Service microseconds not as expected")
  59. assert.Equal(t, 60, a.ErrorCode, "Error code not as expected")
  60. assert.Equal(t, testdata.TEST_REALM, a.Realm, "Realm not as expected")
  61. assert.Equal(t, testdata.TEST_PRINCIPALNAME_NAMETYPE, a.SName.NameType, "Ticket SName NameType not as expected")
  62. assert.Equal(t, len(testdata.TEST_PRINCIPALNAME_NAMESTRING), len(a.SName.NameString), "Ticket SName does not have the expected number of NameStrings")
  63. assert.Equal(t, testdata.TEST_PRINCIPALNAME_NAMESTRING, a.SName.NameString, "Ticket SName name string entries not as expected")
  64. }