|
1 | 1 | import ns1.rest.zones
|
2 | 2 | import pytest
|
| 3 | +import os |
3 | 4 |
|
4 | 5 | try: # Python 3.3 +
|
5 | 6 | import unittest.mock as mock
|
@@ -64,6 +65,133 @@ def test_rest_zone_version_list(zones_config, zone, url):
|
64 | 65 | )
|
65 | 66 |
|
66 | 67 |
|
| 68 | +@pytest.mark.parametrize( |
| 69 | + "zone, name, url", |
| 70 | + [ |
| 71 | + ("test.zone", None, "zones/test.zone"), |
| 72 | + ("test.zone", "test.name", "zones/test.name"), |
| 73 | + ], |
| 74 | +) |
| 75 | +def test_rest_zone_create(zones_config, zone, name, url): |
| 76 | + z = ns1.rest.zones.Zones(zones_config) |
| 77 | + z._make_request = mock.MagicMock() |
| 78 | + z.create(zone, name=name) |
| 79 | + z._make_request.assert_called_once_with( |
| 80 | + "PUT", url, body={"zone": zone}, callback=None, errback=None |
| 81 | + ) |
| 82 | + |
| 83 | + |
| 84 | +@pytest.mark.parametrize( |
| 85 | + "zone, name, url, params", |
| 86 | + [ |
| 87 | + ("test.zone", None, "zones/test.zone", {}), |
| 88 | + ("test.zone", "test.name", "zones/test.name", {}), |
| 89 | + ("test.zone", "test2.name", "zones/test2.name", {"networks": [1, 2]}), |
| 90 | + ( |
| 91 | + "test.zone", |
| 92 | + "test3.name", |
| 93 | + "zones/test3.name", |
| 94 | + {"networks": [1, 2], "views": "testview"}, |
| 95 | + ), |
| 96 | + ( |
| 97 | + "test.zone", |
| 98 | + "test4.name", |
| 99 | + "zones/test4.name", |
| 100 | + {"hostmaster": "example:example.com"}, |
| 101 | + ), |
| 102 | + ], |
| 103 | +) |
| 104 | +def test_rest_zone_create_with_params(zones_config, zone, name, url, params): |
| 105 | + z = ns1.rest.zones.Zones(zones_config) |
| 106 | + z._make_request = mock.MagicMock() |
| 107 | + z.create(zone, name=name, **params) |
| 108 | + body = params |
| 109 | + body["zone"] = zone |
| 110 | + z._make_request.assert_called_once_with( |
| 111 | + "PUT", url, body=body, callback=None, errback=None |
| 112 | + ) |
| 113 | + |
| 114 | + |
| 115 | +@pytest.mark.parametrize( |
| 116 | + "zone, name, url, networks, views", |
| 117 | + [ |
| 118 | + ("test.zone", None, "import/zonefile/test.zone", None, None), |
| 119 | + ("test.zone", "test.name", "import/zonefile/test.zone", None, None), |
| 120 | + ( |
| 121 | + "test.zone", |
| 122 | + "test.name", |
| 123 | + "import/zonefile/test.zone", |
| 124 | + [1, 2, 99], |
| 125 | + None, |
| 126 | + ), |
| 127 | + ( |
| 128 | + "test.zone", |
| 129 | + "test.name", |
| 130 | + "import/zonefile/test.zone", |
| 131 | + None, |
| 132 | + ["view1", "view2"], |
| 133 | + ), |
| 134 | + ( |
| 135 | + "test.zone", |
| 136 | + "test.name", |
| 137 | + "import/zonefile/test.zone", |
| 138 | + [3, 4, 99], |
| 139 | + ["viewA", "viewB"], |
| 140 | + ), |
| 141 | + ], |
| 142 | +) |
| 143 | +def test_rest_zone_import_file(zones_config, zone, name, url, networks, views): |
| 144 | + z = ns1.rest.zones.Zones(zones_config) |
| 145 | + z._make_request = mock.MagicMock() |
| 146 | + params = {} |
| 147 | + networks_strs = None |
| 148 | + if networks is not None: |
| 149 | + networks_strs = map(str, networks) |
| 150 | + params["networks"] = ",".join(networks_strs) |
| 151 | + if views is not None: |
| 152 | + params["views"] = ",".join(views) |
| 153 | + |
| 154 | + zoneFilePath = "{}/../../examples/importzone.db".format( |
| 155 | + os.path.dirname(os.path.abspath(__file__)) |
| 156 | + ) |
| 157 | + |
| 158 | + def cb(): |
| 159 | + # Should never be printed but provides a function body. |
| 160 | + print("Callback invoked!") |
| 161 | + |
| 162 | + # Test without zone name parameter |
| 163 | + z.import_file( |
| 164 | + zone, |
| 165 | + zoneFilePath, |
| 166 | + callback=cb, |
| 167 | + errback=None, |
| 168 | + networks=networks, |
| 169 | + views=views, |
| 170 | + ) |
| 171 | + |
| 172 | + z._make_request.assert_called_once_with( |
| 173 | + "PUT", url, files=mock.ANY, callback=cb, errback=None, params=params |
| 174 | + ) |
| 175 | + |
| 176 | + # Test with new zone name parameter (extra argument) |
| 177 | + z._make_request.reset_mock() |
| 178 | + |
| 179 | + if name is not None: |
| 180 | + params["name"] = name |
| 181 | + z.import_file( |
| 182 | + zone, |
| 183 | + zoneFilePath, |
| 184 | + networks=networks, |
| 185 | + views=views, |
| 186 | + name=name, |
| 187 | + callback=cb, |
| 188 | + ) |
| 189 | + |
| 190 | + z._make_request.assert_called_once_with( |
| 191 | + "PUT", url, files=mock.ANY, callback=cb, errback=None, params=params |
| 192 | + ) |
| 193 | + |
| 194 | + |
67 | 195 | @pytest.mark.parametrize(
|
68 | 196 | "zone, url", [("test.zone", "zones/test.zone/versions?force=false")]
|
69 | 197 | )
|
|
0 commit comments