aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/config/config_test.go60
-rw-r--r--testdata/config.go33
2 files changed, 93 insertions, 0 deletions
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"]
+ }
+}`)