Beispiel #1
0
    def test_float(self):
        self.assertEqual(827.15, data_types.get_typed_value('float', '827.15'))
        self.assertEqual(0.0, data_types.get_typed_value('float', ''))
        self.assertEqual(0.0, data_types.get_typed_value('float', None))

        with self.assertRaises(DataTypeConversionError):
            data_types.get_typed_value('float', 'abc123')
Beispiel #2
0
 def test_empty_types(self):
     self.assertEqual([],
                      data_types.get_typed_value('emptylist',
                                                 'does not matter'))
     self.assertEqual({},
                      data_types.get_typed_value('emptydict',
                                                 'does not matter'))
     self.assertEqual(
         '', data_types.get_typed_value('emptystr', 'does not matter'))
Beispiel #3
0
    def test_decimal(self):
        self.assertEqual(decimal.Decimal('827.15'),
                         data_types.get_typed_value('decimal', '827.15'))
        self.assertEqual(decimal.Decimal('0.0'),
                         data_types.get_typed_value('decimal', ''))
        self.assertEqual(decimal.Decimal('0.0'),
                         data_types.get_typed_value('decimal', None))

        with self.assertRaises(DataTypeConversionError):
            data_types.get_typed_value('decimal', 'abc123')
    def test_date(self):
        with self.assertRaises(DataTypeConversionError):
            data_types.get_typed_value('date', '')

        with self.assertRaises(DataTypeConversionError):
            data_types.get_typed_value('date', 123)

        self.assertEqual(datetime.date(1986, 11, 5),
                         data_types.get_typed_value('date', '1986,11,5'))
        self.assertEqual(datetime.date(2000, 1, 1),
                         data_types.get_typed_value('date', '2000,1,1'))
        self.assertEqual(datetime.date.today(),
                         data_types.get_typed_value('date', 'today'))
        self.assertEqual(datetime.datetime.utcnow().date(),
                         data_types.get_typed_value('date', 'utc_today'))
Beispiel #5
0
 def test_bytes(self):
     self.assertEqual(b'Hello',
                      data_types.get_typed_value('bytes', 'Hello'))
     self.assertEqual(b'Goodbye',
                      data_types.get_typed_value('bytes', b'Goodbye'))
     self.assertEqual(
         b'Cool! \xf0\x9f\x98\x9c',
         data_types.get_typed_value('bytes', 'Cool! \U0001f61c'))
     self.assertEqual(
         b'It works!',
         data_types.get_typed_value('base64_bytes',
                                    base64.b64encode(b'It works!')),
     )
     self.assertEqual(
         b'It still works!',
         data_types.get_typed_value(
             'base64_bytes',
             base64.b64encode(b'It still works!').decode('utf-8')),
     )
     self.assertEqual(b'', data_types.get_typed_value('bytes', ''))
     self.assertEqual(b'', data_types.get_typed_value('bytes', None))
     self.assertEqual(b'', data_types.get_typed_value('base64_bytes', ''))
     self.assertEqual(b'', data_types.get_typed_value('base64_bytes', None))
Beispiel #6
0
    def test_int(self):
        self.assertEqual(six.integer_types[-1](827),
                         data_types.get_typed_value('int', '827'))
        self.assertEqual(
            827284953472372388372372384573592394184838723482384,
            data_types.get_typed_value(
                'int', '827284953472372388372372384573592394184838723482384'),
        )
        self.assertEqual(six.integer_types[-1](0),
                         data_types.get_typed_value('int', ''))
        self.assertEqual(six.integer_types[-1](0),
                         data_types.get_typed_value('int', None))

        with self.assertRaises(DataTypeConversionError):
            data_types.get_typed_value('int', '1.23')
Beispiel #7
0
 def test_unknown(self):
     with self.assertRaises(DataTypeConversionError):
         data_types.get_typed_value('unknown type', 'does not matter')
Beispiel #8
0
    def test_time(self):
        with self.assertRaises(DataTypeConversionError):
            data_types.get_typed_value('time', '')

        with self.assertRaises(DataTypeConversionError):
            # noinspection PyTypeChecker
            data_types.get_typed_value('time', 123)  # type: ignore

        self.assertEqual(datetime.time(13, 11, 5),
                         data_types.get_typed_value('time', '13,11,5'))
        self.assertEqual(datetime.time(3, 14, 16),
                         data_types.get_typed_value('time', '3,14,16'))
        self.assertEqual(datetime.time(0, 0, 0),
                         data_types.get_typed_value('time', 'midnight'))
        self.assertEqual(
            datetime.time(2, 32, 47),
            data_types.get_typed_value('time', 'midnight +0,26,32,47'))
        self.assertEqual(datetime.time(0, 30, 0),
                         data_types.get_typed_value('time', 'midnight 0,0,30'))

        with freezegun.freeze_time(
                datetime.datetime(2018, 4, 1, 12, 17, 43, 192837)):
            self.assertEqual(datetime.time(12, 17, 43),
                             data_types.get_typed_value('time', 'now'))
            self.assertEqual(datetime.time(18, 17, 43),
                             data_types.get_typed_value('time', 'now +0,6'))
            self.assertEqual(
                datetime.datetime.utcnow().replace(microsecond=0).time(),
                data_types.get_typed_value('time', 'utc_now'),
            )
Beispiel #9
0
    def test_datetime(self):
        with self.assertRaises(DataTypeConversionError):
            data_types.get_typed_value('datetime', '')

        with self.assertRaises(DataTypeConversionError):
            # noinspection PyTypeChecker
            data_types.get_typed_value('datetime', 123)  # type: ignore

        self.assertEqual(
            datetime.datetime(2014, 11, 6, 5, 37, 51, 172938),
            data_types.get_typed_value('datetime', '2014,11,6,5,37,51,172938'),
        )
        self.assertEqual(
            datetime.datetime(2019, 6, 6, 17, 0, 0, 0),
            data_types.get_typed_value('datetime', '2019,6,6,17'),
        )

        with freezegun.freeze_time(
                datetime.datetime(2018, 4, 1, 12, 17, 43, 192837)):
            self.assertEqual(datetime.datetime(2018, 4, 1, 12, 17, 43),
                             data_types.get_typed_value('datetime', 'now'))
            self.assertEqual(datetime.datetime(2018, 5, 1, 12, 17, 43),
                             data_types.get_typed_value('datetime', 'now +30'))
            self.assertEqual(
                datetime.datetime(2018, 4, 1, 18, 47, 53, 150),
                data_types.get_typed_value('datetime', 'now 0,6,30,10,150'))

            self.assertEqual(
                datetime.datetime(2018, 4, 1, 0, 0, 0),
                data_types.get_typed_value('datetime', 'midnight'))
            self.assertEqual(
                datetime.datetime(2018, 5, 1, 0, 0, 0),
                data_types.get_typed_value('datetime', 'midnight +30'))
            self.assertEqual(
                datetime.datetime(2018, 4, 1, 6, 30, 10, 150),
                data_types.get_typed_value('datetime',
                                           'midnight 0,6,30,10,150'))

            self.assertEqual(
                datetime.datetime.utcnow().replace(microsecond=0,
                                                   tzinfo=pytz.utc),
                data_types.get_typed_value('datetime', 'utc_now'),
            )

            utc_now = datetime.datetime.utcnow()
            self.assertEqual(
                datetime.datetime(utc_now.year, utc_now.month, utc_now.day, 0,
                                  0, 0).replace(tzinfo=pytz.utc),
                data_types.get_typed_value('datetime', 'utc_midnight'),
            )
Beispiel #10
0
 def test_string(self):
     self.assertEqual('Hello', data_types.get_typed_value('str', 'Hello'))
     self.assertEqual('Cool! \U0001f61c',
                      data_types.get_typed_value('str', 'Cool! \U0001f61c'))
     self.assertEqual(
         'Still works \u000B yo',
         data_types.get_typed_value('encoded_ascii',
                                    'Still works \\x0b yo'),
     )
     self.assertEqual(
         six.text_type,
         type(
             data_types.get_typed_value('encoded_ascii',
                                        'Still works \\x0b yo')))
     self.assertEqual(
         'And another one works \U0001f61c',
         data_types.get_typed_value('encoded_unicode',
                                    'And another one works \\U0001f61c'),
     )
     self.assertEqual(
         six.text_type,
         type(
             data_types.get_typed_value(
                 'encoded_unicode', 'And another one works \\U0001f61c')),
     )
     self.assertEqual(
         'Yes, it works \u000B yo',
         data_types.get_typed_value('str', b'Yes, it works \x0b yo'))
     self.assertEqual(
         six.text_type,
         type(data_types.get_typed_value('str', b'Yes, it works \x0b yo')))
     self.assertEqual('', data_types.get_typed_value('str', b''))
     self.assertEqual('', data_types.get_typed_value('str', ''))
     self.assertEqual('', data_types.get_typed_value('str', None))
Beispiel #11
0
 def test_bool(self):
     self.assertTrue(data_types.get_typed_value('bool', 'TRUE'))
     self.assertTrue(data_types.get_typed_value('bool', 'TRUe'))
     self.assertTrue(data_types.get_typed_value('bool', 'TRue'))
     self.assertTrue(data_types.get_typed_value('bool', 'True'))
     self.assertTrue(data_types.get_typed_value('bool', 'TrUE'))
     self.assertTrue(data_types.get_typed_value('bool', 'TrUe'))
     self.assertTrue(data_types.get_typed_value('bool', 'TruE'))
     self.assertTrue(data_types.get_typed_value('bool', 'tRUE'))
     self.assertTrue(data_types.get_typed_value('bool', 'trUE'))
     self.assertTrue(data_types.get_typed_value('bool', 'truE'))
     self.assertFalse(data_types.get_typed_value('bool', None))
     self.assertFalse(data_types.get_typed_value('bool', ''))
     self.assertFalse(data_types.get_typed_value('bool', 'NaN'))
     self.assertFalse(data_types.get_typed_value('bool', 'false'))
     self.assertFalse(data_types.get_typed_value('bool', 'FALSE'))
     self.assertFalse(data_types.get_typed_value('bool',
                                                 'Anything, really'))
Beispiel #12
0
 def test_special_cases(self):
     self.assertEqual(
         data_types.AnyValue('str'),
         data_types.get_typed_value(None, data_types.AnyValue('str')))
     self.assertEqual(
         data_types.RegexValue(r'^Sing(le)?$'),
         data_types.get_typed_value('does not matter',
                                    data_types.RegexValue(r'^Sing(le)?$')),
     )
     self.assertIsNone(data_types.get_typed_value('None',
                                                  'does not matter'))
     self.assertIsNone(data_types.get_typed_value('none',
                                                  'does not matter'))
     self.assertIsNone(data_types.get_typed_value('null',
                                                  'does not matter'))
     self.assertEqual(
         '[[some.substitution]]',
         data_types.get_typed_value(None, '[[some.substitution]]'))
     self.assertEqual(
         '[[another.1.substitution]]',
         data_types.get_typed_value('does not matter',
                                    '[[another.1.substitution]]'),
     )
     self.assertEqual(
         '[[ACTION_NAME.0.response.body.path]]',
         data_types.get_typed_value(None,
                                    '[[ACTION_NAME.response.body.path]]'),
     )
     self.assertEqual(
         '[[ANOTHER.2.response.body.path]]',
         data_types.get_typed_value(None,
                                    '[[ANOTHER.2.response.body.path]]'),
     )
     self.assertEqual(
         '[[{ESCAPED}.response.body.path]]',
         data_types.get_typed_value(None,
                                    '[[{ESCAPED}.response.body.path]]'),
     )
     self.assertEqual(
         'complex [[some.substitution]] expression [[another.1.substitution]] with '
         '[[ACTION_NAME.0.response.body.path]] many [[ANOTHER.2.response.body.path]] substitutions '
         '[[{ESCAPED}.response.body.path]]',
         data_types.get_typed_value(
             None,
             'complex [[some.substitution]] expression [[another.1.substitution]] with '
             '[[ACTION_NAME.response.body.path]] many [[ANOTHER.2.response.body.path]] substitutions '
             '[[{ESCAPED}.response.body.path]]',
         ))