KRBError_test.go 3.5 KB

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