KRBError_test.go 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package messages
  2. import (
  3. "encoding/hex"
  4. "testing"
  5. "time"
  6. "github.com/jcmturner/gokrb5/v8/iana"
  7. "github.com/jcmturner/gokrb5/v8/iana/errorcode"
  8. "github.com/jcmturner/gokrb5/v8/iana/msgtype"
  9. "github.com/jcmturner/gokrb5/v8/iana/nametype"
  10. "github.com/jcmturner/gokrb5/v8/test/testdata"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestUnmarshalMarshalKRBError(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. b2, err := a.Marshal()
  44. if err != nil {
  45. t.Errorf("error marshalling KRBError: %v", err)
  46. }
  47. assert.Equal(t, b, b2, "marshalled bytes not as expected")
  48. }
  49. func TestUnmarshalMarshalKRBError_optionalsNULL(t *testing.T) {
  50. t.Parallel()
  51. var a KRBError
  52. b, err := hex.DecodeString(testdata.MarshaledKRB5errorOptionalsNULL)
  53. if err != nil {
  54. t.Fatalf("Test vector read error: %v", err)
  55. }
  56. err = a.Unmarshal(b)
  57. if err != nil {
  58. t.Fatalf("Unmarshal error: %v", err)
  59. }
  60. //Parse the test time value into a time.Time type
  61. tt, _ := time.Parse(testdata.TEST_TIME_FORMAT, testdata.TEST_TIME)
  62. assert.Equal(t, iana.PVNO, a.PVNO, "PVNO is not as expected")
  63. assert.Equal(t, msgtype.KRB_ERROR, a.MsgType, "Message type is not as expected")
  64. assert.Equal(t, 123456, a.Cusec, "Client microseconds not as expected")
  65. assert.Equal(t, tt, a.STime, "STime not as expected")
  66. assert.Equal(t, 123456, a.Susec, "Service microseconds not as expected")
  67. assert.Equal(t, errorcode.KRB_ERR_GENERIC, a.ErrorCode, "Error code not as expected")
  68. assert.Equal(t, testdata.TEST_REALM, a.Realm, "Realm not as expected")
  69. assert.Equal(t, nametype.KRB_NT_PRINCIPAL, a.SName.NameType, "Ticket SName NameType not as expected")
  70. assert.Equal(t, len(testdata.TEST_PRINCIPALNAME_NAMESTRING), len(a.SName.NameString), "Ticket SName does not have the expected number of NameStrings")
  71. assert.Equal(t, testdata.TEST_PRINCIPALNAME_NAMESTRING, a.SName.NameString, "Ticket SName name string entries not as expected")
  72. b2, err := a.Marshal()
  73. if err != nil {
  74. t.Errorf("error marshalling KRBError: %v", err)
  75. }
  76. assert.Equal(t, b, b2, "marshalled bytes not as expected")
  77. }