xref: /unit/test/test_static_share.py (revision 1971:3410f9d2a662)
1*1964Szelenkov@nginx.comimport os
2*1964Szelenkov@nginx.comfrom pathlib import Path
3*1964Szelenkov@nginx.com
4*1964Szelenkov@nginx.comimport pytest
5*1964Szelenkov@nginx.comfrom unit.applications.proto import TestApplicationProto
6*1964Szelenkov@nginx.com
7*1964Szelenkov@nginx.com
8*1964Szelenkov@nginx.comclass TestStaticShare(TestApplicationProto):
9*1964Szelenkov@nginx.com    prerequisites = {}
10*1964Szelenkov@nginx.com
11*1964Szelenkov@nginx.com    @pytest.fixture(autouse=True)
12*1964Szelenkov@nginx.com    def setup_method_fixture(self, temp_dir):
13*1964Szelenkov@nginx.com        os.makedirs(temp_dir + '/assets/dir')
14*1964Szelenkov@nginx.com        os.makedirs(temp_dir + '/assets/dir2')
15*1964Szelenkov@nginx.com
16*1964Szelenkov@nginx.com        Path(temp_dir + '/assets/dir/file').write_text('1')
17*1964Szelenkov@nginx.com        Path(temp_dir + '/assets/dir2/file2').write_text('2')
18*1964Szelenkov@nginx.com
19*1964Szelenkov@nginx.com        assert 'success' in self.conf(
20*1964Szelenkov@nginx.com            {
21*1964Szelenkov@nginx.com                "listeners": {"*:7080": {"pass": "routes"}},
22*1964Szelenkov@nginx.com                "routes": [{"action": {"share": temp_dir + "/assets$uri"}}],
23*1964Szelenkov@nginx.com                "applications": {},
24*1964Szelenkov@nginx.com            }
25*1964Szelenkov@nginx.com        )
26*1964Szelenkov@nginx.com
27*1964Szelenkov@nginx.com    def action_update(self, conf):
28*1964Szelenkov@nginx.com        assert 'success' in self.conf(conf, 'routes/0/action')
29*1964Szelenkov@nginx.com
30*1964Szelenkov@nginx.com    def test_share_array(self, temp_dir):
31*1964Szelenkov@nginx.com        assert self.get(url='/dir/file')['body'] == '1'
32*1964Szelenkov@nginx.com        assert self.get(url='/dir2/file2')['body'] == '2'
33*1964Szelenkov@nginx.com
34*1964Szelenkov@nginx.com        self.action_update({"share": [temp_dir + "/assets/dir$uri"]})
35*1964Szelenkov@nginx.com
36*1964Szelenkov@nginx.com        assert self.get(url='/file')['body'] == '1'
37*1964Szelenkov@nginx.com        assert self.get(url='/file2')['status'] == 404
38*1964Szelenkov@nginx.com
39*1964Szelenkov@nginx.com        self.action_update(
40*1964Szelenkov@nginx.com            {
41*1964Szelenkov@nginx.com                "share": [
42*1964Szelenkov@nginx.com                    temp_dir + "/assets/dir$uri",
43*1964Szelenkov@nginx.com                    temp_dir + "/assets/dir2$uri",
44*1964Szelenkov@nginx.com                ]
45*1964Szelenkov@nginx.com            }
46*1964Szelenkov@nginx.com        )
47*1964Szelenkov@nginx.com
48*1964Szelenkov@nginx.com        assert self.get(url='/file')['body'] == '1'
49*1964Szelenkov@nginx.com        assert self.get(url='/file2')['body'] == '2'
50*1964Szelenkov@nginx.com
51*1964Szelenkov@nginx.com        self.action_update(
52*1964Szelenkov@nginx.com            {
53*1964Szelenkov@nginx.com                "share": [
54*1964Szelenkov@nginx.com                    temp_dir + "/assets/dir2$uri",
55*1964Szelenkov@nginx.com                    temp_dir + "/assets/dir3$uri",
56*1964Szelenkov@nginx.com                ]
57*1964Szelenkov@nginx.com            }
58*1964Szelenkov@nginx.com        )
59*1964Szelenkov@nginx.com
60*1964Szelenkov@nginx.com        assert self.get(url='/file')['status'] == 404
61*1964Szelenkov@nginx.com        assert self.get(url='/file2')['body'] == '2'
62*1964Szelenkov@nginx.com
63*1964Szelenkov@nginx.com    def test_share_array_fallback(self):
64*1964Szelenkov@nginx.com        self.action_update(
65*1964Szelenkov@nginx.com            {"share": ["/blah", "/blah2"], "fallback": {"return": 201}}
66*1964Szelenkov@nginx.com        )
67*1964Szelenkov@nginx.com
68*1964Szelenkov@nginx.com        assert self.get()['status'] == 201
69*1964Szelenkov@nginx.com
70*1964Szelenkov@nginx.com    def test_share_array_invalid(self):
71*1964Szelenkov@nginx.com        assert 'error' in self.conf({"share": []}, 'routes/0/action')
72*1964Szelenkov@nginx.com        assert 'error' in self.conf({"share": {}}, 'routes/0/action')
73