def setUp(self):
        self.backend = PersistentBackend('.')

        # Create some data
        self.block1 = DatabaseModel('1')
        self.block2 = DatabaseModel('2')
        self.block3 = DatabaseModel('3')
示例#2
0
 def initialize_api(self):
     from market.api.api import MarketAPI
     from market.database.database import MarketDatabase
     from market.database.backends import PersistentBackend
     self._api = MarketAPI(
         MarketDatabase(
             PersistentBackend(
                 '.', u'sqlite/%s-market.db' % self.database_prefix)))
 def setUp(self):
     self.database = MarketDatabase(PersistentBackend('.'))
     self.database.backend.clear()
     # Some database models
     self.model1 = DatabaseModel()
     self.model2 = DatabaseModel()
示例#4
0
 def initialize_api(self):
     from market.api.api import MarketAPI
     from market.database.backends import PersistentBackend, MemoryBackend
     from market.database.database import MarketDatabase
     self._api = MarketAPI(
         MarketDatabase(PersistentBackend('.', u'sqlite/market.db')))
    def setUp(self):
        # Faking IOThread
        registerAsIOThread()

        # Object creation and preperation
        self.dispersy = Dispersy(ManualEnpoint(0),
                                 unicode("dispersy_temporary_mc1"))
        self.dispersy_bank = Dispersy(ManualEnpoint(0),
                                      unicode("dispersy_temporary_mc2"))

        self.api = MarketAPI(
            MarketDatabase(PersistentBackend('.', u'borrower.db')))
        self.api_bank = MarketAPI(
            MarketDatabase(PersistentBackend('.', u'bank.db')))

        self.api.db.backend.clear()
        self.api_bank.db.backend.clear()

        self.user, _, priv_user = self.api.create_user()
        self.bank, _, priv_bank = self.api_bank.create_user()

        self.dispersy._database.open()
        self.dispersy_bank._database.open()

        self.master_member = DummyMember(self.dispersy, 1, "a" * 20)

        self.member = self.dispersy.get_member(
            private_key=priv_user.decode("HEX"))
        self.member_bank = self.dispersy_bank.get_member(
            private_key=priv_bank.decode("HEX"))

        self.community = MortgageMarketCommunity.init_community(
            self.dispersy, self.master_member, self.member)
        self.community_bank = MortgageMarketCommunity.init_community(
            self.dispersy_bank, self.master_member, self.member_bank)

        self.community.api = self.api
        self.community.user = self.user
        self.api.community = self.community

        self.community_bank.api = self.api_bank
        self.community_bank.user = self.bank
        self.api_bank.community = self.community_bank

        self.db = self.api.db.backend
        self.bank_db = self.api_bank.db.backend

        self.community.persistence = self.db
        self.community_bank.persistence = self.bank_db

        # Models
        self.mortgage = Mortgage(UUID('b97dfa1c-e125-4ded-9b1a-5066462c529c'),
                                 UUID('b97dfa1c-e125-4ded-9b1a-5066462c520c'),
                                 'ING', 80000, 1, 2.5, 1.5, 2.5, 36, 'A', [],
                                 STATUS.ACCEPTED)
        t = int(time.time())
        self.payload = (
            self.bank.id,
            self.user.id,
            self.mortgage,
            self.mortgage,
            2,
            1,
            'prev_hash_bene',
            'prev_hash_beni',
            'sig_bene',
            'sig_beni',
            t,
        )

        self.payload2 = (
            self.bank.id,
            '',
            self.mortgage,
            None,
            2,
            1,
            'prev_hash_bene',
            '',
            'sig_bene',
            '',
            t,
        )
class PersistentBackendTestSuite(unittest.TestCase):
    def setUp(self):
        self.backend = PersistentBackend('.')

        # Create some data
        self.block1 = DatabaseModel('1')
        self.block2 = DatabaseModel('2')
        self.block3 = DatabaseModel('3')

    def tearDown(self):
        self.backend.close()

    def test_clear(self):
        self.backend.clear()
        self.backend.post('test', self.block1.id, self.block1)
        self.backend.clear()
        with self.assertRaises(IndexError):
            self.backend.get('test', self.block1.id)

    def test_post(self):
        self.backend.clear()
        self.backend.post('test', self.block1.id, self.block1.encode())
        self.assertEqual(
            self.block1,
            DatabaseModel.decode(self.backend.get('test', self.block1.id)))

    def test_get(self):
        self.backend.clear()
        self.backend.post('test', self.block1.id, self.block1.encode())
        self.backend.post('test', self.block2.id, self.block2.encode())
        self.backend.post('test', self.block3.id, self.block3.encode())

        with self.assertRaises(IndexError):
            self.backend.post('test2', self.block1.id, self.block1.encode())

        self.assertEqual(DatabaseModel.decode(self.backend.get('test', '1')),
                         self.block1)
        self.assertEqual(
            DatabaseModel.decode(self.backend.get('test', self.block2.id)),
            self.block2)
        self.assertNotEqual(
            DatabaseModel.decode(self.backend.get('test', '1')),
            DatabaseModel.decode(self.backend.get('test', '2')))

        with self.assertRaises(IndexError):
            self.assertEqual(
                DatabaseModel.decode(self.backend.get('test', '1')),
                DatabaseModel.decode(self.backend.get('test2', '1')))

    def test_get_error(self):
        self.backend.clear()
        with self.assertRaises(IndexError):
            self.backend.get('test', 1)

    def test_put_fail(self):
        self.backend.clear()
        self.assertFalse(self.backend.put('test', '1', self.block1))

    def test_put_success(self):
        self.backend.clear()
        self.backend.post('test', self.block1.id, self.block1.encode())
        self.assertEqual(
            DatabaseModel.decode(self.backend.get('test', self.block1.id)),
            self.block1)

        self.assertTrue(
            self.backend.put('test', self.block1.id, self.block2.encode()))
        self.assertEqual(
            DatabaseModel.decode(self.backend.get('test', self.block1.id)),
            self.block2)

    def test_delete(self):
        self.backend.clear()
        self.backend.post('test', self.block1.id, self.block1)
        self.backend.delete(self.block1)
        self.assertFalse(self.backend.exists('test', self.block1.id))

    def test_get_all(self):
        self.backend.clear()
        self.backend.post('test', self.block1.id, self.block1.encode())
        self.backend.post('test', self.block2.id, self.block2.encode())
        self.backend.post('boe', self.block3.id, self.block3.encode())

        all_tests = self.backend.get_all('test')
        self.assertIsInstance(all_tests, list)
        self.assertIn(self.block1.encode(), all_tests)
        self.assertIn(self.block2.encode(), all_tests)
        self.assertNotIn(self.block3.encode(), all_tests)