diff --git a/server/config/config_test.go b/server/config/config_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..70436d5f8bd0c3d95b7ec2fdbf69e391748ab210
--- /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 0000000000000000000000000000000000000000..ef5fdac9c22efe4f32eac8fe49b9f719ad719ecb
--- /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"]
+  }
+}`)