| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530 |
- package config
- import (
- "io/ioutil"
- "os"
- "testing"
- "time"
- "github.com/stretchr/testify/assert"
- )
- const (
- krb5Conf = `
- [logging]
- default = FILE:/var/log/kerberos/krb5libs.log
- kdc = FILE:/var/log/kerberos/krb5kdc.log
- admin_server = FILE:/var/log/kerberos/kadmind.log
- [libdefaults]
- default_realm = TEST.GOKRB5 ; comment to be ignored
- dns_lookup_realm = false
- dns_lookup_kdc = false
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- ticket_lifetime = 10h ;comment to be ignored
- forwardable = yes #comment to be ignored
- default_keytab_name = FILE:/etc/krb5.keytab
- default_client_keytab_name = FILE:/home/gokrb5/client.keytab
- default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 # comment to be ignored
- [realms]
- TEST.GOKRB5 = {
- kdc = 10.80.88.88:88 #comment to be ignored
- kdc = assume.port.num ;comment to be ignored
- kdc = some.other.port:1234 # comment to be ignored
- kdc = 10.80.88.88*
- kdc = 10.1.2.3.4:88
- admin_server = 10.80.88.88:749 ; comment to be ignored
- default_domain = test.gokrb5
- }
- EXAMPLE.COM = {
- kdc = kerberos.example.com
- kdc = kerberos-1.example.com
- admin_server = kerberos.example.com
- auth_to_local = RULE:[1:$1@$0](.*@EXAMPLE.COM)s/.*//
- }
- lowercase.org = {
- kdc = kerberos.lowercase.org
- admin_server = kerberos.lowercase.org
- }
- [domain_realm]
- .test.gokrb5 = TEST.GOKRB5 #comment to be ignored
- test.gokrb5 = TEST.GOKRB5 ;comment to be ignored
-
- .example.com = EXAMPLE.COM # comment to be ignored
- hostname1.example.com = EXAMPLE.COM ; comment to be ignored
- hostname2.example.com = TEST.GOKRB5
- .testlowercase.org = lowercase.org
- [appdefaults]
- pam = {
- debug = false
- ticket_lifetime = 36000
- renew_lifetime = 36000
- forwardable = true
- krb4_convert = false
- }
- `
- krb5Conf2 = `
- [logging]
- default = FILE:/var/log/kerberos/krb5libs.log
- kdc = FILE:/var/log/kerberos/krb5kdc.log
- admin_server = FILE:/var/log/kerberos/kadmind.log
- [libdefaults]
- noaddresses = true
- default_realm = TEST.GOKRB5
- dns_lookup_realm = false
- dns_lookup_kdc = false
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- ticket_lifetime = 10h
- forwardable = yes
- default_keytab_name = FILE:/etc/krb5.keytab
- default_client_keytab_name = FILE:/home/gokrb5/client.keytab
- default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
- [domain_realm]
- .test.gokrb5 = TEST.GOKRB5
- test.gokrb5 = TEST.GOKRB5
- [appdefaults]
- pam = {
- debug = false
- ticket_lifetime = 36000
- renew_lifetime = 36000
- forwardable = true
- krb4_convert = false
- }
- [realms]
- TEST.GOKRB5 = {
- kdc = 10.80.88.88:88
- kdc = assume.port.num
- kdc = some.other.port:1234
- kdc = 10.80.88.88*
- kdc = 10.1.2.3.4:88
- admin_server = 10.80.88.88:749
- default_domain = test.gokrb5
- }
- EXAMPLE.COM = {
- kdc = kerberos.example.com
- kdc = kerberos-1.example.com
- admin_server = kerberos.example.com
- }
- `
- krb5ConfNoBlankLines = `
- [logging]
- default = FILE:/var/log/kerberos/krb5libs.log
- kdc = FILE:/var/log/kerberos/krb5kdc.log
- admin_server = FILE:/var/log/kerberos/kadmind.log
- [libdefaults]
- default_realm = TEST.GOKRB5
- dns_lookup_realm = false
- dns_lookup_kdc = false
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- ticket_lifetime = 10h
- forwardable = yes
- default_keytab_name = FILE:/etc/krb5.keytab
- default_client_keytab_name = FILE:/home/gokrb5/client.keytab
- default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
- [realms]
- TEST.GOKRB5 = {
- kdc = 10.80.88.88:88
- kdc = assume.port.num
- kdc = some.other.port:1234
- kdc = 10.80.88.88*
- kdc = 10.1.2.3.4:88
- admin_server = 10.80.88.88:749
- default_domain = test.gokrb5
- }
- EXAMPLE.COM = {
- kdc = kerberos.example.com
- kdc = kerberos-1.example.com
- admin_server = kerberos.example.com
- auth_to_local = RULE:[1:$1@$0](.*@EXAMPLE.COM)s/.*//
- }
- [domain_realm]
- .test.gokrb5 = TEST.GOKRB5
- test.gokrb5 = TEST.GOKRB5
- `
- krb5ConfTabs = `
- [logging]
- default = FILE:/var/log/kerberos/krb5libs.log
- kdc = FILE:/var/log/kerberos/krb5kdc.log
- admin_server = FILE:/var/log/kerberos/kadmind.log
- [libdefaults]
- default_realm = TEST.GOKRB5
- dns_lookup_realm = false
- dns_lookup_kdc = false
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- ticket_lifetime = 10h
- forwardable = yes
- default_keytab_name = FILE:/etc/krb5.keytab
- default_client_keytab_name = FILE:/home/gokrb5/client.keytab
- default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
- [realms]
- TEST.GOKRB5 = {
- kdc = 10.80.88.88:88
- kdc = assume.port.num
- kdc = some.other.port:1234
- kdc = 10.80.88.88*
- kdc = 10.1.2.3.4:88
- admin_server = 10.80.88.88:749
- default_domain = test.gokrb5
- }
- EXAMPLE.COM = {
- kdc = kerberos.example.com
- kdc = kerberos-1.example.com
- admin_server = kerberos.example.com
- auth_to_local = RULE:[1:$1@$0](.*@EXAMPLE.COM)s/.*//
- }
- [domain_realm]
- .test.gokrb5 = TEST.GOKRB5
- test.gokrb5 = TEST.GOKRB5
-
- .example.com = EXAMPLE.COM
- hostname1.example.com = EXAMPLE.COM
- hostname2.example.com = TEST.GOKRB5
- [appdefaults]
- pam = {
- debug = false
- ticket_lifetime = 36000
- renew_lifetime = 36000
- forwardable = true
- krb4_convert = false
- }`
- krb5ConfV4Lines = `
- [logging]
- default = FILE:/var/log/kerberos/krb5libs.log
- kdc = FILE:/var/log/kerberos/krb5kdc.log
- admin_server = FILE:/var/log/kerberos/kadmind.log
- [libdefaults]
- default_realm = TEST.GOKRB5
- dns_lookup_realm = false
- dns_lookup_kdc = false
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- #dns_lookup_kdc = true
- ;dns_lookup_kdc = true
- ticket_lifetime = 10h
- forwardable = yes
- default_keytab_name = FILE:/etc/krb5.keytab
- default_client_keytab_name = FILE:/home/gokrb5/client.keytab
- default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
- [realms]
- TEST.GOKRB5 = {
- kdc = 10.80.88.88:88
- kdc = assume.port.num
- kdc = some.other.port:1234
- kdc = 10.80.88.88*
- kdc = 10.1.2.3.4:88
- admin_server = 10.80.88.88:749
- default_domain = test.gokrb5
- v4_name_convert = {
- host = {
- rcmd = host
- }
- }
- }
- EXAMPLE.COM = {
- kdc = kerberos.example.com
- kdc = kerberos-1.example.com
- admin_server = kerberos.example.com
- auth_to_local = RULE:[1:$1@$0](.*@EXAMPLE.COM)s/.*//
- }
- [domain_realm]
- .test.gokrb5 = TEST.GOKRB5
- test.gokrb5 = TEST.GOKRB5
-
- .example.com = EXAMPLE.COM
- hostname1.example.com = EXAMPLE.COM
- hostname2.example.com = TEST.GOKRB5
- [appdefaults]
- pam = {
- debug = false
- ticket_lifetime = 36000
- renew_lifetime = 36000
- forwardable = true
- krb4_convert = false
- }
- `
- )
- func TestLoad(t *testing.T) {
- t.Parallel()
- cf, _ := ioutil.TempFile(os.TempDir(), "TEST-gokrb5-krb5.conf")
- defer os.Remove(cf.Name())
- cf.WriteString(krb5Conf)
- c, err := Load(cf.Name())
- if err != nil {
- t.Fatalf("Error loading config: %v", err)
- }
- assert.Equal(t, "TEST.GOKRB5", c.LibDefaults.DefaultRealm, "[libdefaults] default_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupRealm, "[libdefaults] dns_lookup_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupKDC, "[libdefaults] dns_lookup_kdc not as expected")
- assert.Equal(t, time.Duration(10)*time.Hour, c.LibDefaults.TicketLifetime, "[libdefaults] Ticket lifetime not as expected")
- assert.Equal(t, true, c.LibDefaults.Forwardable, "[libdefaults] forwardable not as expected")
- assert.Equal(t, "FILE:/etc/krb5.keytab", c.LibDefaults.DefaultKeytabName, "[libdefaults] default_keytab_name not as expected")
- assert.Equal(t, "FILE:/home/gokrb5/client.keytab", c.LibDefaults.DefaultClientKeytabName, "[libdefaults] default_client_keytab_name not as expected")
- assert.Equal(t, []string{"aes256-cts-hmac-sha1-96", "aes128-cts-hmac-sha1-96"}, c.LibDefaults.DefaultTktEnctypes, "[libdefaults] default_tkt_enctypes not as expected")
- assert.Equal(t, 3, len(c.Realms), "Number of realms not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.Realms[0].Realm, "[realm] realm name not as expectd")
- assert.Equal(t, []string{"10.80.88.88:749"}, c.Realms[0].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, []string{"10.80.88.88:464"}, c.Realms[0].KPasswdServer, "[realm] Kpasswd_server not as expectd")
- assert.Equal(t, "test.gokrb5", c.Realms[0].DefaultDomain, "[realm] Default_domain not as expectd")
- assert.Equal(t, []string{"10.80.88.88:88", "assume.port.num:88", "some.other.port:1234", "10.80.88.88:88"}, c.Realms[0].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com:88", "kerberos-1.example.com:88"}, c.Realms[1].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com"}, c.Realms[1].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm[".test.gokrb5"], "Domain to realm mapping not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm["test.gokrb5"], "Domain to realm mapping not as expected")
- }
- func TestLoadWithV4Lines(t *testing.T) {
- t.Parallel()
- cf, _ := ioutil.TempFile(os.TempDir(), "TEST-gokrb5-krb5.conf")
- defer os.Remove(cf.Name())
- cf.WriteString(krb5ConfV4Lines)
- c, err := Load(cf.Name())
- if err == nil {
- t.Fatalf("error should not be nil for config that includes v4 lines")
- }
- if _, ok := err.(UnsupportedDirective); !ok {
- t.Fatalf("error should be of type UnsupportedDirective: %v", err)
- }
- assert.Equal(t, "TEST.GOKRB5", c.LibDefaults.DefaultRealm, "[libdefaults] default_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupRealm, "[libdefaults] dns_lookup_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupKDC, "[libdefaults] dns_lookup_kdc not as expected")
- assert.Equal(t, time.Duration(10)*time.Hour, c.LibDefaults.TicketLifetime, "[libdefaults] Ticket lifetime not as expected")
- assert.Equal(t, true, c.LibDefaults.Forwardable, "[libdefaults] forwardable not as expected")
- assert.Equal(t, "FILE:/etc/krb5.keytab", c.LibDefaults.DefaultKeytabName, "[libdefaults] default_keytab_name not as expected")
- assert.Equal(t, "FILE:/home/gokrb5/client.keytab", c.LibDefaults.DefaultClientKeytabName, "[libdefaults] default_client_keytab_name not as expected")
- assert.Equal(t, []string{"aes256-cts-hmac-sha1-96", "aes128-cts-hmac-sha1-96"}, c.LibDefaults.DefaultTktEnctypes, "[libdefaults] default_tkt_enctypes not as expected")
- assert.Equal(t, 2, len(c.Realms), "Number of realms not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.Realms[0].Realm, "[realm] realm name not as expectd")
- assert.Equal(t, []string{"10.80.88.88:749"}, c.Realms[0].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, []string{"10.80.88.88:464"}, c.Realms[0].KPasswdServer, "[realm] Kpasswd_server not as expectd")
- assert.Equal(t, "test.gokrb5", c.Realms[0].DefaultDomain, "[realm] Default_domain not as expectd")
- assert.Equal(t, []string{"10.80.88.88:88", "assume.port.num:88", "some.other.port:1234", "10.80.88.88:88"}, c.Realms[0].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com:88", "kerberos-1.example.com:88"}, c.Realms[1].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com"}, c.Realms[1].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm[".test.gokrb5"], "Domain to realm mapping not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm["test.gokrb5"], "Domain to realm mapping not as expected")
- }
- func TestLoad2(t *testing.T) {
- t.Parallel()
- c, err := NewConfigFromString(krb5Conf2)
- if err != nil {
- t.Fatalf("Error loading config: %v", err)
- }
- assert.Equal(t, "TEST.GOKRB5", c.LibDefaults.DefaultRealm, "[libdefaults] default_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupRealm, "[libdefaults] dns_lookup_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupKDC, "[libdefaults] dns_lookup_kdc not as expected")
- assert.Equal(t, time.Duration(10)*time.Hour, c.LibDefaults.TicketLifetime, "[libdefaults] Ticket lifetime not as expected")
- assert.Equal(t, true, c.LibDefaults.Forwardable, "[libdefaults] forwardable not as expected")
- assert.Equal(t, "FILE:/etc/krb5.keytab", c.LibDefaults.DefaultKeytabName, "[libdefaults] default_keytab_name not as expected")
- assert.Equal(t, "FILE:/home/gokrb5/client.keytab", c.LibDefaults.DefaultClientKeytabName, "[libdefaults] default_client_keytab_name not as expected")
- assert.Equal(t, []string{"aes256-cts-hmac-sha1-96", "aes128-cts-hmac-sha1-96"}, c.LibDefaults.DefaultTktEnctypes, "[libdefaults] default_tkt_enctypes not as expected")
- assert.Equal(t, 2, len(c.Realms), "Number of realms not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.Realms[0].Realm, "[realm] realm name not as expectd")
- assert.Equal(t, []string{"10.80.88.88:749"}, c.Realms[0].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, []string{"10.80.88.88:464"}, c.Realms[0].KPasswdServer, "[realm] Kpasswd_server not as expectd")
- assert.Equal(t, "test.gokrb5", c.Realms[0].DefaultDomain, "[realm] Default_domain not as expectd")
- assert.Equal(t, []string{"10.80.88.88:88", "assume.port.num:88", "some.other.port:1234", "10.80.88.88:88"}, c.Realms[0].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com:88", "kerberos-1.example.com:88"}, c.Realms[1].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com"}, c.Realms[1].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm[".test.gokrb5"], "Domain to realm mapping not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm["test.gokrb5"], "Domain to realm mapping not as expected")
- assert.True(t, c.LibDefaults.NoAddresses, "No address not set as true")
- }
- func TestLoadNoBlankLines(t *testing.T) {
- t.Parallel()
- c, err := NewConfigFromString(krb5ConfNoBlankLines)
- if err != nil {
- t.Fatalf("Error loading config: %v", err)
- }
- assert.Equal(t, "TEST.GOKRB5", c.LibDefaults.DefaultRealm, "[libdefaults] default_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupRealm, "[libdefaults] dns_lookup_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupKDC, "[libdefaults] dns_lookup_kdc not as expected")
- assert.Equal(t, time.Duration(10)*time.Hour, c.LibDefaults.TicketLifetime, "[libdefaults] Ticket lifetime not as expected")
- assert.Equal(t, true, c.LibDefaults.Forwardable, "[libdefaults] forwardable not as expected")
- assert.Equal(t, "FILE:/etc/krb5.keytab", c.LibDefaults.DefaultKeytabName, "[libdefaults] default_keytab_name not as expected")
- assert.Equal(t, "FILE:/home/gokrb5/client.keytab", c.LibDefaults.DefaultClientKeytabName, "[libdefaults] default_client_keytab_name not as expected")
- assert.Equal(t, []string{"aes256-cts-hmac-sha1-96", "aes128-cts-hmac-sha1-96"}, c.LibDefaults.DefaultTktEnctypes, "[libdefaults] default_tkt_enctypes not as expected")
- assert.Equal(t, 2, len(c.Realms), "Number of realms not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.Realms[0].Realm, "[realm] realm name not as expectd")
- assert.Equal(t, []string{"10.80.88.88:749"}, c.Realms[0].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, []string{"10.80.88.88:464"}, c.Realms[0].KPasswdServer, "[realm] Kpasswd_server not as expectd")
- assert.Equal(t, "test.gokrb5", c.Realms[0].DefaultDomain, "[realm] Default_domain not as expectd")
- assert.Equal(t, []string{"10.80.88.88:88", "assume.port.num:88", "some.other.port:1234", "10.80.88.88:88"}, c.Realms[0].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com:88", "kerberos-1.example.com:88"}, c.Realms[1].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com"}, c.Realms[1].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm[".test.gokrb5"], "Domain to realm mapping not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm["test.gokrb5"], "Domain to realm mapping not as expected")
- }
- func TestLoadTabs(t *testing.T) {
- t.Parallel()
- cf, _ := ioutil.TempFile(os.TempDir(), "TEST-gokrb5-krb5.conf")
- defer os.Remove(cf.Name())
- cf.WriteString(krb5ConfTabs)
- c, err := Load(cf.Name())
- if err != nil {
- t.Fatalf("Error loading config: %v", err)
- }
- assert.Equal(t, "TEST.GOKRB5", c.LibDefaults.DefaultRealm, "[libdefaults] default_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupRealm, "[libdefaults] dns_lookup_realm not as expected")
- assert.Equal(t, false, c.LibDefaults.DNSLookupKDC, "[libdefaults] dns_lookup_kdc not as expected")
- assert.Equal(t, time.Duration(10)*time.Hour, c.LibDefaults.TicketLifetime, "[libdefaults] Ticket lifetime not as expected")
- assert.Equal(t, true, c.LibDefaults.Forwardable, "[libdefaults] forwardable not as expected")
- assert.Equal(t, "FILE:/etc/krb5.keytab", c.LibDefaults.DefaultKeytabName, "[libdefaults] default_keytab_name not as expected")
- assert.Equal(t, "FILE:/home/gokrb5/client.keytab", c.LibDefaults.DefaultClientKeytabName, "[libdefaults] default_client_keytab_name not as expected")
- assert.Equal(t, []string{"aes256-cts-hmac-sha1-96", "aes128-cts-hmac-sha1-96"}, c.LibDefaults.DefaultTktEnctypes, "[libdefaults] default_tkt_enctypes not as expected")
- assert.Equal(t, 2, len(c.Realms), "Number of realms not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.Realms[0].Realm, "[realm] realm name not as expectd")
- assert.Equal(t, []string{"10.80.88.88:749"}, c.Realms[0].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, []string{"10.80.88.88:464"}, c.Realms[0].KPasswdServer, "[realm] Kpasswd_server not as expectd")
- assert.Equal(t, "test.gokrb5", c.Realms[0].DefaultDomain, "[realm] Default_domain not as expectd")
- assert.Equal(t, []string{"10.80.88.88:88", "assume.port.num:88", "some.other.port:1234", "10.80.88.88:88"}, c.Realms[0].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com:88", "kerberos-1.example.com:88"}, c.Realms[1].KDC, "[realm] Kdc not as expectd")
- assert.Equal(t, []string{"kerberos.example.com"}, c.Realms[1].AdminServer, "[realm] Admin_server not as expectd")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm[".test.gokrb5"], "Domain to realm mapping not as expected")
- assert.Equal(t, "TEST.GOKRB5", c.DomainRealm["test.gokrb5"], "Domain to realm mapping not as expected")
- }
- func TestParseDuration(t *testing.T) {
- t.Parallel()
- // https://web.mit.edu/kerberos/krb5-1.12/doc/basic/date_format.html#duration
- hms, _ := time.ParseDuration("12h30m15s")
- hm, _ := time.ParseDuration("12h30m")
- h, _ := time.ParseDuration("12h")
- var tests = []struct {
- timeStr string
- duration time.Duration
- }{
- {"100", time.Duration(100) * time.Second},
- {"12:30", hm},
- {"12:30:15", hms},
- {"1d12h30m15s", time.Duration(24)*time.Hour + hms},
- {"1d12h30m", time.Duration(24)*time.Hour + hm},
- {"1d12h", time.Duration(24)*time.Hour + h},
- {"1d", time.Duration(24) * time.Hour},
- }
- for _, test := range tests {
- d, err := parseDuration(test.timeStr)
- if err != nil {
- t.Errorf("error parsing %s: %v", test.timeStr, err)
- }
- assert.Equal(t, test.duration, d, "Duration not as expected for: "+test.timeStr)
- }
- }
- func TestResolveRealm(t *testing.T) {
- t.Parallel()
- c, err := NewConfigFromString(krb5Conf)
- if err != nil {
- t.Fatalf("Error loading config: %v", err)
- }
- tests := []struct {
- domainName string
- want string
- }{
- {"unknown.com", "TEST.GOKRB5"},
- {"hostname1.example.com", "EXAMPLE.COM"},
- {"hostname2.example.com", "TEST.GOKRB5"},
- {"one.two.three.example.com", "EXAMPLE.COM"},
- {".test.gokrb5", "TEST.GOKRB5"},
- {"foo.testlowercase.org", "lowercase.org"},
- }
- for _, tt := range tests {
- t.Run(tt.domainName, func(t *testing.T) {
- if got := c.ResolveRealm(tt.domainName); got != tt.want {
- t.Errorf("config.ResolveRealm() = %v, want %v", got, tt.want)
- }
- })
- }
- }
|