def test_parse_int_list(self): '''Tests parsing a required list of int parameters that is provided via GET.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.setlist('test', ['1', '2']) self.assertListEqual(rest_util.parse_int_list(request, 'test'), [1, 2])
def test_parse_int_list_accepted_all(self): '''Tests parsing a list of int parameters where all values are acceptable.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.setlist('test', ['1', '2']) self.assertListEqual(rest_util.parse_int_list(request, 'test', accepted_values=[1, 2]), [1, 2])
def test_parse_string_list_default(self): '''Tests parsing a required list of string parameters that are provided via default value.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.setlist('test', ['value1']) self.assertEqual(rest_util.parse_string_list(request, 'test2', ['value2', 'value3']), ['value2', 'value3'])
def test_parse_string_list_missing(self): '''Tests parsing a required list of string parameters that are missing.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.setlist('test', ['value1', 'value2']) self.assertRaises(BadParameter, rest_util.parse_string_list, request, 'test2')
def test_parse_string_list_accepted_none(self): '''Tests parsing a list of string parameters where none of the values are acceptable.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.setlist('test', ['value1', 'value2']) self.assertRaises(BadParameter, rest_util.parse_string_list, request, 'test', accepted_values=['value'])
def test_parse_string_list_optional(self): '''Tests parsing an optional list of string parameters that are missing.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.setlist('test', ['value1']) self.assertListEqual(rest_util.parse_string_list(request, 'test2', required=False), [])
def test_parse_int_list_accepted_partial(self): '''Tests parsing a list of int parameters where only some values are acceptable.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.setlist('test', ['1', '2']) self.assertRaises(BadParameter, rest_util.parse_int_list, request, 'test', accepted_values=[1])
def test_parse_string_default(self): '''Tests parsing an optional string parameter that is provided via default value.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': 'value1', }) self.assertEqual(rest_util.parse_string(request, 'test2', 'value2'), 'value2')
def test_parse_datetime_missing_timezone(self): '''Tests parsing an ISO datetime missing a timezone.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '2015-01-01T00:00:00', }) self.assertRaises(BadParameter, rest_util.parse_datetime, request, 'test')
def test_parse_datetime_optional(self): '''Tests parsing an optional ISO datetime parameter that is missing.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': 'value1', }) self.assertIsNone(rest_util.parse_datetime(request, 'test2', required=False))
def test_parse_datetime_missing(self): '''Tests parsing a required ISO datetime parameter that is missing.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '10', }) self.assertRaises(BadParameter, rest_util.parse_datetime, request, 'test2')
def test_parse_float_invalid(self): '''Tests parsing a required float parameter that is not a valid number.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': 'abc', }) self.assertRaises(BadParameter, rest_util.parse_float, request, 'test')
def test_parse_duration(self): '''Tests parsing a required ISO duration parameter that is provided via GET.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': 'PT3H0M0S', }) self.assertEqual(rest_util.parse_duration(request, 'test'), datetime.timedelta(0, 10800))
def test_parse_bool_default(self): '''Tests parsing an optional bool parameter that is provided via default value.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': 'true', }) self.assertFalse(rest_util.parse_bool(request, 'test2', False))
def test_parse_float_zero(self): '''Tests parsing an optional float parameter zero instead of using the default value.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '0.0', }) self.assertEqual(rest_util.parse_float(request, 'test', 10.1), 0.0)
def test_parse_float_default(self): '''Tests parsing a required float parameter that is provided via default value.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '10.1', }) self.assertEqual(rest_util.parse_float(request, 'test2', 20.1), 20.1)
def test_has_params_partial(self): '''Tests checking parameter presence when some are given.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test1': 'value1', }) self.assertFalse(rest_util.has_params(request, 'test1', 'test2'))
def test_parse_int_list_default(self): '''Tests parsing a required list of int parameters that are provided via default value.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '1', }) self.assertEqual(rest_util.parse_int_list(request, 'test2', ['2', '3']), [2, 3])
def test_parse_timestamp_datetime(self): '''Tests parsing a valid ISO datetime.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '2015-01-01T00:00:00Z', }) self.assertEqual(rest_util.parse_timestamp(request, 'test'), datetime.datetime(2015, 1, 1, tzinfo=timezone.utc))
def test_parse_int(self): '''Tests parsing a required int parameter that is provided via GET.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '10', }) self.assertEqual(rest_util.parse_int(request, 'test'), 10)
def test_parse_datetime_invalid(self): '''Tests parsing a required ISO datetime parameter that is formatted incorrectly.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '20150101T00:00:00Z', }) self.assertRaises(BadParameter, rest_util.parse_datetime, request, 'test')
def test_parse_int_list_optional(self): '''Tests parsing an optional list of int parameters that are missing.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '1', }) self.assertListEqual(rest_util.parse_int_list(request, 'test2', required=False), [])
def test_parse_datetime_default(self): '''Tests parsing a required ISO datetime parameter that is provided via default value.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '2015-01-01T00:00:00Z', }) default_value = datetime.datetime(2015, 2, 10, tzinfo=timezone.utc) self.assertEqual(rest_util.parse_datetime(request, 'test2', default_value), default_value)
def test_parse_float_accepted_none(self): '''Tests parsing a float parameter where the value is not acceptable.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '1.0', }) self.assertRaises(BadParameter, rest_util.parse_float, request, 'test', accepted_values=[5.0, 10.0])
def test_parse_int_accepted_all(self): '''Tests parsing an int parameter where the value is acceptable.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '1', }) self.assertEqual(rest_util.parse_int(request, 'test', accepted_values=[1, 2, 3]), 1)
def test_parse_float_valid(self): '''Tests parsing a float parameter where the value is acceptable.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '1.1', }) self.assertEqual(rest_util.parse_float(request, 'test', accepted_values=[1.1, 2.2, 3.3]), 1.1)
def test_parse_string_accepted_none(self): '''Tests parsing a string parameter where the value is not acceptable.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': 'value1', }) self.assertRaises(BadParameter, rest_util.parse_string, request, 'test', accepted_values=['value'])
def test_parse_int_list_missing(self): '''Tests parsing a required list of int parameters that are missing.''' request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': '1', 'test': '2', }) self.assertRaises(BadParameter, rest_util.parse_int_list, request, 'test2')
def test_parse_timestamp_duration(self, mock_now): '''Tests parsing a valid ISO duration.''' mock_now.return_value = datetime.datetime(2015, 1, 1, 10, tzinfo=timezone.utc) request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': 'PT3H0M0S', }) self.assertEqual(rest_util.parse_timestamp(request, 'test'), datetime.datetime(2015, 1, 1, 7, tzinfo=timezone.utc))
def test_parse_dict(self): '''Tests parsing a dictionary.''' result = { 'name': 'value', } request = MagicMock(Request) request.QUERY_PARAMS = QueryDict('', mutable=True) request.QUERY_PARAMS.update({ 'test': result, }) self.assertDictEqual(rest_util.parse_dict(request, 'test'), result)