From 8f1531a4b28f92fc1f863bc3e6104541f6dd0f4b Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Fri, 28 Mar 2014 20:45:02 +0100 Subject: [PATCH] Fix http storage tests --- tests/storage/test_http.py | 148 +++++++++++++++++++------------------ vdirsyncer/storage/http.py | 2 +- 2 files changed, 79 insertions(+), 71 deletions(-) diff --git a/tests/storage/test_http.py b/tests/storage/test_http.py index 6dea60d..6fd0fbf 100644 --- a/tests/storage/test_http.py +++ b/tests/storage/test_http.py @@ -7,86 +7,94 @@ :license: MIT, see LICENSE for more details. ''' -import mock from .. import assert_item_equals from textwrap import dedent from vdirsyncer.storage.http import HttpStorage, Item +from requests import Response class TestHttpStorage(object): - def test_list(self): + def test_list(self, monkeypatch): collection_url = 'http://127.0.0.1/calendar/collection/' - with mock.patch('requests.get') as p: - p.return_value = r = mock.Mock() + responses = [ + dedent(b''' + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:http://www.example.com/calendarapplication/ + METHOD:PUBLISH + BEGIN:VEVENT + UID:461092315540@example.com + LOCATION:Somewhere + SUMMARY:Eine Kurzinfo + DESCRIPTION:Beschreibung des Termines + CLASS:PUBLIC + DTSTART:20060910T220000Z + DTEND:20060919T215900Z + DTSTAMP:20060812T125900Z + END:VEVENT + BEGIN:VEVENT + UID:461092315asdasd540@example.com + LOCATION:Somewhere else + SUMMARY:Eine zweite Kurzinfo + DESCRIPTION:Beschreibung des anderen Termines + BEGIN:VALARM + ACTION:AUDIO + TRIGGER:19980403T120000 + ATTACH;FMTTYPE=audio/basic:http://host.com/pub/ssbanner.aud + REPEAT:4 + DURATION:PT1H + END:VALARM + END:VEVENT + END:VCALENDAR + ''') + ] + + def get(*a, **kw): + r = Response() r.status_code = 200 - r.text = dedent(u''' - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:http://www.example.com/calendarapplication/ - METHOD:PUBLISH - BEGIN:VEVENT - UID:461092315540@example.com - LOCATION:Somewhere - SUMMARY:Eine Kurzinfo - DESCRIPTION:Beschreibung des Termines - CLASS:PUBLIC - DTSTART:20060910T220000Z - DTEND:20060919T215900Z - DTSTAMP:20060812T125900Z - END:VEVENT - BEGIN:VEVENT - UID:461092315asdasd540@example.com - LOCATION:Somewhere else - SUMMARY:Eine zweite Kurzinfo - DESCRIPTION:Beschreibung des anderen Termines - BEGIN:VALARM - ACTION:AUDIO - TRIGGER:19980403T120000 - ATTACH;FMTTYPE=audio/basic:http://host.com/pub/ssbanner.aud - REPEAT:4 - DURATION:PT1H - END:VALARM - END:VEVENT - END:VCALENDAR - ''') - s = HttpStorage(url=collection_url) + assert responses + r._content = responses.pop() + return r - l = list(s.list()) - r.side_effect = IOError('Nope.') - hrefs = set(href for href, etag in l) - href1 = u'461092315540@example.com' - href2 = u'461092315asdasd540@example.com' - assert hrefs == set((href1, href2)) + monkeypatch.setattr('requests.get', get) - item, etag = s.get(href1) - assert_item_equals(item, Item(dedent(u''' - BEGIN:VEVENT - UID:461092315540@example.com - LOCATION:Somewhere - SUMMARY:Eine Kurzinfo - DESCRIPTION:Beschreibung des Termines - CLASS:PUBLIC - DTSTART:20060910T220000Z - DTEND:20060919T215900Z - DTSTAMP:20060812T125900Z - END:VEVENT - ''').strip())) + s = HttpStorage(url=collection_url) + l = list(s.list()) - item, etag = s.get(href2) - assert_item_equals(item, Item(dedent(u''' - BEGIN:VEVENT - UID:461092315asdasd540@example.com - LOCATION:Somewhere else - SUMMARY:Eine zweite Kurzinfo - DESCRIPTION:Beschreibung des anderen Termines - BEGIN:VALARM - ACTION:AUDIO - TRIGGER:19980403T120000 - ATTACH;FMTTYPE=audio/basic:http://host.com/pub/ssbanner.aud - REPEAT:4 - DURATION:PT1H - END:VALARM - END:VEVENT - ''').strip())) + hrefs = set(href for href, etag in l) + href1 = u'461092315540@example.com' + href2 = u'461092315asdasd540@example.com' + assert hrefs == set((href1, href2)) + + item, etag = s.get(href1) + assert_item_equals(item, Item(dedent(u''' + BEGIN:VEVENT + UID:461092315540@example.com + LOCATION:Somewhere + SUMMARY:Eine Kurzinfo + DESCRIPTION:Beschreibung des Termines + CLASS:PUBLIC + DTSTART:20060910T220000Z + DTEND:20060919T215900Z + DTSTAMP:20060812T125900Z + END:VEVENT + ''').strip())) + + item, etag = s.get(href2) + assert_item_equals(item, Item(dedent(u''' + BEGIN:VEVENT + UID:461092315asdasd540@example.com + LOCATION:Somewhere else + SUMMARY:Eine zweite Kurzinfo + DESCRIPTION:Beschreibung des anderen Termines + BEGIN:VALARM + ACTION:AUDIO + TRIGGER:19980403T120000 + ATTACH;FMTTYPE=audio/basic:http://host.com/pub/ssbanner.aud + REPEAT:4 + DURATION:PT1H + END:VALARM + END:VEVENT + ''').strip())) diff --git a/vdirsyncer/storage/http.py b/vdirsyncer/storage/http.py index 98109b2..97eb7da 100644 --- a/vdirsyncer/storage/http.py +++ b/vdirsyncer/storage/http.py @@ -109,7 +109,7 @@ class HttpStorage(HttpStorageBase): def list(self): if self._items is None: r = requests.get(self.url, **self._settings) - r.raise_on_status() + r.raise_for_status() self._items = {} for item in split_collection(r.text): self._items[item.uid] = item