summary refs log tree commit diff
path: root/tests/storage/test_profile.py
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <paul@matrix.org>2014-09-10 16:42:31 +0100
committerPaul "LeoNerd" Evans <paul@matrix.org>2014-09-10 16:42:31 +0100
commit6081f4947e9c4d7dfbdaf6439e662b173d309a8e (patch)
tree766b0fe3a82d0b48cbcf36ccaa9a1db9f10e39fc /tests/storage/test_profile.py
parentprepare_database() on db_conn, not plain name, so we can pass in the connecti... (diff)
downloadsynapse-6081f4947e9c4d7dfbdaf6439e662b173d309a8e.tar.xz
Tiny trivial PoC unit-test using SQLite in :memory: mode
Diffstat (limited to 'tests/storage/test_profile.py')
-rw-r--r--tests/storage/test_profile.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/storage/test_profile.py b/tests/storage/test_profile.py
new file mode 100644
index 0000000000..fff0a8c4fd
--- /dev/null
+++ b/tests/storage/test_profile.py
@@ -0,0 +1,78 @@
+# -*- coding: utf-8 -*-
+# Copyright 2014 OpenMarket Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+from twisted.trial import unittest
+from twisted.internet import defer
+
+from mock import Mock, call
+from twisted.enterprise.adbapi import ConnectionPool
+
+from synapse.server import HomeServer
+from synapse.storage import prepare_database
+from synapse.storage.profile import ProfileStore
+
+
+class SQLiteMemoryDbPool(ConnectionPool, object):
+    def __init__(self):
+        super(SQLiteMemoryDbPool, self).__init__(
+            "sqlite3", ":memory:",
+            cp_min=1,
+            cp_max=1,
+        )
+
+    def prepare(self):
+        return self.runWithConnection(prepare_database)
+
+    #def runInteraction(self, interaction, *args, **kwargs):
+    #    # Just use a cursor as the txn directly
+    #    txn = self.db.cursor()
+
+    #    def _on_success(result):
+    #        txn.commit()
+    #        return result
+    #    def _on_failure(failure):
+    #        txn.rollback()
+    #        raise failure
+
+    #    d = interaction(txn, *args, **kwargs)
+    #    d.addCallbacks(_on_success, _on_failure)
+    #    return d
+
+
+class ProfileStoreTestCase(unittest.TestCase):
+    def setUp(self):
+        hs = HomeServer("test",
+            db_pool=SQLiteMemoryDbPool(),
+        )
+        hs.get_db_pool().prepare()
+
+        self.store = ProfileStore(hs)
+
+        self.u_frank = hs.parse_userid("@frank:test")
+
+    @defer.inlineCallbacks
+    def test_displayname(self):
+        yield self.store.create_profile(
+            self.u_frank.localpart
+        )
+
+        yield self.store.set_profile_displayname(
+            self.u_frank.localpart, "Frank"
+        )
+
+        name = yield self.store.get_profile_displayname(self.u_frank.localpart)
+
+        self.assertEquals("Frank", name)