6da4905da9
* Fix AttributeNames for sqs.receive_message * Fix Lambda issue * Change to parametrized tests * Simplify attribute logic
86 lines
2.2 KiB
Python
86 lines
2.2 KiB
Python
from __future__ import unicode_literals
|
|
|
|
import copy
|
|
import sys
|
|
|
|
import pytest
|
|
import sure # noqa
|
|
from freezegun import freeze_time
|
|
|
|
from moto.core.utils import (
|
|
camelcase_to_underscores,
|
|
underscores_to_camelcase,
|
|
unix_time,
|
|
py2_strip_unicode_keys,
|
|
camelcase_to_pascal,
|
|
pascal_to_camelcase,
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input,expected",
|
|
[
|
|
("theNewAttribute", "the_new_attribute"),
|
|
("attri bute With Space", "attribute_with_space"),
|
|
("FirstLetterCapital", "first_letter_capital"),
|
|
("ListMFADevices", "list_mfa_devices"),
|
|
],
|
|
)
|
|
def test_camelcase_to_underscores(input, expected):
|
|
camelcase_to_underscores(input).should.equal(expected)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input,expected",
|
|
[("the_new_attribute", "theNewAttribute"), ("attribute", "attribute"),],
|
|
)
|
|
def test_underscores_to_camelcase(input, expected):
|
|
underscores_to_camelcase(input).should.equal(expected)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input,expected",
|
|
[("TheNewAttribute", "theNewAttribute"), ("Attribute", "attribute"),],
|
|
)
|
|
def test_pascal_to_camelcase(input, expected):
|
|
pascal_to_camelcase(input).should.equal(expected)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input,expected",
|
|
[("theNewAttribute", "TheNewAttribute"), ("attribute", "Attribute"),],
|
|
)
|
|
def test_camelcase_to_pascal(input, expected):
|
|
camelcase_to_pascal(input).should.equal(expected)
|
|
|
|
|
|
@freeze_time("2015-01-01 12:00:00")
|
|
def test_unix_time():
|
|
unix_time().should.equal(1420113600.0)
|
|
|
|
|
|
if sys.version_info[0] < 3:
|
|
# Tests for unicode removals (Python 2 only)
|
|
def _verify_no_unicode(blob):
|
|
"""Verify that no unicode values exist"""
|
|
if type(blob) == dict:
|
|
for key, value in blob.items():
|
|
assert type(key) != unicode
|
|
_verify_no_unicode(value)
|
|
|
|
elif type(blob) in [list, set]:
|
|
for item in blob:
|
|
_verify_no_unicode(item)
|
|
|
|
assert blob != unicode
|
|
|
|
def test_py2_strip_unicode_keys():
|
|
bad_dict = {
|
|
"some": "value",
|
|
"a": {"nested": ["List", "of", {"unicode": "values"}]},
|
|
"and a": {"nested", "set", "of", 5, "values"},
|
|
}
|
|
|
|
result = py2_strip_unicode_keys(copy.deepcopy(bad_dict))
|
|
_verify_no_unicode(result)
|