Add e2e test
diff --git a/core/kg/server/grpc_server.go b/core/kg/server/grpc_server.go
index 0e4f9e6..966029e 100644
--- a/core/kg/server/grpc_server.go
+++ b/core/kg/server/grpc_server.go
@@ -5,7 +5,6 @@
 	"net"
 	"os"
 
-	"github.com/giolekva/pcloud/core/kg/app"
 	"github.com/giolekva/pcloud/core/kg/log"
 	"github.com/giolekva/pcloud/core/kg/model"
 	"github.com/giolekva/pcloud/core/kg/model/proto"
@@ -15,16 +14,16 @@
 
 // GRPCServerImpl grpc server implementation
 type GRPCServerImpl struct {
-	Log    *log.Logger
+	Log    loggerIface
 	srv    *grpc.Server
 	config *model.Config
-	app    *app.App
+	app    appIface
 }
 
 var _ Server = &GRPCServerImpl{}
 
 // NewGRPCServer creates new GRPC Server
-func NewGRPCServer(logger *log.Logger, config *model.Config, app *app.App) Server {
+func NewGRPCServer(logger loggerIface, config *model.Config, app appIface) Server {
 	a := &GRPCServerImpl{
 		Log:    logger,
 		config: config,
diff --git a/core/kg/server/http_server.go b/core/kg/server/http_server.go
index 6802332..67eab88 100644
--- a/core/kg/server/http_server.go
+++ b/core/kg/server/http_server.go
@@ -16,7 +16,7 @@
 
 // HTTPServerImpl http server implementation
 type HTTPServerImpl struct {
-	Log    *log.Logger
+	Log    loggerIface
 	srv    *http.Server
 	root   *mux.Router
 	config *model.Config
@@ -26,7 +26,7 @@
 var _ Server = &HTTPServerImpl{}
 
 // NewHTTPServer creates new HTTP Server
-func NewHTTPServer(logger *log.Logger, config *model.Config, store store.Store) Server {
+func NewHTTPServer(logger loggerIface, config *model.Config, store store.Store) Server {
 	a := &HTTPServerImpl{
 		Log:    logger,
 		root:   mux.NewRouter(),
diff --git a/core/kg/server/interfaces.go b/core/kg/server/interfaces.go
new file mode 100644
index 0000000..0316ea6
--- /dev/null
+++ b/core/kg/server/interfaces.go
@@ -0,0 +1,17 @@
+package server
+
+import (
+	"github.com/giolekva/pcloud/core/kg/log"
+	"github.com/giolekva/pcloud/core/kg/model"
+)
+
+type loggerIface interface {
+	Debug(message string, fields ...log.Field)
+	Info(message string, fields ...log.Field)
+	Warn(message string, fields ...log.Field)
+	Error(message string, fields ...log.Field)
+}
+
+type appIface interface {
+	GetUser(userID string) (*model.User, error)
+}
diff --git a/core/kg/server/servers.go b/core/kg/server/servers.go
index 7363a0e..9d91b34 100644
--- a/core/kg/server/servers.go
+++ b/core/kg/server/servers.go
@@ -17,11 +17,11 @@
 // Servers represents different server services
 type Servers struct {
 	servers []Server
-	logger  *log.Logger
+	logger  loggerIface
 }
 
 // New provides new service application
-func New(logger *log.Logger) *Servers {
+func New(logger loggerIface) *Servers {
 	return &Servers{
 		logger: logger,
 	}
diff --git a/core/kg/server/servers_mock.go b/core/kg/server/servers_mock.go
new file mode 100644
index 0000000..2260d2c
--- /dev/null
+++ b/core/kg/server/servers_mock.go
@@ -0,0 +1,54 @@
+package server
+
+import (
+	"testing"
+	"time"
+
+	"github.com/giolekva/pcloud/core/kg/app"
+	"github.com/giolekva/pcloud/core/kg/log"
+	"github.com/giolekva/pcloud/core/kg/model"
+)
+
+type MockServer struct {
+	App     appIface
+	Servers []Server
+	Config  *model.Config
+}
+
+func Setup(tb testing.TB) *MockServer {
+	if testing.Short() {
+		tb.SkipNow()
+	}
+	app := app.NewTestApp()
+	config := model.NewConfig()
+	logger := &log.NoOpLogger{}
+	grpcServer := NewGRPCServer(logger, config, app)
+	httpServer := NewHTTPServer(logger, config, nil)
+	ts := &MockServer{
+		App:     app,
+		Servers: []Server{grpcServer, httpServer},
+		Config:  config,
+	}
+	go grpcServer.Start()
+	go httpServer.Start()
+	time.Sleep(1 * time.Second)
+	return ts
+}
+
+func (ts *MockServer) ShutdownServers() {
+	done := make(chan bool)
+	go func() {
+		for _, server := range ts.Servers {
+			server.Shutdown()
+		}
+		close(done)
+	}()
+
+	select {
+	case <-done:
+	case <-time.After(30 * time.Second):
+		// panic instead of fatal to terminate all tests in this package, otherwise the
+		// still running server could spuriously fail subsequent tests.
+		panic("failed to shutdown server within 30 seconds")
+	}
+}