diff --git a/chronograf.go b/chronograf.go
index 7a839a233..0e416f883 100644
--- a/chronograf.go
+++ b/chronograf.go
@@ -136,7 +136,7 @@ type Source struct {
 	URL                string `json:"url"`                          // URL are the connections to the source
 	MetaURL            string `json:"metaUrl,omitempty"`            // MetaURL is the url for the meta node
 	InsecureSkipVerify bool   `json:"insecureSkipVerify,omitempty"` // InsecureSkipVerify as true means any certificate presented by the source is accepted.
-	Default            bool   `json:"default"`                      // Default specifies the default source for the application
+	Default            bool   `json:"isDefault"`                    // Default specifies the default source for the application
 	Telegraf           string `json:"telegraf"`                     // Telegraf is the db telegraf is written to.  By default it is "telegraf"
 }
 
@@ -316,6 +316,7 @@ type UsersStore interface {
 	Update(context.Context, *User) error
 }
 
+// Database represents a database in a time series source
 type Database struct {
 	Name          string `json:"name"`                    // a unique string identifier for the database
 	Duration      string `json:"duration,omitempty"`      // the duration (when creating a default retention policy)
@@ -323,6 +324,7 @@ type Database struct {
 	ShardDuration string `json:"shardDuration,omitempty"` // the shard duration (when creating a default retention policy)
 }
 
+// RetentionPolicy represents a retention policy in a time series source
 type RetentionPolicy struct {
 	Name          string `json:"name"`                    // a unique string identifier for the retention policy
 	Duration      string `json:"duration,omitempty"`      // the duration
@@ -331,6 +333,7 @@ type RetentionPolicy struct {
 	Default       bool   `json:"default,omitempty"`       // whether the RP should be the default
 }
 
+// Databases represents a databases in a time series source
 type Databases interface {
 	// All lists all databases
 	AllDB(context.Context) ([]Database, error)
diff --git a/server/databases_test.go b/server/databases_test.go
new file mode 100644
index 000000000..c17ee676a
--- /dev/null
+++ b/server/databases_test.go
@@ -0,0 +1,349 @@
+package server
+
+import (
+	"net/http"
+	"testing"
+
+	"github.com/influxdata/chronograf"
+)
+
+func TestService_GetDatabases(t *testing.T) {
+	type fields struct {
+		SourcesStore     chronograf.SourcesStore
+		ServersStore     chronograf.ServersStore
+		LayoutStore      chronograf.LayoutStore
+		AlertRulesStore  chronograf.AlertRulesStore
+		UsersStore       chronograf.UsersStore
+		DashboardsStore  chronograf.DashboardsStore
+		TimeSeriesClient TimeSeriesClient
+		Logger           chronograf.Logger
+		UseAuth          bool
+		Databases        chronograf.Databases
+	}
+	type args struct {
+		w http.ResponseWriter
+		r *http.Request
+	}
+	tests := []struct {
+		name   string
+		fields fields
+		args   args
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			h := &Service{
+				SourcesStore:     tt.fields.SourcesStore,
+				ServersStore:     tt.fields.ServersStore,
+				LayoutStore:      tt.fields.LayoutStore,
+				AlertRulesStore:  tt.fields.AlertRulesStore,
+				UsersStore:       tt.fields.UsersStore,
+				DashboardsStore:  tt.fields.DashboardsStore,
+				TimeSeriesClient: tt.fields.TimeSeriesClient,
+				Logger:           tt.fields.Logger,
+				UseAuth:          tt.fields.UseAuth,
+				Databases:        tt.fields.Databases,
+			}
+			h.GetDatabases(tt.args.w, tt.args.r)
+		})
+	}
+}
+
+func TestService_NewDatabase(t *testing.T) {
+	type fields struct {
+		SourcesStore     chronograf.SourcesStore
+		ServersStore     chronograf.ServersStore
+		LayoutStore      chronograf.LayoutStore
+		AlertRulesStore  chronograf.AlertRulesStore
+		UsersStore       chronograf.UsersStore
+		DashboardsStore  chronograf.DashboardsStore
+		TimeSeriesClient TimeSeriesClient
+		Logger           chronograf.Logger
+		UseAuth          bool
+		Databases        chronograf.Databases
+	}
+	type args struct {
+		w http.ResponseWriter
+		r *http.Request
+	}
+	tests := []struct {
+		name   string
+		fields fields
+		args   args
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			h := &Service{
+				SourcesStore:     tt.fields.SourcesStore,
+				ServersStore:     tt.fields.ServersStore,
+				LayoutStore:      tt.fields.LayoutStore,
+				AlertRulesStore:  tt.fields.AlertRulesStore,
+				UsersStore:       tt.fields.UsersStore,
+				DashboardsStore:  tt.fields.DashboardsStore,
+				TimeSeriesClient: tt.fields.TimeSeriesClient,
+				Logger:           tt.fields.Logger,
+				UseAuth:          tt.fields.UseAuth,
+				Databases:        tt.fields.Databases,
+			}
+			h.NewDatabase(tt.args.w, tt.args.r)
+		})
+	}
+}
+
+func TestService_DropDatabase(t *testing.T) {
+	type fields struct {
+		SourcesStore     chronograf.SourcesStore
+		ServersStore     chronograf.ServersStore
+		LayoutStore      chronograf.LayoutStore
+		AlertRulesStore  chronograf.AlertRulesStore
+		UsersStore       chronograf.UsersStore
+		DashboardsStore  chronograf.DashboardsStore
+		TimeSeriesClient TimeSeriesClient
+		Logger           chronograf.Logger
+		UseAuth          bool
+		Databases        chronograf.Databases
+	}
+	type args struct {
+		w http.ResponseWriter
+		r *http.Request
+	}
+	tests := []struct {
+		name   string
+		fields fields
+		args   args
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			h := &Service{
+				SourcesStore:     tt.fields.SourcesStore,
+				ServersStore:     tt.fields.ServersStore,
+				LayoutStore:      tt.fields.LayoutStore,
+				AlertRulesStore:  tt.fields.AlertRulesStore,
+				UsersStore:       tt.fields.UsersStore,
+				DashboardsStore:  tt.fields.DashboardsStore,
+				TimeSeriesClient: tt.fields.TimeSeriesClient,
+				Logger:           tt.fields.Logger,
+				UseAuth:          tt.fields.UseAuth,
+				Databases:        tt.fields.Databases,
+			}
+			h.DropDatabase(tt.args.w, tt.args.r)
+		})
+	}
+}
+
+func TestService_RetentionPolicies(t *testing.T) {
+	type fields struct {
+		SourcesStore     chronograf.SourcesStore
+		ServersStore     chronograf.ServersStore
+		LayoutStore      chronograf.LayoutStore
+		AlertRulesStore  chronograf.AlertRulesStore
+		UsersStore       chronograf.UsersStore
+		DashboardsStore  chronograf.DashboardsStore
+		TimeSeriesClient TimeSeriesClient
+		Logger           chronograf.Logger
+		UseAuth          bool
+		Databases        chronograf.Databases
+	}
+	type args struct {
+		w http.ResponseWriter
+		r *http.Request
+	}
+	tests := []struct {
+		name   string
+		fields fields
+		args   args
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			h := &Service{
+				SourcesStore:     tt.fields.SourcesStore,
+				ServersStore:     tt.fields.ServersStore,
+				LayoutStore:      tt.fields.LayoutStore,
+				AlertRulesStore:  tt.fields.AlertRulesStore,
+				UsersStore:       tt.fields.UsersStore,
+				DashboardsStore:  tt.fields.DashboardsStore,
+				TimeSeriesClient: tt.fields.TimeSeriesClient,
+				Logger:           tt.fields.Logger,
+				UseAuth:          tt.fields.UseAuth,
+				Databases:        tt.fields.Databases,
+			}
+			h.RetentionPolicies(tt.args.w, tt.args.r)
+		})
+	}
+}
+
+func TestService_NewRetentionPolicy(t *testing.T) {
+	type fields struct {
+		SourcesStore     chronograf.SourcesStore
+		ServersStore     chronograf.ServersStore
+		LayoutStore      chronograf.LayoutStore
+		AlertRulesStore  chronograf.AlertRulesStore
+		UsersStore       chronograf.UsersStore
+		DashboardsStore  chronograf.DashboardsStore
+		TimeSeriesClient TimeSeriesClient
+		Logger           chronograf.Logger
+		UseAuth          bool
+		Databases        chronograf.Databases
+	}
+	type args struct {
+		w http.ResponseWriter
+		r *http.Request
+	}
+	tests := []struct {
+		name   string
+		fields fields
+		args   args
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			h := &Service{
+				SourcesStore:     tt.fields.SourcesStore,
+				ServersStore:     tt.fields.ServersStore,
+				LayoutStore:      tt.fields.LayoutStore,
+				AlertRulesStore:  tt.fields.AlertRulesStore,
+				UsersStore:       tt.fields.UsersStore,
+				DashboardsStore:  tt.fields.DashboardsStore,
+				TimeSeriesClient: tt.fields.TimeSeriesClient,
+				Logger:           tt.fields.Logger,
+				UseAuth:          tt.fields.UseAuth,
+				Databases:        tt.fields.Databases,
+			}
+			h.NewRetentionPolicy(tt.args.w, tt.args.r)
+		})
+	}
+}
+
+func TestService_UpdateRetentionPolicy(t *testing.T) {
+	type fields struct {
+		SourcesStore     chronograf.SourcesStore
+		ServersStore     chronograf.ServersStore
+		LayoutStore      chronograf.LayoutStore
+		AlertRulesStore  chronograf.AlertRulesStore
+		UsersStore       chronograf.UsersStore
+		DashboardsStore  chronograf.DashboardsStore
+		TimeSeriesClient TimeSeriesClient
+		Logger           chronograf.Logger
+		UseAuth          bool
+		Databases        chronograf.Databases
+	}
+	type args struct {
+		w http.ResponseWriter
+		r *http.Request
+	}
+	tests := []struct {
+		name   string
+		fields fields
+		args   args
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			h := &Service{
+				SourcesStore:     tt.fields.SourcesStore,
+				ServersStore:     tt.fields.ServersStore,
+				LayoutStore:      tt.fields.LayoutStore,
+				AlertRulesStore:  tt.fields.AlertRulesStore,
+				UsersStore:       tt.fields.UsersStore,
+				DashboardsStore:  tt.fields.DashboardsStore,
+				TimeSeriesClient: tt.fields.TimeSeriesClient,
+				Logger:           tt.fields.Logger,
+				UseAuth:          tt.fields.UseAuth,
+				Databases:        tt.fields.Databases,
+			}
+			h.UpdateRetentionPolicy(tt.args.w, tt.args.r)
+		})
+	}
+}
+
+func TestService_DropRetentionPolicy(t *testing.T) {
+	type fields struct {
+		SourcesStore     chronograf.SourcesStore
+		ServersStore     chronograf.ServersStore
+		LayoutStore      chronograf.LayoutStore
+		AlertRulesStore  chronograf.AlertRulesStore
+		UsersStore       chronograf.UsersStore
+		DashboardsStore  chronograf.DashboardsStore
+		TimeSeriesClient TimeSeriesClient
+		Logger           chronograf.Logger
+		UseAuth          bool
+		Databases        chronograf.Databases
+	}
+	type args struct {
+		w http.ResponseWriter
+		r *http.Request
+	}
+	tests := []struct {
+		name   string
+		fields fields
+		args   args
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			h := &Service{
+				SourcesStore:     tt.fields.SourcesStore,
+				ServersStore:     tt.fields.ServersStore,
+				LayoutStore:      tt.fields.LayoutStore,
+				AlertRulesStore:  tt.fields.AlertRulesStore,
+				UsersStore:       tt.fields.UsersStore,
+				DashboardsStore:  tt.fields.DashboardsStore,
+				TimeSeriesClient: tt.fields.TimeSeriesClient,
+				Logger:           tt.fields.Logger,
+				UseAuth:          tt.fields.UseAuth,
+				Databases:        tt.fields.Databases,
+			}
+			h.DropRetentionPolicy(tt.args.w, tt.args.r)
+		})
+	}
+}
+
+func TestValidDatabaseRequest(t *testing.T) {
+	type args struct {
+		d *chronograf.Database
+	}
+	tests := []struct {
+		name    string
+		args    args
+		wantErr bool
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if err := ValidDatabaseRequest(tt.args.d); (err != nil) != tt.wantErr {
+				t.Errorf("ValidDatabaseRequest() error = %v, wantErr %v", err, tt.wantErr)
+			}
+		})
+	}
+}
+
+func TestValidRetentionPolicyRequest(t *testing.T) {
+	type args struct {
+		rp *chronograf.RetentionPolicy
+	}
+	tests := []struct {
+		name    string
+		args    args
+		wantErr bool
+	}{
+	// TODO: Add test cases.
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if err := ValidRetentionPolicyRequest(tt.args.rp); (err != nil) != tt.wantErr {
+				t.Errorf("ValidRetentionPolicyRequest() error = %v, wantErr %v", err, tt.wantErr)
+			}
+		})
+	}
+}