diff --git a/src/leap/soledad/client/_secrets/storage.py b/src/leap/soledad/client/_secrets/storage.py
index 85713a4861adc2884a0583f346b747646bb70869..8767c1e6d8e685814f2aff4e5ed37b4f0b85c006 100644
--- a/src/leap/soledad/client/_secrets/storage.py
+++ b/src/leap/soledad/client/_secrets/storage.py
@@ -71,6 +71,8 @@ class SecretsStorage(UserDataMixin):
     #
 
     def _init_shared_db(self):
+        if not self._soledad.server_url:
+            return None
         url = urlparse.urljoin(self._soledad.server_url, SHARED_DB_NAME)
         creds = self._creds
         db = SoledadSharedDatabase.open_database(url, creds)
diff --git a/src/leap/soledad/client/api.py b/src/leap/soledad/client/api.py
index 7171761d4e1e8cae16788d8511b2085dcd85e133..16bacf78bf118b13e545087ad3c2746362640127 100644
--- a/src/leap/soledad/client/api.py
+++ b/src/leap/soledad/client/api.py
@@ -129,8 +129,17 @@ class Soledad(object):
         :type local_db_path: str
 
         :param server_url:
-            URL for Soledad server. This is used either to sync with the user's
-            remote db and to interact with the shared recovery database.
+            URL for Soledad server. This is used to fetch and store user's
+            secrets and to sync with the user's remote db.
+
+            For the LEAP Platform/Bitmask use case, it is mandatory to check
+            for user secrets previously stored in remote storage during the
+            first initialization, because Soledad needs to encrypt/decrypt to
+            using the same secret as before.
+
+            For testing purposes, a value of None can be passed. If None is
+            passed, verification for a remote secret on first initialization is
+            bypassed and that might lead to unintented consequences.
         :type server_url: str
 
         :param cert_file:
@@ -216,9 +225,6 @@ class Soledad(object):
             self.default_prefix, self.secrets_file_name))
         initialize("_local_db_path", os.path.join(
             self.default_prefix, self.local_db_file_name))
-        # initialize server_url
-        soledad_assert(self.server_url is not None,
-                       'Missing URL for Soledad server.')
 
     def _init_working_dirs(self):
         """
@@ -276,6 +282,8 @@ class Soledad(object):
 
     def _init_blobmanager(self):
         path = os.path.dirname(self._local_db_path)
+        if not self.server_url:
+            return
         url = urlparse.urljoin(self.server_url, 'blobs/%s' % self.uuid)
         key = self._secrets.local_key
         self.blobmanager = blobs.BlobManager(
@@ -667,6 +675,8 @@ class Soledad(object):
             generation before the synchronization was performed.
         :rtype: twisted.internet.defer.Deferred
         """
+        if not self.server_url:
+            return
         sync_url = urlparse.urljoin(self.server_url, 'user-%s' % self.uuid)
         if not self._dbsyncer:
             return