]>
Commit | Line | Data |
---|---|---|
11fdf7f2 | 1 | # -*- coding: utf-8 -*- |
11fdf7f2 | 2 | |
a4b75251 TL |
3 | from ..controllers import APIRouter, BaseController, Endpoint, RESTController, Router |
4 | from ..tests import ControllerTestCase | |
11fdf7f2 TL |
5 | |
6 | ||
a4b75251 | 7 | @Router("/btest/{key}", base_url="/ui", secure=False) |
11fdf7f2 TL |
8 | class BTest(BaseController): |
9 | @Endpoint() | |
10 | def test1(self, key, opt=1): | |
11 | return {'key': key, 'opt': opt} | |
12 | ||
13 | @Endpoint() | |
14 | def test2(self, key, skey, opt=1): | |
15 | return {'key': key, 'skey': skey, 'opt': opt} | |
16 | ||
17 | @Endpoint(path="/foo/{skey}/test-3") | |
18 | def test3(self, key, skey, opt=1): | |
19 | return {'key': key, 'skey': skey, 'opt': opt} | |
20 | ||
21 | @Endpoint('POST', path="/foo/{skey}/test-3", query_params=['opt']) | |
22 | def test4(self, key, skey, data, opt=1): | |
23 | return {'key': key, 'skey': skey, 'data': data, 'opt': opt} | |
24 | ||
25 | @Endpoint('PUT', path_params=['skey'], query_params=['opt']) | |
26 | def test5(self, key, skey, data1, data2=None, opt=1): | |
27 | return {'key': key, 'skey': skey, 'data1': data1, 'data2': data2, | |
28 | 'opt': opt} | |
29 | ||
30 | @Endpoint('GET', json_response=False) | |
31 | def test6(self, key, opt=1): | |
32 | return "My Formatted string key={} opt={}".format(key, opt) | |
33 | ||
34 | @Endpoint() | |
35 | def __call__(self, key, opt=1): | |
36 | return {'key': key, 'opt': opt} | |
37 | ||
38 | ||
a4b75251 | 39 | @APIRouter("/rtest/{key}", secure=False) |
11fdf7f2 TL |
40 | class RTest(RESTController): |
41 | RESOURCE_ID = 'skey/ekey' | |
42 | ||
43 | def list(self, key, opt=1): | |
44 | return {'key': key, 'opt': opt} | |
45 | ||
46 | def create(self, key, data1, data2=None): | |
47 | return {'key': key, 'data1': data1, 'data2': data2} | |
48 | ||
49 | def get(self, key, skey, ekey, opt=1): | |
50 | return {'key': key, 'skey': skey, 'ekey': ekey, 'opt': opt} | |
51 | ||
52 | def set(self, key, skey, ekey, data): | |
53 | return {'key': key, 'skey': skey, 'ekey': ekey, 'data': data} | |
54 | ||
55 | def delete(self, key, skey, ekey, opt=1): | |
56 | pass | |
57 | ||
58 | def bulk_set(self, key, data1, data2=None): | |
59 | return {'key': key, 'data1': data1, 'data2': data2} | |
60 | ||
61 | def bulk_delete(self, key, opt=1): | |
62 | pass | |
63 | ||
64 | @RESTController.Collection('POST') | |
65 | def cmethod(self, key, data): | |
66 | return {'key': key, 'data': data} | |
67 | ||
68 | @RESTController.Resource('GET') | |
69 | def rmethod(self, key, skey, ekey, opt=1): | |
70 | return {'key': key, 'skey': skey, 'ekey': ekey, 'opt': opt} | |
71 | ||
72 | ||
a4b75251 | 73 | @Router("/", secure=False) |
11fdf7f2 TL |
74 | class Root(BaseController): |
75 | @Endpoint(json_response=False) | |
76 | def __call__(self): | |
77 | return "<html></html>" | |
78 | ||
79 | ||
80 | class ControllersTest(ControllerTestCase): | |
81 | @classmethod | |
82 | def setup_server(cls): | |
83 | cls.setup_controllers([BTest, RTest], "/test") | |
84 | ||
85 | def test_1(self): | |
86 | self._get('/test/ui/btest/{}/test1?opt=3'.format(100)) | |
87 | self.assertStatus(200) | |
88 | self.assertJsonBody({'key': '100', 'opt': '3'}) | |
89 | ||
90 | def test_2(self): | |
91 | self._get('/test/ui/btest/{}/test2/{}?opt=3'.format(100, 200)) | |
92 | self.assertStatus(200) | |
93 | self.assertJsonBody({'key': '100', 'skey': '200', 'opt': '3'}) | |
94 | ||
95 | def test_3(self): | |
96 | self._get('/test/ui/btest/{}/foo/{}/test-3?opt=3'.format(100, 200)) | |
97 | self.assertStatus(200) | |
98 | self.assertJsonBody({'key': '100', 'skey': '200', 'opt': '3'}) | |
99 | ||
100 | def test_4(self): | |
101 | self._post('/test/ui/btest/{}/foo/{}/test-3?opt=3'.format(100, 200), | |
102 | {'data': 30}) | |
103 | self.assertStatus(200) | |
104 | self.assertJsonBody({'key': '100', 'skey': '200', 'data': 30, | |
105 | 'opt': '3'}) | |
106 | ||
107 | def test_5(self): | |
108 | self._put('/test/ui/btest/{}/test5/{}?opt=3'.format(100, 200), | |
109 | {'data1': 40, 'data2': "hello"}) | |
110 | self.assertStatus(200) | |
111 | self.assertJsonBody({'key': '100', 'skey': '200', 'data1': 40, | |
112 | 'data2': "hello", 'opt': '3'}) | |
113 | ||
114 | def test_6(self): | |
115 | self._get('/test/ui/btest/{}/test6'.format(100)) | |
116 | self.assertStatus(200) | |
117 | self.assertBody("My Formatted string key=100 opt=1") | |
118 | ||
119 | def test_7(self): | |
120 | self._get('/test/ui/btest/{}?opt=3'.format(100)) | |
121 | self.assertStatus(200) | |
122 | self.assertJsonBody({'key': '100', 'opt': '3'}) | |
123 | ||
124 | def test_rest_list(self): | |
125 | self._get('/test/api/rtest/{}?opt=2'.format(300)) | |
126 | self.assertStatus(200) | |
127 | self.assertJsonBody({'key': '300', 'opt': '2'}) | |
128 | ||
129 | def test_rest_create(self): | |
130 | self._post('/test/api/rtest/{}'.format(300), | |
131 | {'data1': 20, 'data2': True}) | |
132 | self.assertStatus(201) | |
133 | self.assertJsonBody({'key': '300', 'data1': 20, 'data2': True}) | |
134 | ||
135 | def test_rest_get(self): | |
136 | self._get('/test/api/rtest/{}/{}/{}?opt=3'.format(300, 1, 2)) | |
137 | self.assertStatus(200) | |
138 | self.assertJsonBody({'key': '300', 'skey': '1', 'ekey': '2', | |
139 | 'opt': '3'}) | |
140 | ||
141 | def test_rest_set(self): | |
142 | self._put('/test/api/rtest/{}/{}/{}'.format(300, 1, 2), | |
143 | {'data': 40}) | |
144 | self.assertStatus(200) | |
145 | self.assertJsonBody({'key': '300', 'skey': '1', 'ekey': '2', | |
146 | 'data': 40}) | |
147 | ||
148 | def test_rest_delete(self): | |
149 | self._delete('/test/api/rtest/{}/{}/{}?opt=3'.format(300, 1, 2)) | |
150 | self.assertStatus(204) | |
151 | ||
152 | def test_rest_bulk_set(self): | |
153 | self._put('/test/api/rtest/{}'.format(300), | |
154 | {'data1': 20, 'data2': True}) | |
155 | self.assertStatus(200) | |
156 | self.assertJsonBody({'key': '300', 'data1': 20, 'data2': True}) | |
157 | ||
158 | self._put('/test/api/rtest/{}'.format(400), | |
159 | {'data1': 20, 'data2': ['one', 'two', 'three']}) | |
160 | self.assertStatus(200) | |
161 | self.assertJsonBody({ | |
162 | 'key': '400', | |
163 | 'data1': 20, | |
164 | 'data2': ['one', 'two', 'three'], | |
165 | }) | |
166 | ||
167 | def test_rest_bulk_delete(self): | |
168 | self._delete('/test/api/rtest/{}?opt=2'.format(300)) | |
169 | self.assertStatus(204) | |
170 | ||
171 | def test_rest_collection(self): | |
172 | self._post('/test/api/rtest/{}/cmethod'.format(300), {'data': 30}) | |
173 | self.assertStatus(200) | |
174 | self.assertJsonBody({'key': '300', 'data': 30}) | |
175 | ||
176 | def test_rest_resource(self): | |
177 | self._get('/test/api/rtest/{}/{}/{}/rmethod?opt=4'.format(300, 2, 3)) | |
178 | self.assertStatus(200) | |
179 | self.assertJsonBody({'key': '300', 'skey': '2', 'ekey': '3', | |
180 | 'opt': '4'}) | |
181 | ||
182 | ||
183 | class RootControllerTest(ControllerTestCase): | |
184 | @classmethod | |
185 | def setup_server(cls): | |
186 | cls.setup_controllers([Root]) | |
187 | ||
188 | def test_index(self): | |
189 | self._get("/") | |
190 | self.assertBody("<html></html>") |