11
11
from dynamicsettings import app_settings
12
12
13
13
14
- """
15
- test:
16
- - views:
17
- - index view: status code, context is set, check a couple random
18
- settings are included or not, check for the values of these settings
19
- (mainly if the type is the expected one)
20
- - set view:
21
- - on success: status code, status message, check if setting is
22
- set properly in the database
23
- - on error: status code, status message, check if setting is
24
- not set in the database
25
- - reset view:
26
- - on success: status code, status message, check if setting is
27
- reset properly in the database
28
- - on error: status code, status message, check if setting is
29
- not reset in the database
30
- - SettingsForm:
31
- - submit some test data to the form and check if the validation is
32
- as expected (some random settings, some with type change some
33
- with none)
34
- - dynamicsettings init: retrieval of a setting, setting of a setting, don"t
35
- know what exaclty to check here since its similiar to the view
36
- """
37
-
38
14
class DynamicSettingsViewsTestCase (TestCase ):
39
15
urls = 'dynamicsettings.urls'
40
16
@@ -123,8 +99,91 @@ def test_set_view_staff(self):
123
99
self .assertFalse (dynamic_settings .is_in_db ('TEST_SETTING1' ))
124
100
self .assertEqual (dynamic_settings .TEST_SETTING1 , 73 )
125
101
126
- #check another setting
102
+ #check second setting
103
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING2' , 'value' : 'my_custom_string' , 'type' : 'str' })
104
+ self .assertEqual (response .status_code , 200 )
105
+ content_json = simplejson .loads (response .content )
106
+ self .assertEqual (content_json ['status' ], 'success' )
107
+ self .assertEqual (content_json ['value' ], 'my_custom_string' )
108
+ self .assertEqual (content_json ['type' ], 'str' )
109
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING2' ))
110
+ #change to the type
111
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING2' , 'value' : '123' , 'type' : 'int' })
112
+ self .assertEqual (response .status_code , 200 )
113
+ content_json = simplejson .loads (response .content )
114
+ self .assertEqual (content_json ['status' ], 'error' )
115
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING2' ))
116
+ #check that the old value is still saved
117
+ self .assertEqual (dynamic_settings .TEST_SETTING2 , 'my_custom_string' )
118
+ dynamic_settings .reset ('TEST_SETTING2' )
119
+ self .assertFalse (dynamic_settings .is_in_db ('TEST_SETTING2' ))
120
+ self .assertEqual (dynamic_settings .TEST_SETTING2 , 'a string' )
121
+
122
+ #check third setting
123
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING3' , 'value' : '[4,5]' , 'type' : 'list' })
124
+ self .assertEqual (response .status_code , 200 )
125
+ content_json = simplejson .loads (response .content )
126
+ self .assertEqual (content_json ['status' ], 'success' )
127
+ self .assertEqual (content_json ['value' ].replace ('\n ' ,'' ).replace (' ' ,'' ), '[4,5]' )
128
+ self .assertEqual (content_json ['type' ], 'list' )
129
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING3' ))
130
+ #change the value to sth which doesnt look like a list
131
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING3' , 'value' : '{"d": 123}' , 'type' : 'list' })
132
+ self .assertEqual (response .status_code , 200 )
133
+ content_json = simplejson .loads (response .content )
134
+ self .assertEqual (content_json ['status' ], 'error' )
135
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING3' ))
136
+ #check that the old value is still saved
137
+ self .assertEqual (dynamic_settings .TEST_SETTING3 , [4 , 5 ])
138
+ dynamic_settings .reset ('TEST_SETTING3' )
139
+ self .assertFalse (dynamic_settings .is_in_db ('TEST_SETTING3' ))
140
+ self .assertEqual (dynamic_settings .TEST_SETTING3 , [1 , 2 , 3 ])
127
141
142
+ #check fourth setting
143
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING4' , 'value' : '{"d": 123, "abc": "string", "l": []}' , 'type' : 'dict' })
144
+ self .assertEqual (response .status_code , 200 )
145
+ content_json = simplejson .loads (response .content )
146
+ self .assertEqual (content_json ['status' ], 'success' )
147
+ self .assertEqual (content_json ['type' ], 'dict' )
148
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING4' ))
149
+ #change the value and type to something completely different
150
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING4' , 'value' : '123' , 'type' : 'long' })
151
+ self .assertEqual (response .status_code , 200 )
152
+ content_json = simplejson .loads (response .content )
153
+ self .assertEqual (content_json ['status' ], 'error' )
154
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING4' ))
155
+ #check that the old value is still saved
156
+ self .assertEqual (dynamic_settings .TEST_SETTING4 , {"d" : 123 , "abc" : "string" , "l" : []})
157
+ dynamic_settings .reset ('TEST_SETTING4' )
158
+ self .assertFalse (dynamic_settings .is_in_db ('TEST_SETTING4' ))
159
+ self .assertEqual (dynamic_settings .TEST_SETTING4 , {'key' : 'value' , 'num' : 3 })
160
+
161
+ #check last setting (NoneType - can be changed to anything)
162
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING5' , 'value' : u'你好' , 'type' : 'unicode' })
163
+ self .assertEqual (response .status_code , 200 )
164
+ content_json = simplejson .loads (response .content )
165
+ self .assertEqual (content_json ['status' ], 'success' )
166
+ self .assertEqual (content_json ['value' ], u'你好' )
167
+ self .assertEqual (content_json ['type' ], 'unicode' )
168
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING5' ))
169
+ #check to another type (once a type is set it should not change anymore)
170
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING5' , 'value' : '300' , 'type' : 'int' })
171
+ self .assertEqual (response .status_code , 200 )
172
+ content_json = simplejson .loads (response .content )
173
+ self .assertEqual (content_json ['status' ], 'error' )
174
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING5' ))
175
+ #change the type to list and value to something which doesnt look like a list
176
+ response = self .client .post ('/set/' , {'key' : 'TEST_SETTING5' , 'value' : '404' , 'type' : 'list' })
177
+ self .assertEqual (response .status_code , 200 )
178
+ content_json = simplejson .loads (response .content )
179
+ self .assertEqual (content_json ['status' ], 'error' )
180
+ self .assertTrue (dynamic_settings .is_in_db ('TEST_SETTING5' ))
181
+ #check that the old value is still saved
182
+ self .assertEqual (dynamic_settings .TEST_SETTING5 , u'你好' )
183
+ dynamic_settings .reset ('TEST_SETTING5' )
184
+ self .assertFalse (dynamic_settings .is_in_db ('TEST_SETTING5' ))
185
+ self .assertEqual (dynamic_settings .TEST_SETTING5 , None )
186
+ self .assertEqual (type (dynamic_settings .TEST_SETTING5 ).__name__ , 'NoneType' )
128
187
129
188
self .client .logout ()
130
189
@@ -137,13 +196,39 @@ def test_set_view_normal(self):
137
196
#even a post request should not succeed
138
197
response = self .client .post ('/set/' , {'key' : 'TEST_SETTING1' , 'value' : 'some random string' , 'type' : 'int' })
139
198
self .assertEqual (response .status_code , 200 )
199
+ self .assertFalse (dynamic_settings .is_in_db ('TEST_SETTING1' ))
200
+ self .assertEqual (dynamic_settings .TEST_SETTING1 , 73 )
140
201
self .client .logout ()
202
+ #no need to test furhter settings
141
203
142
204
def test_reset_view_staff (self ):
143
205
logged_in = self .client .login (username = self .staff ['username' ], password = self .staff ['password' ])
144
206
self .assertTrue (logged_in )
145
207
response = self .client .get ('/reset/' )
146
208
self .assertEqual (response .status_code , 405 )
209
+
210
+ #set some setting
211
+ dynamic_settings .set ('TEST_SETTING1' , 500 , 'int' )
212
+ self .assertEqual (dynamic_settings .TEST_SETTING1 , 500 )
213
+ response = self .client .post ('/reset/' , {'key' : 'TEST_SETTING1' })
214
+ self .assertEqual (response .status_code , 200 )
215
+ content_json = simplejson .loads (response .content )
216
+ self .assertEqual (content_json ['status' ], 'success' )
217
+ self .assertEqual (content_json ['value' ], 73 )
218
+ self .assertEqual (content_json ['type' ], 'int' )
219
+ self .assertEqual (dynamic_settings .TEST_SETTING1 , 73 )
220
+ #call view without key
221
+ response = self .client .post ('/reset/' )
222
+ self .assertEqual (response .status_code , 200 )
223
+ content_json = simplejson .loads (response .content )
224
+ self .assertEqual (content_json ['status' ], 'error' )
225
+ #reset a key wjhich is already reseted
226
+ response = self .client .post ('/reset/' , {'key' : 'TEST_SETTING3' })
227
+ self .assertEqual (response .status_code , 200 )
228
+ content_json = simplejson .loads (response .content )
229
+ self .assertEqual (content_json ['status' ], 'error' )
230
+ self .assertEqual (dynamic_settings .TEST_SETTING1 , 73 )
231
+
147
232
self .client .logout ()
148
233
149
234
def test_reset_view_normal (self ):
@@ -152,6 +237,15 @@ def test_reset_view_normal(self):
152
237
response = self .client .get ('/reset/' )
153
238
#attempt to log the user into admin
154
239
self .assertEqual (response .status_code , 200 )
240
+
241
+ dynamic_settings .set ('TEST_SETTING1' , 500 , 'int' )
242
+ self .assertEqual (dynamic_settings .TEST_SETTING1 , 500 )
243
+ response = self .client .post ('/reset/' , {'key' : 'TEST_SETTING1' })
244
+ self .assertEqual (response .status_code , 200 )
245
+ self .assertEqual (dynamic_settings .TEST_SETTING1 , 500 )
246
+ dynamic_settings .reset ('TEST_SETTING1' )
247
+ self .assertEqual (dynamic_settings .TEST_SETTING1 , 73 )
248
+
155
249
self .client .logout ()
156
250
157
251
0 commit comments