From c6bf0a05763f567079cb464212a17b89b75f1a50 Mon Sep 17 00:00:00 2001 From: Niall Sheridan Date: Sat, 23 Apr 2016 18:06:49 +0100 Subject: Add config file tests --- server/config/config_test.go | 60 ++++++++++++++++++++++++++++++++++++++++++++ testdata/config.go | 33 ++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 server/config/config_test.go create mode 100644 testdata/config.go diff --git a/server/config/config_test.go b/server/config/config_test.go new file mode 100644 index 0000000..70436d5 --- /dev/null +++ b/server/config/config_test.go @@ -0,0 +1,60 @@ +package config + +import ( + "bytes" + "testing" + "time" + + "github.com/nsheridan/cashier/testdata" + "github.com/stretchr/testify/assert" +) + +func TestServerConfig(t *testing.T) { + a := assert.New(t) + c, err := ReadConfig(bytes.NewBuffer(testdata.ServerConfig)) + if err != nil { + t.Fatal(err) + } + server := c.Server + a.IsType(server, Server{}) + a.True(server.UseTLS) + a.Equal(server.TLSKey, "server.key") + a.Equal(server.TLSCert, "server.crt") + a.Equal(server.Port, 443) + a.Equal(server.CookieSecret, "supersecret") +} + +func TestAuthConfig(t *testing.T) { + a := assert.New(t) + c, err := ReadConfig(bytes.NewBuffer(testdata.AuthConfig)) + if err != nil { + t.Fatal(err) + } + auth := c.Auth + a.IsType(auth, Auth{}) + a.Equal(auth.Provider, "google") + a.Equal(auth.ProviderOpts, map[string]string{"domain": "example.com"}) + a.Equal(auth.OauthClientID, "client_id") + a.Equal(auth.OauthClientSecret, "secret") + a.Equal(auth.OauthCallbackURL, "https://sshca.example.com/auth/callback") + a.Equal(auth.JWTSigningKey, "supersecret") +} + +func TestSSHConfig(t *testing.T) { + a := assert.New(t) + c, err := ReadConfig(bytes.NewBuffer(testdata.SSHConfig)) + if err != nil { + t.Fatal(err) + } + ssh := c.SSH + a.IsType(ssh, SSH{}) + a.Equal(ssh.SigningKey, "signing_key") + a.Equal(ssh.AdditionalPrincipals, []string{"ec2-user", "ubuntu"}) + a.Equal(ssh.Permissions, []string{"permit-pty", "permit-X11-forwarding", "permit-port-forwarding", "permit-user-rc"}) + a.Equal(ssh.MaxAge, "720h") + d, err := time.ParseDuration(ssh.MaxAge) + if err != nil { + t.Fatal(err) + } + a.Equal(d.Hours(), float64(720)) +} diff --git a/testdata/config.go b/testdata/config.go new file mode 100644 index 0000000..ef5fdac --- /dev/null +++ b/testdata/config.go @@ -0,0 +1,33 @@ +package testdata + +var ServerConfig = []byte(`{ +"server": { + "use_tls": true, + "tls_key": "server.key", + "tls_cert": "server.crt", + "port": 443, + "cookie_secret": "supersecret" + } +}`) + +var AuthConfig = []byte(`{ + "auth": { + "provider": "google", + "oauth_client_id": "client_id", + "oauth_client_secret": "secret", + "oauth_callback_url": "https://sshca.example.com/auth/callback", + "provider_opts": { + "domain": "example.com" + }, + "jwt_signing_key": "supersecret" + } +}`) + +var SSHConfig = []byte(`{ + "ssh": { + "signing_key": "signing_key", + "additional_principals": ["ec2-user", "ubuntu"], + "max_age": "720h", + "permissions": ["permit-pty", "permit-X11-forwarding", "permit-port-forwarding", "permit-user-rc"] + } +}`) -- cgit v1.2.3