diff --git a/services/syncbase/bridge/cgo/impl.go b/services/syncbase/bridge/cgo/impl.go
index 8c7d5d6..2d2faf5 100644
--- a/services/syncbase/bridge/cgo/impl.go
+++ b/services/syncbase/bridge/cgo/impl.go
@@ -47,6 +47,7 @@
 	_ "v.io/x/ref/runtime/factories/roaming"
 	"v.io/x/ref/services/syncbase/bridge"
 	"v.io/x/ref/services/syncbase/syncbaselib"
+	"v.io/x/ref/test/testutil"
 )
 
 /*
@@ -78,10 +79,14 @@
 	// itself does VOM encoding and decoding, and the client deals in byte
 	// arrays.
 	clientUnderstandsVOM bool
+	// testLogin indicates if the test login mode is used. This is triggered
+	// by using an empty identity provider.
+	testLogin bool
 )
 
+// TODO(razvanm): Replace the function arguments with an options struct.
 //export v23_syncbase_Init
-func v23_syncbase_Init(cClientUnderstandVom C.v23_syncbase_Bool, cRootDir C.v23_syncbase_String) {
+func v23_syncbase_Init(cClientUnderstandVom C.v23_syncbase_Bool, cRootDir C.v23_syncbase_String, cTestLogin C.v23_syncbase_Bool) {
 	if b != nil {
 		panic("v23_syncbase_Init called again before a v23_syncbase_Shutdown")
 	}
@@ -92,16 +97,18 @@
 	b = &bridge.Bridge{Ctx: ctx, Shutdown: shutdown}
 	rootDir = cRootDir.extract()
 	clientUnderstandsVOM = cClientUnderstandVom.extract()
+	testLogin = cTestLogin.extract()
+	var cErr C.v23_syncbase_VError
+	if isLoggedIn() {
+		v23_syncbase_Serve(&cErr)
+	}
 }
 
 //export v23_syncbase_Serve
 func v23_syncbase_Serve(cErr *C.v23_syncbase_VError) {
-	// TODO(razvanm): Uncomment the check from below after logging is
-	// plumbed through and we have a solution for tests.
-	//
-	//if !isLoggedIn() {
-	//	cErr.init(verror.New(verror.ErrInternal, nil, "not logged in"))
-	//}
+	if !isLoggedIn() {
+		cErr.init(verror.New(verror.ErrInternal, nil, "not logged in"))
+	}
 	srv, disp, cleanup := syncbaselib.Serve(b.Ctx, syncbaselib.Opts{
 		// TODO(sadovsky): Make and pass a subdir of rootDir here, so
 		// that rootDir can also be used for credentials persistence.
@@ -125,6 +132,7 @@
 
 	b.Shutdown()
 	b = nil
+	testLogin = false
 }
 
 ////////////////////////////////////////
@@ -142,11 +150,23 @@
 
 //export v23_syncbase_Login
 func v23_syncbase_Login(cOAuthProvider C.v23_syncbase_String, cOAuthToken C.v23_syncbase_String, cErr *C.v23_syncbase_VError) {
-	err := bridge.SeekAndSetBlessings(b.Ctx, cOAuthProvider.extract(), cOAuthToken.extract())
-	if err != nil {
-		cErr.init(err)
+	if isLoggedIn() {
 		return
 	}
+
+	if testLogin {
+		ctx, err := v23.WithPrincipal(b.Ctx, testutil.NewPrincipal("root:o:app:user"))
+		if err != nil {
+			panic(err)
+		}
+		b.Ctx = ctx
+	} else {
+		err := bridge.SeekAndSetBlessings(b.Ctx, cOAuthProvider.extract(), cOAuthToken.extract())
+		if err != nil {
+			cErr.init(err)
+			return
+		}
+	}
 	v23_syncbase_Serve(cErr)
 }
 
diff --git a/services/syncbase/bridge/cgo/jni.go b/services/syncbase/bridge/cgo/jni.go
index 3c8a6e9..dd7fd2a 100644
--- a/services/syncbase/bridge/cgo/jni.go
+++ b/services/syncbase/bridge/cgo/jni.go
@@ -96,9 +96,9 @@
 }
 
 //export Java_io_v_syncbase_internal_Service_Init
-func Java_io_v_syncbase_internal_Service_Init(env *C.JNIEnv, cls C.jclass, initRoot C.jstring) {
+func Java_io_v_syncbase_internal_Service_Init(env *C.JNIEnv, cls C.jclass, initRoot C.jstring, testLogin C.jboolean) {
 	cInitRoot := newVStringFromJava(env, initRoot)
-	v23_syncbase_Init(C.v23_syncbase_Bool(1), cInitRoot)
+	v23_syncbase_Init(C.v23_syncbase_Bool(1), cInitRoot, C.v23_syncbase_Bool(testLogin))
 }
 
 //export Java_io_v_syncbase_internal_Service_Serve
