client_dns_test.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package client
  2. import (
  3. "encoding/hex"
  4. "github.com/stretchr/testify/assert"
  5. "gopkg.in/jcmturner/gokrb5.v7/config"
  6. "gopkg.in/jcmturner/gokrb5.v7/keytab"
  7. "gopkg.in/jcmturner/gokrb5.v7/test"
  8. "gopkg.in/jcmturner/gokrb5.v7/test/testdata"
  9. "testing"
  10. )
  11. func TestResolveKDC(t *testing.T) {
  12. test.Privileged(t)
  13. //ns := os.Getenv("DNSUTILS_OVERRIDE_NS")
  14. //if ns == "" {
  15. // os.Setenv("DNSUTILS_OVERRIDE_NS", testdata.TEST_NS)
  16. //}
  17. c, _ := config.NewConfigFromString(testdata.TEST_KRB5CONF)
  18. c.LibDefaults.DNSLookupKDC = true
  19. var cl Client
  20. cl.Config = c
  21. count, res, err := cl.Config.GetKDCs(c.LibDefaults.DefaultRealm, true)
  22. if err != nil {
  23. t.Errorf("error resolving KDC via DNS TCP: %v", err)
  24. }
  25. assert.Equal(t, 5, count, "Number of SRV records not as expected: %v", res)
  26. assert.Equal(t, count, len(res), "Map size does not match: %v", res)
  27. expected := []string{
  28. "kdc.test.gokrb5:88",
  29. "kdc1a.test.gokrb5:88",
  30. "kdc2a.test.gokrb5:88",
  31. "kdc1b.test.gokrb5:88",
  32. "kdc2b.test.gokrb5:88",
  33. }
  34. for _, s := range expected {
  35. var found bool
  36. for _, v := range res {
  37. if s == v {
  38. found = true
  39. break
  40. }
  41. }
  42. assert.True(t, found, "Record %s not found in results", s)
  43. }
  44. c.LibDefaults.DNSLookupKDC = false
  45. _, res, err = cl.Config.GetKDCs(c.LibDefaults.DefaultRealm, true)
  46. if err != nil {
  47. t.Errorf("error resolving KDCs from config: %v", err)
  48. }
  49. assert.Equal(t, "127.0.0.1:88", res[1], "KDC not read from config as expected")
  50. }
  51. func TestClient_Login_DNSKDCs(t *testing.T) {
  52. test.Privileged(t)
  53. //ns := os.Getenv("DNSUTILS_OVERRIDE_NS")
  54. //if ns == "" {
  55. // os.Setenv("DNSUTILS_OVERRIDE_NS", testdata.TEST_NS)
  56. //}
  57. c, _ := config.NewConfigFromString(testdata.TEST_KRB5CONF)
  58. // Set to lookup KDCs in DNS
  59. c.LibDefaults.DNSLookupKDC = true
  60. //Blank out the KDCs to ensure they are not being used
  61. c.Realms = []config.Realm{}
  62. b, _ := hex.DecodeString(testdata.TESTUSER1_KEYTAB)
  63. kt := keytab.New()
  64. kt.Unmarshal(b)
  65. cl := NewClientWithKeytab("testuser1", "TEST.GOKRB5", kt, c)
  66. err := cl.Login()
  67. if err != nil {
  68. t.Errorf("error on logging in using DNS lookup of KDCs: %v\n", err)
  69. }
  70. }