moving DummyObserver and DummyPool -> iro.test_helpers.utils
DBTestCase now using DummyObserver out of the box
#from mock import patch, Mock
from twisted.trial import unittest
from twisted.python import log
from sqlalchemy import create_engine
import os
from iro import install
from iro import config
from iro.model.schema import Base, Offer
from iro.model.utils import WithSession
from iro.offer.provider import providers, Provider
from ..test_helpers.dbtestcase import md, SampleDatabase
from ..test_helpers.utils import DummyObserver
class TestInstallation(unittest.TestCase):
'''test install script'''
def setUp(self):
md.setUp()
if not hasattr(md,"db2"):
md.db2=SampleDatabase("test2","test2",'%s/my.cnf'%md.tdir)
md.dburl2='mysql://test2:test@localhost/test2?unix_socket=%s/socket'%md.tdir
md.db2.create()
self.log = DummyObserver()
self.log.start()
self.engine = None
def tearDown(self):
self.log.stop()
if self.engine:
Base.metadata.drop_all(self.engine)
self.engine = None
try:
os.remove("iro.conf")
except OSError as e:
if e.errno != 2:
raise
def testCheckConfig(self):
self.assertEqual(install.checkConfig(),False)
with open("iro.conf",'w') as fp:
fp.write("""[main]
dburl=foo""")
self.assertEqual(install.checkConfig(),False)
self.assertEqual(len(self.log.e),1)
self.assertEqual(self.log.e[0]['message'], ("Error while processing config file: Option 'port' in section 'main' is missing.",))
with open("iro.conf",'w') as fp:
fp.write("""[main]
dburl=foo
port=123456
""")
self.assertEqual(install.checkConfig(),True)
def testCheckDatabase(self):
config.main.dburl=md.dburl2
self.assertTrue(install.checkDatabaseConnection())
self.assertFalse(install.checkDatabase())
self.engine = create_engine(md.dburl2)
Base.metadata.create_all(self.engine)
self.assertTrue(install.checkDatabase())
def testCheckDatabaseConnection(self):
config.main.dburl="mysql://t@localhost/test"
self.assertFalse(install.checkDatabaseConnection())
self.assertEqual(len(self.log.e),1)
self.assertTrue(self.log.e[0]['message'][0].startswith("Error while trying to connect to database\n"))
config.main.dburl="sqlite://"
self.assertTrue(install.checkDatabaseConnection())
def testCreateDatabase(self):
config.main.dburl=md.dburl2
self.assertTrue(install.checkDatabaseConnection())
self.assertFalse(install.checkDatabase())
install.createDatabase()
self.assertTrue(install.checkDatabase())
def testCreateSampleConfig(self):
install.createSampleConfig()
with open("iro.conf",'r') as fp:
c = fp.read()
with open(os.path.abspath("../iro.conf.inst"),"r") as fp:
self.assertEqual(c,fp.read())
def testNoOverwrite(self):
with open("iro.conf","w") as fp:
fp.write("muhaha")
install.createSampleConfig()
with open("iro.conf",'r') as fp:
self.assertEqual(fp.read(),"muhaha")
self.assertEqual(len(self.log.e),1)
self.assertEqual(self.log.e[0]['message'], ("iro.conf exists and will not be overwritten.",))
def testCheck(self):
pass
testCheck.todo = "to implement"