Skip to content
Snippets Groups Projects
Commit 860de044 authored by Wannes Rombouts's avatar Wannes Rombouts
Browse files

Merge branch 'tests' into develop

parents f6a3e3c9 8c621bf8
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# MapServer REST API is a python wrapper around MapServer which #
# allows to manipulate a mapfile in a RESTFul way. It has been #
# developped to match as close as possible the way the GeoServer #
# REST API acts. #
# #
# Copyright (C) 2011-2013 Neogeo Technologies. #
# #
# This file is part of MapServer Rest API. #
# #
# MapServer Rest API is free software: you can redistribute it #
# and/or modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation, either version 3 of #
# the License, or (at your option) any later version. #
# #
# MapServer Rest API is distributed in the hope that it will be #
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty #
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
File added
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# MapServer REST API is a python wrapper around MapServer which #
# allows to manipulate a mapfile in a RESTFul way. It has been #
# developped to match as close as possible the way the GeoServer #
# REST API acts. #
# #
# Copyright (C) 2011-2013 Neogeo Technologies. #
# #
# This file is part of MapServer Rest API. #
# #
# MapServer Rest API is free software: you can redistribute it #
# and/or modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation, either version 3 of #
# the License, or (at your option) any later version. #
# #
# MapServer Rest API is distributed in the hope that it will be #
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty #
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from utils import APIRequest
import sys
def testScenario():
target = "http://192.168.1.39/mra/"
map_name = "test"
# GET workspaces.
wss = APIRequest("GET", target + "/maps/test/workspaces")["workspaces"]
assert len(wss) == 1
assert wss[0]["name"] == "default"
# GET workspaceName
ws = APIRequest("GET", wss[0]["href"])["workspace"]
assert ws["name"] == wss[0]["name"]
# GET dataStores
dss = APIRequest("GET", ws["dataStores"]["href"])["dataStores"]
# DELETE the dataStores
for ds in dss:
APIRequest("DELETE", ds["href"])
# POST a datastore and GET it
name, title = "testDS1", "test datastore 1"
_, r = APIRequest("POST", ws["dataStores"]["href"], {"dataStore":{"name":name, "title":title}},
get_response=True)
ds_link = r.getheader("Location")
ds = APIRequest("GET", ds_link)["dataStore"]
assert ds["name"] == name
assert ds["title"] == title
# PUT a datastore
ds["title"] = title.upper()
del ds["href"]
APIRequest("PUT", ds_link, {"dataStore":ds})
ds = APIRequest("GET", ds_link)["dataStore"]
assert ds["title"] == title.upper()
# GET featuretypes
fts = APIRequest("GET", ds["href"])["featureTypes"]
assert len(fts) == 0
# PUT file
APIRequest("PUT", ds_link + "/file.shp", open("./files/timezones_shp.zip", "rb"),
encode=None, content_type="application/zip")
ds = APIRequest("GET", ds_link)["dataStore"]
assert ds["connectionParameters"]["path"] = "workspaces/%s/datastores/%s/timezones.shp" % (
ws["name"], ds["name"])
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# MapServer REST API is a python wrapper around MapServer which #
# allows to manipulate a mapfile in a RESTFul way. It has been #
# developped to match as close as possible the way the GeoServer #
# REST API acts. #
# #
# Copyright (C) 2011-2013 Neogeo Technologies. #
# #
# This file is part of MapServer Rest API. #
# #
# MapServer Rest API is free software: you can redistribute it #
# and/or modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation, either version 3 of #
# the License, or (at your option) any later version. #
# #
# MapServer Rest API is distributed in the hope that it will be #
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty #
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
import httplib
import pyxml
import json
import sys
def deduce_content_type(type):
if type == "json":
return "application/json"
elif type == "xml":
return "application/xml"
def APIRequest(method, url, data=None, encode="json", decode="json", content_type=None, expected_type=None, get_response=False):
if encode == "json":
data = json.dumps(data)
elif encode == "xml":
data = pyxml.dumps(data)
if content_type == None:
content_type = deduce_content_type(encode)
surl = httplib.urlsplit(url)
if encode and not url.endswith("." + encode):
url = surl.path + "." + encode
print >>sys.stderr, method, url
conn = httplib.HTTPConnection(surl.hostname, surl.port)
conn.request(method, url, body=data, headers={"Content-Type":content_type})
r = conn.getresponse()
if expected_type == None:
expected_type = deduce_content_type(decode)
# assert expected_type in r.getheader("Content-Type"), "received %s instead of %s" % (
# r.getheader("Content-Type"), expected_type)
recv = r.read()
try:
if decode == "json":
recv = json.loads(recv)
elif decode == "xml":
recv = pyxml.loads(recv)
except:
pass
print >>sys.stderr, r.status, r.reason
assert 200 <= r.status < 300, recv
return (recv, r) if get_response else recv
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment