Current world:
package manifest_test
import (
"os"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Logging", func() {
Describe("traffic controller", func() {
var err error
It("disables support for forwarding syslog to metron", func() {
err = product.RenderService.Configure(map[string]interface{}{}) // Configure accepts "override" keys to change the base config file
Expect(err).NotTo(HaveOccurred())
manifest, err := product.RenderService.RenderManifest(productConfig) // productConfig.ConfigFile is a filepath to a base config
Expect(err).NotTo(HaveOccurred())
agent, err := manifest.FindInstanceGroupJob("loggregator_trafficcontroller", "metron_agent")
Expect(err).NotTo(HaveOccurred())
syslogForwardingEnabled, err := agent.Property("syslog_daemon_config/enable")
Expect(syslogForwardingEnabled).To(BeFalse())
})
})
})
Combine Configure and RenderManifest into single call:
package manifest_test
import (
"os"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Logging", func() {
Describe("traffic controller", func() {
var (
inputs map[string]interface{}
)
BeforeEach(func() {
// caller can use fixture file in whatever format they want, or inline a map for smaller tiles
fixtureContents, err := ioutil.Readfile(fixturePath)
Expect(err).NotTo(HaveOccurred())
err = yaml.Unmarshal(fixtureContents, inputs)
Expect(err).NotTo(HaveOccurred())
})
It("disables support for forwarding syslog to metron", func() {
// could support a GenerateManifestFromFile as convenience method
manifest, err := product.GenerateManifest(inputs)
Expect(err).NotTo(HaveOccurred())
agent, err := manifest.FindInstanceGroupJob("loggregator_trafficcontroller", "metron_agent")
Expect(err).NotTo(HaveOccurred())
syslogForwardingEnabled, err := agent.Property("syslog_daemon_config/enable")
Expect(syslogForwardingEnabled).To(BeFalse())
})
Context("when a checkbox is checked", func() {
BeforeEach(func() {
inputs["some-checkbox"] = true
})
It("enables something", func() {
...
syslogForwardingEnabled, err := agent.Property("syslog_daemon_config/enable")
Expect(syslogForwardingEnabled).To(BeTrue())
})
})
})
})