コード例 #1
0
ファイル: test_user.py プロジェクト: ctldev/ctlweb
class UserTest(unittest.TestCase):
    """ Tests for user.py
    """
    def gentest_config(self):
        conffile = "test.conf"
        with open(conffile, "w") as file:
            file.write("""[Backend]
                        Hostname = localhost
                        User = foo
                        SSH-Port = 22
                        Database = test.db
                        Manifest_store = /dev/null
                        authorized_keys = auth_keys""")
        return conffile

    def setUp(self):
        Database.db_file = None  # else the runtime destroys testsing framework
        Database(self.gentest_config())
        self.user = User("Douglas")
        self.connection = Database.db_connection
        self.cursor = self.connection.cursor()

    def tearDown(self):
        self.connection.close()
        os.remove(self.gentest_config())
        os.remove(Database.db_file)

    def test_create_table(self):
        self.user.create_table()
        self.cursor.execute("""SELECT name FROM sqlite_master
                WHERE name = 'User';""")
        table_exists = False
        result = self.cursor.fetchone()
        self.assertFalse(result is None, "Table user could not been found")
        for i in result:
            if 'User' in i:
                table_exists = True
        self.assertTrue(table_exists)

    def test_drop_table(self):
        self.user.create_table()
        self.user.drop_table()
        self.cursor.execute("""SELECT name FROM sqlite_master
                            WHERE name = 'User';""")
        self.assertTrue(self.cursor.fetchone() is None,
                        "Database could not been droped")

    def test_getitem(self):
        self.user.create_table()
        self.assertEqual(self.user["c_id"], "Douglas")
        #        self.assertEqual(self.user["c_pubkey"], "pubkey")
        try:
            self.user["db_file"]
            self.assertTrue(False, "Was able to caught wrong attribute")
        except AttributeError:
            pass

    def test_get_attributes(self):
        self.user.create_table()
        attrs = self.user.get_attributes()
        self.assertTrue("c_id" in attrs)
        #        self.assertTrue("c_pubkey" in attrs)
        self.assertFalse("__doc__" in attrs)

    def test_save(self):
        with self.assertRaises(NoSuchTable):
            self.user.save()
        self.user.create_table()
        self.user.save()
        #       Restarting database connection
        self.connection.close()
        Database()
        #       Try to read original data
        self.cursor = Database.db_connection.cursor()
        #       First, try to get data
        self.cursor.execute("""SELECT * FROM User""")
        result = self.cursor.fetchall()
        self.assertEqual(len(result), 1, "too much or too less objects")
        self.cursor.execute("""SELECT * FROM User
                WHERE c_id = 'Douglas';""")
        result = self.cursor.fetchone()
        self.assertIsNotNone(result, "Couldn't read data from database")
        result = tuple(result)
        self.assertEqual(result[3], 'Douglas')

    def test_remove(self):
        self.user.create_table()
        self.user.save()
        for key in self.user.get_keys():
            key.save()
        self.user.remove()
        self.cursor.execute("""SELECT * FROM User
                            WHERE c_id = 'Douglas';""")
        self.assertTrue(self.cursor.fetchone() is None,
                        "Removing Entries has failed")

    def test_get(self):
        self.user.create_table()
        self.user.save()
        results = User.get()
        self.assertEqual(self.user, results[0], "Unable to get all data")
        import datetime
        d = datetime.datetime.now() - datetime.timedelta(minutes=2)
        results = User.get(d)
        self.assertEqual(self.user, results[0], "Unable to get new data")

    def test_get_exactly(self):
        self.user.create_table()
        self.user.save()
        user = User.get_exactly(self.user.c_id)
        self.assertEqual(user, self.user, "Could not deserialize data")

    def test_override(self):
        """ This function tests the default override procedure. """
        self.user.create_table()
        self.user.save()
        user2 = User('Douglas')
        user2.save()

    def test_pubkeys(self):
        from collections import Counter
        self.user.create_table()
        self.user.save()
        self.user.add_key("pubkey")
        self.user.add_key('second_pubkey')
        self.user.add_key('third_pubkey')
        self.assertEqual(Counter(['pubkey', 'second_pubkey', 'third_pubkey']),
                         Counter([i.c_key for i in self.user.get_keys()]),
                         'did not save keys')
        user = User.get_exactly(self.user.c_id)
        self.assertEqual(Counter(['pubkey', 'second_pubkey', 'third_pubkey']),
                         Counter([i.c_key for i in user.get_keys()]),
                         'did not load keys')
コード例 #2
0
ファイル: test_user.py プロジェクト: ctldev/ctlweb
class UserTest(unittest.TestCase):
    """ Tests for user.py
    """
    def gentest_config(self):
        conffile = "test.conf"
        with open(conffile, "w") as file:
            file.write("""[Backend]
                        Hostname = localhost
                        User = foo
                        SSH-Port = 22
                        Database = test.db
                        Manifest_store = /dev/null
                        authorized_keys = auth_keys""")
        return conffile

    def setUp(self):
        Database.db_file = None  # else the runtime destroys testsing framework
        Database(self.gentest_config())
        self.user = User("Douglas")
        self.connection = Database.db_connection
        self.cursor = self.connection.cursor()

    def tearDown(self):
        self.connection.close()
        os.remove(self.gentest_config())
        os.remove(Database.db_file)

    def test_create_table(self):
        self.user.create_table()
        self.cursor.execute("""SELECT name FROM sqlite_master
                WHERE name = 'User';""")
        table_exists = False
        result = self.cursor.fetchone()
        self.assertFalse(result is None,
                         "Table user could not been found")
        for i in result:
            if 'User' in i:
                table_exists = True
        self.assertTrue(table_exists)

    def test_drop_table(self):
        self.user.create_table()
        self.user.drop_table()
        self.cursor.execute("""SELECT name FROM sqlite_master
                            WHERE name = 'User';""")
        self.assertTrue(self.cursor.fetchone() is None,
                        "Database could not been droped")

    def test_getitem(self):
        self.user.create_table()
        self.assertEqual(self.user["c_id"], "Douglas")
#        self.assertEqual(self.user["c_pubkey"], "pubkey")
        try:
            self.user["db_file"]
            self.assertTrue(False, "Was able to caught wrong attribute")
        except AttributeError:
            pass

    def test_get_attributes(self):
        self.user.create_table()
        attrs = self.user.get_attributes()
        self.assertTrue("c_id" in attrs)
#        self.assertTrue("c_pubkey" in attrs)
        self.assertFalse("__doc__" in attrs)

    def test_save(self):
        with self.assertRaises(NoSuchTable):
            self.user.save()
        self.user.create_table()
        self.user.save()
#       Restarting database connection
        self.connection.close()
        Database()
#       Try to read original data
        self.cursor = Database.db_connection.cursor()
#       First, try to get data
        self.cursor.execute("""SELECT * FROM User""")
        result = self.cursor.fetchall()
        self.assertEqual(len(result), 1, "too much or too less objects")
        self.cursor.execute("""SELECT * FROM User
                WHERE c_id = 'Douglas';""")
        result = self.cursor.fetchone()
        self.assertIsNotNone(result,
                             "Couldn't read data from database")
        result = tuple(result)
        self.assertEqual(result[3], 'Douglas')

    def test_remove(self):
        self.user.create_table()
        self.user.save()
        for key in self.user.get_keys():
            key.save()
        self.user.remove()
        self.cursor.execute("""SELECT * FROM User
                            WHERE c_id = 'Douglas';""")
        self.assertTrue(self.cursor.fetchone() is None,
                        "Removing Entries has failed")

    def test_get(self):
        self.user.create_table()
        self.user.save()
        results = User.get()
        self.assertEqual(self.user, results[0], "Unable to get all data")
        import datetime
        d = datetime.datetime.now() - datetime.timedelta(minutes=2)
        results = User.get(d)
        self.assertEqual(self.user, results[0], "Unable to get new data")

    def test_get_exactly(self):
        self.user.create_table()
        self.user.save()
        user = User.get_exactly(self.user.c_id)
        self.assertEqual(user, self.user, "Could not deserialize data")

    def test_override(self):
        """ This function tests the default override procedure. """
        self.user.create_table()
        self.user.save()
        user2 = User('Douglas')
        user2.save()

    def test_pubkeys(self):
        from collections import Counter
        self.user.create_table()
        self.user.save()
        self.user.add_key("pubkey")
        self.user.add_key('second_pubkey')
        self.user.add_key('third_pubkey')
        self.assertEqual(Counter(['pubkey', 'second_pubkey', 'third_pubkey']),
                         Counter([i.c_key for i in self.user.get_keys()]),
                         'did not save keys')
        user = User.get_exactly(self.user.c_id)
        self.assertEqual(Counter(['pubkey', 'second_pubkey', 'third_pubkey']),
                         Counter([i.c_key for i in user.get_keys()]),
                         'did not load keys')