Skip to content

Commit

Permalink
Merge pull request #21 from metaodi/develop
Browse files Browse the repository at this point in the history
Release 0.3.1
  • Loading branch information
metaodi committed Jun 21, 2014
2 parents 723a14d + c110cd8 commit 53127c8
Show file tree
Hide file tree
Showing 4 changed files with 139 additions and 13 deletions.
15 changes: 12 additions & 3 deletions osmapi/OsmApi.py
Original file line number Diff line number Diff line change
Expand Up @@ -773,9 +773,18 @@ def _http_request(self, cmd, path, auth, send): # noqa
self._conn.putrequest(cmd, path)
self._conn.putheader('User-Agent', self._created_by)
if auth:
base64_user_pass = base64.encodestring(
self._username + ':' + self._password
).strip()
user_pass = self._username + ':' + self._password

try:
# Python 2
base64_user_pass = base64.encodestring(user_pass).strip()
except TypeError:
# Python 3
base64_user_pass = base64.encodestring(
user_pass.encode('ascii')
).strip()
base64_user_pass = base64_user_pass.decode('utf-8')

self._conn.putheader(
'Authorization',
'Basic ' + base64_user_pass
Expand Down
2 changes: 1 addition & 1 deletion osmapi/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from __future__ import (absolute_import, print_function, unicode_literals)

__version__ = '0.3.0'
__version__ = '0.3.1'

from .OsmApi import * # noqa
18 changes: 9 additions & 9 deletions tests/changeset_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,10 @@ def test_ChangesetUpdate(self):
xmltosorteddict(args[3]),
xmltosorteddict(
b'<?xml version="1.0" encoding="UTF-8"?>\n'
b'<osm version="0.6" generator="osmapi/0.3.0">\n'
b'<osm version="0.6" generator="osmapi/0.3.1">\n'
b' <changeset visible="true">\n'
b' <tag k="test" v="foobar"/>\n'
b' <tag k="created_by" v="osmapi/0.3.0"/>\n'
b' <tag k="created_by" v="osmapi/0.3.1"/>\n'
b' </changeset>\n'
b'</osm>\n'
)
Expand Down Expand Up @@ -132,7 +132,7 @@ def test_ChangesetUpdate_with_created_by(self):
xmltosorteddict(args[3]),
xmltosorteddict(
b'<?xml version="1.0" encoding="UTF-8"?>\n'
b'<osm version="0.6" generator="osmapi/0.3.0">\n'
b'<osm version="0.6" generator="osmapi/0.3.1">\n'
b' <changeset visible="true">\n'
b' <tag k="test" v="foobar"/>\n'
b' <tag k="created_by" v="MyTestOSMApp"/>\n'
Expand Down Expand Up @@ -171,10 +171,10 @@ def test_ChangesetCreate(self):
xmltosorteddict(args[3]),
xmltosorteddict(
b'<?xml version="1.0" encoding="UTF-8"?>\n'
b'<osm version="0.6" generator="osmapi/0.3.0">\n'
b'<osm version="0.6" generator="osmapi/0.3.1">\n'
b' <changeset visible="true">\n'
b' <tag k="foobar" v="A new test changeset"/>\n'
b' <tag k="created_by" v="osmapi/0.3.0"/>\n'
b' <tag k="created_by" v="osmapi/0.3.1"/>\n'
b' </changeset>\n'
b'</osm>\n'
)
Expand All @@ -199,7 +199,7 @@ def test_ChangesetCreate_with_created_by(self):
xmltosorteddict(args[3]),
xmltosorteddict(
b'<?xml version="1.0" encoding="UTF-8"?>\n'
b'<osm version="0.6" generator="osmapi/0.3.0">\n'
b'<osm version="0.6" generator="osmapi/0.3.1">\n'
b' <changeset visible="true">\n'
b' <tag k="foobar" v="A new test changeset"/>\n'
b' <tag k="created_by" v="CoolTestApp"/>\n'
Expand Down Expand Up @@ -285,7 +285,7 @@ def test_ChangesetUpload_create_node(self):
xmltosorteddict(args[3]),
xmltosorteddict(
b'<?xml version="1.0" encoding="UTF-8"?>\n'
b'<osmChange version="0.6" generator="osmapi/0.3.0">\n'
b'<osmChange version="0.6" generator="osmapi/0.3.1">\n'
b'<create>\n'
b' <node lat="47.123" lon="8.555" visible="true" '
b'changeset="4444">\n'
Expand Down Expand Up @@ -359,7 +359,7 @@ def test_ChangesetUpload_modify_way(self):
xmltosorteddict(args[3]),
xmltosorteddict(
b'<?xml version="1.0" encoding="UTF-8"?>\n'
b'<osmChange version="0.6" generator="osmapi/0.3.0">\n'
b'<osmChange version="0.6" generator="osmapi/0.3.1">\n'
b'<modify>\n'
b' <way id="4294967296" version="2" visible="true" '
b'changeset="4444">\n'
Expand Down Expand Up @@ -443,7 +443,7 @@ def test_ChangesetUpload_delete_relation(self):
xmltosorteddict(args[3]),
xmltosorteddict(
b'<?xml version="1.0" encoding="UTF-8"?>\n'
b'<osmChange version="0.6" generator="osmapi/0.3.0">\n'
b'<osmChange version="0.6" generator="osmapi/0.3.1">\n'
b'<delete>\n'
b' <relation id="676" version="2" visible="true" '
b'changeset="4444">\n'
Expand Down
117 changes: 117 additions & 0 deletions tests/helper_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
from __future__ import (unicode_literals, absolute_import)
from nose.tools import * # noqa
from . import osmapi_tests
import osmapi
import mock


class TestOsmApiHelper(osmapi_tests.TestOsmApi):
def setUp(self):
super(TestOsmApiHelper, self).setUp()
self.setupMock()

def setupMock(self, status=200):
mock_response = mock.Mock()
mock_response.status = status
mock_response.reason = "test reason"
mock_response.read = mock.Mock(return_value='test response')
self.api._conn.getresponse = mock.Mock(return_value=mock_response)
self.api._conn.putrequest = mock.Mock()
self.api._conn.putheader = mock.Mock()
self.api._conn.send = mock.Mock()
self.api._conn.endheaders = mock.Mock()
self.api._username = 'testuser'
self.api._password = 'testpassword'

def test_http_request_get(self):
response = self.api._http_request(
'GET',
'/api/0.6/test',
False,
None
)
self.api._conn.putrequest.assert_called_with('GET', '/api/0.6/test')
self.assertEquals(response, "test response")
self.assertEquals(self.api._conn.putheader.call_count, 1)

def test_http_request_put(self):
response = self.api._http_request(
'PUT',
'/api/0.6/testput',
False,
"data"
)
self.api._conn.putrequest.assert_called_with(
'PUT',
'/api/0.6/testput'
)
self.assertEquals(response, "test response")
self.assertEquals(self.api._conn.putheader.call_count, 2)
args = self.api._conn.putheader.call_args_list[1]
header, value = args[0]
self.assertEquals(header, 'Content-Length')
self.assertEquals(value, 4)

def test_http_request_delete(self):
response = self.api._http_request(
'PUT',
'/api/0.6/testdelete',
False,
"delete data"
)
self.api._conn.putrequest.assert_called_with(
'PUT',
'/api/0.6/testdelete'
)
self.assertEquals(response, "test response")
self.assertEquals(self.api._conn.putheader.call_count, 2)
args = self.api._conn.putheader.call_args_list[1]
header, value = args[0]
self.assertEquals(header, 'Content-Length')
self.assertEquals(value, 11)

def test_http_request_auth(self):
response = self.api._http_request(
'PUT',
'/api/0.6/testauth',
True,
None
)
self.api._conn.putrequest.assert_called_with(
'PUT',
'/api/0.6/testauth'
)
self.assertEquals(response, "test response")

self.assertEquals(self.api._conn.putheader.call_count, 2)
args = self.api._conn.putheader.call_args_list[1]
header, value = args[0]
self.assertEquals(header, 'Authorization')
self.assertEquals(value, 'Basic dGVzdHVzZXI6dGVzdHBhc3N3b3Jk')

def test_http_request_410_response(self):
self.setupMock(410)
response = self.api._http_request(
'GET',
'/api/0.6/test410',
False,
None
)
self.api._conn.putrequest.assert_called_with(
'GET',
'/api/0.6/test410'
)
self.assertIsNone(response, "test response")

def test_http_request_500_response(self):
self.setupMock(500)
with self.assertRaises(osmapi.ApiError) as cm:
self.api._http_request(
'GET',
'/api/0.6/test500',
False,
None
)
self.assertEquals(cm.exception.status, 500)
self.assertEquals(cm.exception.reason, "test reason")
self.assertEquals(cm.exception.payload, "test response")

0 comments on commit 53127c8

Please sign in to comment.