· 8 years ago · Dec 30, 2017, 04:28 PM
1class TestConfigSettings(object):
2
3@pytest.fixture(scope='function')
4def cleanConfig(config_name, monkeypatch):
5 def makeCleanConfig(config_name):
6
7 monkeypatch.delenv('SECRET_KEY', raising=False)
8 monkeypatch.delenv('DEV_DATABASE_URL', raising=False)
9
10 from config import config
11 configObject = config[config_name]
12
13 return configObject
14 return makeCleanConfig
15
16
17@pytest.fixture(scope='function')
18def fakeEnvConfig(config_name, monkeypatch):
19 def makeFakeEnvConfig(config_name):
20
21 monkeypatch.setenv('SECRET_KEY', 'fake difficult string')
22 monkeypatch.setenv('DEV_DATABASE_URL', 'postgresql://fake:5432/fakeDevUrl')
23
24 from config import config as config
25 configObject = config[config_name]
26
27 return configObject
28 return makeFakeEnvConfig
29
30
31def test_configObject_withDevelopmentConfig_containsCorrectSettings(self, cleanConfig):
32 configObject = cleanConfig('development')
33
34 assert configObject.SECRET_KEY == 'hard to guess string'
35 assert configObject.DEBUG == True
36 assert configObject.SQLALCHEMY_DATABASE_URI == None
37
38def test_configObject_withDevelopmentConfigAndEnvSet_copiesEnvSettings(self, fakeEnvConfig):
39 configObject = fakeEnvConfig('development')
40
41 assert configObject.SECRET_KEY == 'fake difficult string'
42 assert configObject.SQLALCHEMY_DATABASE_URI == 'postgresql://fake:5432/fakeDevUrl'
43
44class Config:
45 SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
46
47class DevelopmentConfig(Config):
48 DEBUG = True
49 SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL')