It("returns a ErrRouterConfigFileNotFound error", func() {
				_, err := haproxy.NewHaProxyConfigurer(logger, haproxyConfigTemplate, "file/path/does/not/exists")
				Expect(err).Should(HaveOccurred())
				Expect(err.Error()).To(ContainSubstring(cf_tcp_router.ErrRouterConfigFileNotFound))
			})
		})

		Context("when invalid routing table is passed", func() {
			var (
				haproxyConfigTemplateContent []byte
				generatedHaproxyCfgFile      string
				haproxyCfgBackupFile         string
				err                          error
			)
			BeforeEach(func() {
				generatedHaproxyCfgFile = testutil.RandomFileName("fixtures/haproxy_", ".cfg")
				haproxyCfgBackupFile = fmt.Sprintf("%s.bak", generatedHaproxyCfgFile)
				utils.CopyFile(haproxyConfigTemplate, generatedHaproxyCfgFile)

				haproxyConfigTemplateContent, err = ioutil.ReadFile(generatedHaproxyCfgFile)
				Expect(err).ShouldNot(HaveOccurred())

				haproxyConfigurer, err = haproxy.NewHaProxyConfigurer(logger, haproxyConfigTemplate, generatedHaproxyCfgFile)
				Expect(err).ShouldNot(HaveOccurred())
			})

			AfterEach(func() {
				err := os.Remove(generatedHaproxyCfgFile)
				Expect(err).ShouldNot(HaveOccurred())

				Expect(utils.FileExists(haproxyCfgBackupFile)).To(BeTrue())
	"github.com/cloudfoundry-incubator/cf-tcp-router/utils"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

var _ = Describe("Fileutils", func() {
	Describe("WriteToFile", func() {
		Context("when valid path is passed", func() {
			var (
				fileName    string
				fileContent string
			)

			BeforeEach(func() {
				fileName = testutil.RandomFileName("fixtures/file_", "")
				fileContent = "some content"
			})

			AfterEach(func() {
				err := os.Remove(fileName)
				Expect(err).ShouldNot(HaveOccurred())
			})

			Context("when valid content is passed", func() {
				It("writes to destination file", func() {
					err := utils.WriteToFile([]byte(fileContent), fileName)
					Expect(err).ShouldNot(HaveOccurred())
					actualContent, err := ioutil.ReadFile(fileName)
					Expect(err).ShouldNot(HaveOccurred())
					Expect(string(actualContent)).To(Equal(fileContent))
	Expect(err).NotTo(HaveOccurred())

	return payload
}, func(payload []byte) {
	context := map[string]string{}

	err := json.Unmarshal(payload, &context)
	Expect(err).NotTo(HaveOccurred())

	routerConfigurerPort = 7000 + GinkgoParallelNode()
	routerConfigurerPath = context["router-configurer"]
	routingAPIBinPath = context["routing-api"]
})

var _ = BeforeEach(func() {
	randomFileName := testutil.RandomFileName("haproxy_", ".cfg")
	randomBackupFileName := fmt.Sprintf("%s.bak", randomFileName)
	randomBaseFileName := testutil.RandomFileName("haproxy_base_", ".cfg")
	haproxyConfigFile = path.Join(os.TempDir(), randomFileName)
	haproxyConfigBackupFile = path.Join(os.TempDir(), randomBackupFileName)
	haproxyBaseConfigFile = path.Join(os.TempDir(), randomBaseFileName)

	err := utils.WriteToFile(
		[]byte(
			`global maxconn 4096
defaults
  log global
  timeout connect 300000
  timeout client 300000
  timeout server 300000
  maxconn 2000`),
Exemple #4
0
			},
		)
		logger.Info("starting-oauth-server", lager.Data{"address": server.URL()})
		return server
	}

	routingApiServer := func(logger lager.Logger) ifrit.Process {

		server := routingtestrunner.New(routingAPIBinPath, routingAPIArgs)
		logger.Info("starting-routing-api-server")

		return ifrit.Invoke(server)
	}

	generateConfigFile := func(oauthServerPort, routingApiServerPort string, routingApiAuthDisabled bool) string {
		randomConfigFileName := testutil.RandomFileName("router_configurer", ".yml")
		configFile := path.Join(os.TempDir(), randomConfigFileName)

		cfg := fmt.Sprintf("%s\n  port: %s\n%s\n  auth_disabled: %t\n  %s\n  port: %s\n", `oauth:
  token_endpoint: "http://127.0.0.1"
  client_name: "someclient"
  client_secret: "somesecret"`, oauthServerPort,
			`routing_api:`,
			routingApiAuthDisabled,
			`uri: http://127.0.0.1`, routingApiServerPort)
		err := utils.WriteToFile([]byte(cfg), configFile)
		Expect(err).ShouldNot(HaveOccurred())
		Expect(utils.FileExists(configFile)).To(BeTrue())
		return configFile
	}