Expect(err).To(MatchError(expectedError))
			},

			Entry("missing Database Host", `database configuration: "host" is required`, func() { conf.Database.Host = "" }),
			Entry("missing Database Port", `database configuration: "port" is required`, func() { conf.Database.Port = 0 }),
			Entry("missing Database Username", `database configuration: "username" is required`, func() { conf.Database.Username = "" }),
			Entry("missing Database Name", `database configuration: "name" is required`, func() { conf.Database.Name = "" }),
			Entry("missing Database SSLMode", `database configuration: "ssl_mode" is required`, func() { conf.Database.SSLMode = "" }),
			Entry("missing ListenHost", `missing required config: "listen_host"`, func() { conf.ListenHost = "" }),
			Entry("missing ListenPort", `missing required config: "listen_port"`, func() { conf.ListenPort = 0 }),
			Entry("missing LocalSubnet", `missing required config: "local_subnet"`, func() { conf.LocalSubnet = "" }),
			Entry("missing OverlayNetwork", `missing required config: "overlay_network"`, func() { conf.OverlayNetwork = "" }),
			Entry("missing SandboxDir", `missing required config: "sandbox_dir"`, func() { conf.SandboxDir = "" }),
			Entry("missing HostAddress", `missing required config: "host_address"`, func() { conf.HostAddress = "" }),
			Entry("missing OverlayDNSAddress", `missing required config: "overlay_dns_address"`, func() { conf.OverlayDNSAddress = "" }),
			Entry("missing ExternalDNSServer", `missing required config: "dns_server"`, func() { conf.ExternalDNSServer = "" }),
			Entry("missing Suffix", `missing required config: "suffix"`, func() { conf.Suffix = "" }),
			Entry("OverlayDNSAddress not in overlay network", `bad config "overlay_dns_address": not in overlay network`, func() { conf.OverlayDNSAddress = "1.2.3.4" }),
			Entry("unparsable LocalSubnet", `bad config "local_subnet": invalid CIDR address: foo`, func() { conf.LocalSubnet = "foo" }),
			Entry("unparsable OverlayNetwork", `bad config "overlay_network": invalid CIDR address: bar`, func() { conf.OverlayNetwork = "bar" }),
			Entry("unparsable ExternalDNSServer", `bad config "dns_server": sdfasdf is not an IP address`, func() { conf.ExternalDNSServer = "sdfasdf" }),
			Entry("unparsable OverlayDNSAddress", `bad config "overlay_dns_address": sdfasdf is not an IP address`, func() { conf.OverlayDNSAddress = "sdfasdf" }),
			Entry("unparsable HostAddress", `bad config "host_address": bar is not an IP address`, func() { conf.HostAddress = "bar" }),
			Entry("zero HostAddress", `bad config "host_address": must be nonzero`, func() { conf.HostAddress = "0.0.0.0" }),
		)

		It("does not complain when the database password is empty", func() {
			conf.Database.Password = ""
			_, err := conf.ParseAndValidate()
			Expect(err).NotTo(HaveOccurred())
		})