Sharp.Augeas/Sharp.Augeas.Test/lens/tests/test_trapperkeeper.aug

142 lines
4.1 KiB
Plaintext

module Test_Trapperkeeper =
(* Variable: config *)
let config = "
# This is a comment
webserver: {
bar: {
# A comment
host: localhost
port= 9000
default-server: true
}
foo: {
host: localhost
port = 10000
}
}
jruby-puppet: {
# This setting determines where JRuby will look for gems. It is also
# used by the `puppetserver gem` command line tool.
gem-home: /var/lib/puppet/jruby-gems
# (optional) path to puppet conf dir; if not specified, will use the puppet default
master-conf-dir: /etc/puppet
# (optional) path to puppet var dir; if not specified, will use the puppet default
master-var-dir: /var/lib/puppet
# (optional) maximum number of JRuby instances to allow; defaults to <num-cpus>+2
#max-active-instances: 1
}
# CA-related settings
certificate-authority: {
# settings for the certificate_status HTTP endpoint
certificate-status: {
# this setting contains a list of client certnames who are whitelisted to
# have access to the certificate_status endpoint. Any requests made to
# this endpoint that do not present a valid client cert mentioned in
# this list will be denied access.
client-whitelist: []
}
}
os-settings: {
ruby-load-path: [/usr/lib/ruby/vendor_ruby, /home/foo/ruby ]
}
\n"
(* Test: Trapperkeeper.lns
Test full config file *)
test Trapperkeeper.lns get config =
{ }
{ "#comment" = "This is a comment" }
{ "@hash" = "webserver"
{ "@hash" = "bar"
{ "#comment" = "A comment" }
{ "@simple" = "host" { "@value" = "localhost" } }
{ "@simple" = "port" { "@value" = "9000" } }
{ "@simple" = "default-server" { "@value" = "true" } }
}
{ }
{ "@hash" = "foo"
{ "@simple" = "host" { "@value" = "localhost" } }
{ "@simple" = "port" { "@value" = "10000" } }
}
}
{ }
{ "@hash" = "jruby-puppet"
{ "#comment" = "This setting determines where JRuby will look for gems. It is also" }
{ "#comment" = "used by the `puppetserver gem` command line tool." }
{ "@simple" = "gem-home" { "@value" = "/var/lib/puppet/jruby-gems" } }
{ }
{ "#comment" = "(optional) path to puppet conf dir; if not specified, will use the puppet default" }
{ "@simple" = "master-conf-dir" { "@value" = "/etc/puppet" } }
{ }
{ "#comment" = "(optional) path to puppet var dir; if not specified, will use the puppet default" }
{ "@simple" = "master-var-dir" { "@value" = "/var/lib/puppet" } }
{ }
{ "#comment" = "(optional) maximum number of JRuby instances to allow; defaults to <num-cpus>+2" }
{ "#comment" = "max-active-instances: 1" }
}
{ }
{ }
{ "#comment" = "CA-related settings" }
{ "@hash" = "certificate-authority"
{ "#comment" = "settings for the certificate_status HTTP endpoint" }
{ "@hash" = "certificate-status"
{ "#comment" = "this setting contains a list of client certnames who are whitelisted to" }
{ "#comment" = "have access to the certificate_status endpoint. Any requests made to" }
{ "#comment" = "this endpoint that do not present a valid client cert mentioned in" }
{ "#comment" = "this list will be denied access." }
{ "@array" = "client-whitelist" }
}
}
{ }
{ "@hash" = "os-settings"
{ "@array" = "ruby-load-path"
{ "1" = "/usr/lib/ruby/vendor_ruby" }
{ "2" = "/home/foo/ruby" }
}
}
{ }
(* Test: Trapperkeeper.lns
Should parse an empty file *)
test Trapperkeeper.lns get "\n" = {}
(* Test: Trapperkeeper.lns
Values can be quoted *)
test Trapperkeeper.lns get "os-settings: {
ruby-load-paths: [\"/usr/lib/ruby/site_ruby/1.8\"]
}\n" =
{ "@hash" = "os-settings"
{ "@array" = "ruby-load-paths"
{ "1" = "/usr/lib/ruby/site_ruby/1.8" }
}
}
(* Test: Trapperkeeper.lns
Keys can be quoted *)
test Trapperkeeper.lns get "test: {
\"x\": true
}\n" =
{ "@hash" = "test"
{ "@simple" = "x" { "@value" = "true" } } }
(* Test: Trapperkeeper.lns
Keys can contain / (GH #7)
*)
test Trapperkeeper.lns get "test: {
\"x/y\" : z
}\n" =
{ "@hash" = "test"
{ "@simple" = "x/y" { "@value" = "z" } } }