# Verifies that the configuration suggested in (non-deprecated) example values
# will result in the expected output.
import ../make-test-python.nix (
{ pkgs, ... }:
{
name = "krb5-with-example-config";
meta = with pkgs.lib.maintainers; {
maintainers = [
eqyiel
dblsaiko
];
};
nodes.machine =
security.krb5 = {
enable = true;
package = pkgs.krb5;
settings = {
includedir = [
"/etc/krb5.conf.d"
include = [
"/etc/krb5-extra.conf"
libdefaults = {
default_realm = "ATHENA.MIT.EDU";
realms = {
"ATHENA.MIT.EDU" = {
admin_server = "athena.mit.edu";
kdc = [
"athena01.mit.edu"
"athena02.mit.edu"
domain_realm = {
"example.com" = "EXAMPLE.COM";
".example.com" = "EXAMPLE.COM";
capaths = {
"EXAMPLE.COM" = ".";
"EXAMPLE.COM" = {
"ATHENA.MIT.EDU" = ".";
appdefaults = {
pam = {
debug = false;
ticket_lifetime = 36000;
renew_lifetime = 36000;
max_timeout = 30;
timeout_shift = 2;
initial_timeout = 1;
plugins.ccselect.disable = "k5identity";
logging = {
kdc = "SYSLOG:NOTICE";
admin_server = "SYSLOG:NOTICE";
default = "SYSLOG:NOTICE";
testScript =
let
snapshot = pkgs.writeText "krb5-with-example-config.conf" ''
[appdefaults]
debug = false
initial_timeout = 1
max_timeout = 30
renew_lifetime = 36000
ticket_lifetime = 36000
timeout_shift = 2
}
[capaths]
ATHENA.MIT.EDU = {
EXAMPLE.COM = .
EXAMPLE.COM = {
ATHENA.MIT.EDU = .
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[libdefaults]
default_realm = ATHENA.MIT.EDU
[logging]
admin_server = SYSLOG:NOTICE
default = SYSLOG:NOTICE
kdc = SYSLOG:NOTICE
[plugins]
ccselect = {
disable = k5identity
[realms]
admin_server = athena.mit.edu
kdc = athena01.mit.edu
kdc = athena02.mit.edu
include /etc/krb5-extra.conf
includedir /etc/krb5.conf.d
'';
in
''
machine.succeed(
"diff /etc/krb5.conf ${snapshot}"
)