]> gitweb.fperrin.net Git - djsite.git/blob - quotes/conftest.py
9210e6aeb60a2049e2837372fda0ff9fffe8bd05
[djsite.git] / quotes / conftest.py
1 import pytest
2
3 import lxml.etree
4
5 class ValidatingClient(object):
6     def __init__(self, client):
7         self.client = client
8     
9     def request(self, url, method, exp_status=200, params={}):
10         if not url.startswith('/quotes/'):
11             url = '/quotes/' + url
12
13         if method == 'get':
14             response = self.client.get(url)
15         elif method == 'post':
16             response = self.client.post(url, params)
17         else:
18             raise RuntimeError('Unknown method %s for %s' % (method, url))
19         assert response.status_code == exp_status
20         if response.status_code != 200:
21             return None
22         assert response.charset == 'utf-8'
23         document = response.content.decode(response.charset)
24         print 'For url %s got page:\n%s' % (url, document)
25         lxml.etree.fromstring(document.replace('<br>', '<br/>'))
26         assert '<script>' not in document
27         return document
28
29     def getPage(self, url, exp_status=200):
30         return self.request(url, 'get', exp_status=exp_status)
31
32     def postPage(self, url, params, exp_status=200):
33         return self.request(url, 'post', params=params, exp_status=exp_status)
34
35 @pytest.fixture
36 def c(client):
37     return ValidatingClient(client)
38
39 @pytest.fixture
40 def c_adm(admin_client):
41     return ValidatingClient(admin_client)