from datetime import datetime, date import unittest import json import requests from analytics.request import post, DatetimeSerializer class TestRequests(unittest.TestCase): def test_valid_request(self): res = post('testsecret', batch=[{ 'userId': 'userId', 'event': 'python event', 'type': 'track' }]) self.assertEqual(res.status_code, 200) def test_invalid_request_error(self): self.assertRaises(Exception, post, 'testsecret', 'https://api.segment.io', False, '[{]') def test_invalid_host(self): self.assertRaises(Exception, post, 'testsecret', 'api.segment.io/', batch=[]) def test_datetime_serialization(self): data = {'created': datetime(2012, 3, 4, 5, 6, 7, 891011)} result = json.dumps(data, cls=DatetimeSerializer) self.assertEqual(result, '{"created": "2012-03-04T05:06:07.891011"}') def test_date_serialization(self): today = date.today() data = {'created': today} result = json.dumps(data, cls=DatetimeSerializer) expected = '{"created": "%s"}' % today.isoformat() self.assertEqual(result, expected) def test_should_not_timeout(self): res = post('testsecret', batch=[{ 'userId': 'userId', 'event': 'python event', 'type': 'track' }], timeout=15) self.assertEqual(res.status_code, 200) def test_should_timeout(self): with self.assertRaises(requests.ReadTimeout): post('testsecret', batch=[{ 'userId': 'userId', 'event': 'python event', 'type': 'track' }], timeout=0.0001) def test_proxies(self): res = post('testsecret', batch=[{ 'userId': 'userId', 'event': 'python event', 'type': 'track', 'proxies': '203.243.63.16:80' }]) self.assertEqual(res.status_code, 200)