]> git.proxmox.com Git - ceph.git/blame - 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
CommitLineData
f67539c2 1# -*- coding: utf-8 -*-
f67539c2
TL
2
3import unittest
4
a4b75251
TL
5from ..controllers._api_router import APIRouter
6from ..controllers._rest_controller import RESTController
7from ..controllers._version import APIVersion
8from ..tests import ControllerTestCase
f67539c2
TL
9
10
a4b75251 11@APIRouter("/vtest", secure=False)
f67539c2
TL
12class VTest(RESTController):
13 RESOURCE_ID = "vid"
14
a4b75251 15 @RESTController.MethodMap(version=APIVersion(0, 1))
f67539c2
TL
16 def list(self):
17 return {'version': ""}
18
19 def get(self):
20 return {'version': ""}
21
a4b75251 22 @RESTController.Collection('GET', version=APIVersion(1, 0))
f67539c2
TL
23 def vmethod(self):
24 return {'version': '1.0'}
25
a4b75251
TL
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))
f67539c2
TL
31 def vmethodv2(self):
32 return {'version': '2.0'}
33
34
35class RESTVersioningTest(ControllerTestCase, unittest.TestCase):
36 @classmethod
37 def setup_server(cls):
38 cls.setup_controllers([VTest], "/test")
39
b3b6e05e
TL
40 def test_list(self):
41 for (version, expected_status) in [
a4b75251
TL
42 ((0, 1), 200),
43 ((2, 0), 415)
b3b6e05e
TL
44 ]:
45 with self.subTest(version=version):
a4b75251 46 self._get('/test/api/vtest', version=APIVersion._make(version))
b3b6e05e
TL
47 self.assertStatus(expected_status)
48
f67539c2
TL
49 def test_v1(self):
50 for (version, expected_status) in [
a4b75251
TL
51 ((1, 0), 200),
52 ((2, 0), 415)
f67539c2
TL
53 ]:
54 with self.subTest(version=version):
a4b75251
TL
55 self._get('/test/api/vtest/vmethod',
56 version=APIVersion._make(version))
f67539c2
TL
57 self.assertStatus(expected_status)
58
59 def test_v2(self):
60 for (version, expected_status) in [
a4b75251
TL
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)
f67539c2
TL
74 ]:
75 with self.subTest(version=version):
a4b75251
TL
76 self._get('/test/api/vtest/vmethodv1_1',
77 version=APIVersion._make(version))
f67539c2 78 self.assertStatus(expected_status)