]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/tests/test_versioning.py
import quincy beta 17.1.0
[ceph.git] / ceph / src / pybind / mgr / dashboard / tests / test_versioning.py
1 # -*- coding: utf-8 -*-
2
3 import unittest
4
5 from ..controllers._api_router import APIRouter
6 from ..controllers._rest_controller import RESTController
7 from ..controllers._version import APIVersion
8 from ..tests import ControllerTestCase
9
10
11 @APIRouter("/vtest", secure=False)
12 class VTest(RESTController):
13 RESOURCE_ID = "vid"
14
15 @RESTController.MethodMap(version=APIVersion(0, 1))
16 def list(self):
17 return {'version': ""}
18
19 def get(self):
20 return {'version': ""}
21
22 @RESTController.Collection('GET', version=APIVersion(1, 0))
23 def vmethod(self):
24 return {'version': '1.0'}
25
26 @RESTController.Collection('GET', version=APIVersion(1, 1))
27 def vmethodv1_1(self):
28 return {'version': '1.1'}
29
30 @RESTController.Collection('GET', version=APIVersion(2, 0))
31 def vmethodv2(self):
32 return {'version': '2.0'}
33
34
35 class RESTVersioningTest(ControllerTestCase, unittest.TestCase):
36 @classmethod
37 def setup_server(cls):
38 cls.setup_controllers([VTest], "/test")
39
40 def test_list(self):
41 for (version, expected_status) in [
42 ((0, 1), 200),
43 ((2, 0), 415)
44 ]:
45 with self.subTest(version=version):
46 self._get('/test/api/vtest', version=APIVersion._make(version))
47 self.assertStatus(expected_status)
48
49 def test_v1(self):
50 for (version, expected_status) in [
51 ((1, 0), 200),
52 ((2, 0), 415)
53 ]:
54 with self.subTest(version=version):
55 self._get('/test/api/vtest/vmethod',
56 version=APIVersion._make(version))
57 self.assertStatus(expected_status)
58
59 def test_v2(self):
60 for (version, expected_status) in [
61 ((2, 0), 200),
62 ((1, 0), 415)
63 ]:
64 with self.subTest(version=version):
65 self._get('/test/api/vtest/vmethodv2',
66 version=APIVersion._make(version))
67 self.assertStatus(expected_status)
68
69 def test_backward_compatibility(self):
70 for (version, expected_status) in [
71 ((1, 1), 200),
72 ((1, 0), 200),
73 ((2, 0), 415)
74 ]:
75 with self.subTest(version=version):
76 self._get('/test/api/vtest/vmethodv1_1',
77 version=APIVersion._make(version))
78 self.assertStatus(expected_status)