| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package config
- import (
- "testing"
- "github.com/jcmturner/gokrb5/v8/test"
- "github.com/jcmturner/gokrb5/v8/test/testdata"
- "github.com/stretchr/testify/assert"
- )
- func TestConfig_GetKDCsUsesConfiguredKDC(t *testing.T) {
- t.Parallel()
- // This test is meant to cover the fix for
- // https://github.com/jcmturner/gokrb5/issues/332
- krb5ConfWithKDCAndDNSLookupKDC := `
- [libdefaults]
- dns_lookup_kdc = true
- [realms]
- TEST.GOKRB5 = {
- kdc = kdc2b.test.gokrb5:88
- }
- `
- c, err := NewFromString(krb5ConfWithKDCAndDNSLookupKDC)
- if err != nil {
- t.Fatalf("Error loading config: %v", err)
- }
- count, kdcs, err := c.GetKDCs("TEST.GOKRB5", false)
- if err != nil {
- t.Fatal(err)
- }
- if count != 1 {
- t.Fatalf("expected 1 but received %d", count)
- }
- if kdcs[1] != "kdc2b.test.gokrb5:88" {
- t.Fatalf("expected kdc2b.test.gokrb5:88 but received %s", kdcs[1])
- }
- }
- func TestResolveKDC(t *testing.T) {
- test.Privileged(t)
- c, err := NewFromString(testdata.KRB5_CONF)
- if err != nil {
- t.Fatal(err)
- }
- // Store the original value for realms since we'll use them in our
- // second test.
- originalRealms := c.Realms
- // For our first test, let's check that we discover the expected
- // KDCs when they're not provided and we should be looking them up.
- c.LibDefaults.DNSLookupKDC = true
- c.Realms = make([]Realm, 0)
- count, res, err := c.GetKDCs(c.LibDefaults.DefaultRealm, true)
- if err != nil {
- t.Errorf("error resolving KDC via DNS TCP: %v", err)
- }
- assert.Equal(t, 5, count, "Number of SRV records not as expected: %v", res)
- assert.Equal(t, count, len(res), "Map size does not match: %v", res)
- expected := []string{
- "kdc.test.gokrb5:88",
- "kdc1a.test.gokrb5:88",
- "kdc2a.test.gokrb5:88",
- "kdc1b.test.gokrb5:88",
- "kdc2b.test.gokrb5:88",
- }
- for _, s := range expected {
- var found bool
- for _, v := range res {
- if s == v {
- found = true
- break
- }
- }
- assert.True(t, found, "Record %s not found in results", s)
- }
- // For our second check, verify that when we shouldn't be looking them up,
- // we get the expected value.
- c.LibDefaults.DNSLookupKDC = false
- c.Realms = originalRealms
- _, res, err = c.GetKDCs(c.LibDefaults.DefaultRealm, true)
- if err != nil {
- t.Errorf("error resolving KDCs from config: %v", err)
- }
- assert.Equal(t, "127.0.0.1:88", res[1], "KDC not read from config as expected")
- }
|