From 44af53651020b26c3f71d751842218e1650ab71d Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Fri, 29 Jun 2012 21:52:24 -1000 Subject: [PATCH] meh I guess HTTPS works --- README.md | 3 +-- test.py | 32 +++++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e9536b9..b6ba1de 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,8 @@ Ruby's VCR are not compatible with VCR.py. The API is similar but VCR.py doesn't have nearly as many features. ##Known Issues - * Only works with the first HTTP request made in each use_cassette block. That's because I haven't gotten around to implementing multiple requests yet. + * Only works with the first HTTP request made in each use_cassette block. That's because I haven't gotten around to implementing multiple requests yet. This means anything that does a 301 / 302 won't work. * Probably only works with urllib2. Hey, doesn't `requests` use urllib2? Maybe that works too then. - * No HTTPS support (yet) ##Similar libraries in Python Neither of these really implement the API I want, but I have cribbed some code diff --git a/test.py b/test.py index 8e72e34..abfd33a 100644 --- a/test.py +++ b/test.py @@ -8,7 +8,7 @@ TEST_CASSETTE_FILE = 'test/test_req.yaml' class TestHttpRequest(unittest.TestCase): - def setUp(self): + def tearDown(self): try: os.remove(TEST_CASSETTE_FILE) except OSError: @@ -22,15 +22,41 @@ class TestHttpRequest(unittest.TestCase): def test_response_body(self): body = urllib2.urlopen('http://www.iana.org/domains/example/').read() - with vcr.use_cassette('test/synopsis.yaml'): + with vcr.use_cassette(TEST_CASSETTE_FILE): self.assertEqual(body, urllib2.urlopen('http://www.iana.org/domains/example/').read()) self.assertEqual(body, urllib2.urlopen('http://www.iana.org/domains/example/').read()) def test_response_headers(self): - with vcr.use_cassette('test/synopsis.yaml'): + with vcr.use_cassette(TEST_CASSETTE_FILE): headers = urllib2.urlopen('http://www.iana.org/domains/example/').info().items() self.assertEqual(headers, urllib2.urlopen('http://www.iana.org/domains/example/').info().items()) +class TestHttps(unittest.TestCase): + + def tearDown(self): + try: + os.remove(TEST_CASSETTE_FILE) + except OSError: + pass + + def test_response_code(self): + code = urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').getcode() + with vcr.use_cassette(TEST_CASSETTE_FILE): + self.assertEqual(code, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').getcode()) + self.assertEqual(code, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').getcode()) + + def test_response_body(self): + body = urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').read() + with vcr.use_cassette(TEST_CASSETTE_FILE): + self.assertEqual(body, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').read()) + self.assertEqual(body, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').read()) + + def test_response_headers(self): + with vcr.use_cassette(TEST_CASSETTE_FILE): + headers = urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').info().items() + self.assertEqual(headers, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').info().items()) + + if __name__ == '__main__': unittest.main()