1from flexget.components.variables.variables import Variables
2from flexget.manager import Session
3from flexget.utils import json
4
5
6class TestVariablesAPI:
7    config = 'tasks: {}'
8
9    variables_dict = {'test_variable_db': True}
10
11    def test_variables_get(self, api_client):
12        with Session() as session:
13            s = Variables(variables=self.variables_dict)
14            session.add(s)
15
16        rsp = api_client.get('/variables/')
17        assert rsp.status_code == 200, 'Response code is %s' % rsp.status_code
18        assert json.loads(rsp.get_data(as_text=True)) == self.variables_dict
19
20    def test_variables_put(self, api_client):
21        rsp = api_client.get('/variables/')
22        assert rsp.status_code == 200, 'Response code is %s' % rsp.status_code
23        assert json.loads(rsp.get_data(as_text=True)) == {}
24
25        rsp = api_client.json_put('/variables/', data=json.dumps(self.variables_dict))
26        assert rsp.status_code == 201, 'Response code is %s' % rsp.status_code
27        assert json.loads(rsp.get_data(as_text=True)) == self.variables_dict
28
29        rsp = api_client.get('/variables/')
30        assert rsp.status_code == 200, 'Response code is %s' % rsp.status_code
31        assert json.loads(rsp.get_data(as_text=True)) == self.variables_dict
32
33    def test_variables_patch(self, api_client):
34        data = {'a': 'b', 'c': 'd'}
35        api_client.json_put('/variables/', data=json.dumps(data))
36        new_data = {'a': [1, 2, 3], 'foo': 'bar'}
37
38        rsp = api_client.json_patch('/variables/', data=json.dumps(new_data))
39        assert rsp.status_code == 200, 'Response code is %s' % rsp.status_code
40        assert json.loads(rsp.get_data(as_text=True)) == {'a': [1, 2, 3], 'foo': 'bar', 'c': 'd'}
41