From 9c217ae7aec5daa73774859b6bb7e0a2e722aa0a Mon Sep 17 00:00:00 2001 From: Wannes Rombouts <wapiflapi@yahoo.fr> Date: Tue, 4 Jun 2013 11:46:52 +0200 Subject: [PATCH] Added layerGroup tests, fixed an issue with the bound calculations/ --- src/mapfile.py | 6 ++---- src/server.py | 3 +++ tests/testScenario.py | 46 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/src/mapfile.py b/src/mapfile.py index 702f439..ce71b7c 100644 --- a/src/mapfile.py +++ b/src/mapfile.py @@ -128,8 +128,6 @@ class Layer(MetadataMixin): # we need to rename it to something we are sure is not used. sld_layer_name = "__mra_tmp_template" - print new_sld - # This is realy ugly but etree has trouble with namespaces... # TODO: Do this again in an other way. fixedxml = re.sub(' [a-zzA-Z0-9]+:([a-zA-Z0-9]+=")', ' \\1', new_sld) @@ -231,8 +229,8 @@ class LayerGroup(object): extent = layers[0].get_extent() for layer in layers[1:]: e = layer.get_extent() - extent.addX(e.minX, e.maxX) - extent.addY(e.minY, e.maxY) + extent.addX(e.minX(), e.maxX()) + extent.addY(e.minY(), e.maxY()) return extent diff --git a/src/server.py b/src/server.py index 9fb0125..4c0a0da 100755 --- a/src/server.py +++ b/src/server.py @@ -860,6 +860,9 @@ class layergroup(object): raise webapp.Forbidden("Can't change the name of a layergroup.") layers = data.pop("layers", []) + if not isinstance(layers, list) or any(not isinstance(x, basestring) for x in layers): + raise webapp.BadRequest("layers must be a list of layer names.") + lg.clear() lg.add(*layers) diff --git a/tests/testScenario.py b/tests/testScenario.py index ce64d9e..1fc4cd4 100644 --- a/tests/testScenario.py +++ b/tests/testScenario.py @@ -302,26 +302,60 @@ def _test_layers(target, map_name): _, r = APIRequest("POST", target + "/maps/" + map_name + "/layers", {"layer":{"name":name, "resource":{"href":c_link}}}, get_response=True) - ctl_link = r.getheader("Location").rsplit(".", 1)[0] + cl_link = r.getheader("Location").rsplit(".", 1)[0] # Check GET. - ctl = APIRequest("GET", ctl_link)["layer"] - assert ctl["name"] == name - assert ctl["type"] == "RASTER" + cl = APIRequest("GET", cl_link)["layer"] + assert cl["name"] == name + assert cl["type"] == "RASTER" # Check GET. layers = APIRequest("GET", target + "/maps/" + map_name + "/layers")["layers"] assert len(layers) == 2 # check GET fields - fields = APIRequest("GET", ctl_link + "/fields")["fields"] + fields = APIRequest("GET", cl_link + "/fields")["fields"] assert len(fields) == 0 # check GET layerstyles - fields = APIRequest("GET", ctl_link + "/styles")["styles"] + fields = APIRequest("GET", cl_link + "/styles")["styles"] assert len(fields) == 0 + # Now lets try layer groups. + + layers = APIRequest("GET", target + "/maps/" + map_name + "/layergroups")["layerGroups"] + assert len(layers) == 0 + + # POST an empty group + name = "test_group" + _, r = APIRequest("POST", target + "/maps/" + map_name + "/layergroups", {"layerGroup":{"name":name}}, get_response=True) + g_link = r.getheader("Location").rsplit(".", 1)[0] + + # GET it. + group = APIRequest("GET", g_link)["layerGroup"] + assert group["name"] == name + assert len(group["layers"]) == 0 + + # PUT some new layers in it. + group["layers"] = [x["name"] for x in group["layers"]] + [ftl["name"]] + del group["bounds"] + APIRequest("PUT", g_link, {"layerGroup":group}) + + # GET it. + group = APIRequest("GET", g_link)["layerGroup"] + assert len(group["layers"]) == 1 + + # PUT some new layers in it. + group["layers"] = [x["name"] for x in group["layers"]] + [cl["name"]] + del group["bounds"] + APIRequest("PUT", g_link, {"layerGroup":group}) + + # GET it. + group = APIRequest("GET", g_link)["layerGroup"] + assert len(group["layers"]) == 2 + + def test_scenario(): target = "http://localhost:8080" -- GitLab