123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- # -*- coding: utf-8 -*-
- """
- :codeauthor: Jayesh Kariya <jayeshk@saltstack.com>
- """
- # Import Python libs
- from __future__ import absolute_import, print_function, unicode_literals
- # Import Salt Libs
- import salt.states.boto_dynamodb as boto_dynamodb
- # Import Salt Testing Libs
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.mock import MagicMock, patch
- from tests.support.unit import TestCase
- class BotoDynamodbTestCase(TestCase, LoaderModuleMockMixin):
- """
- Test cases for salt.states.boto_dynamodb
- """
- def setup_loader_modules(self):
- return {boto_dynamodb: {}}
- # 'present' function tests: 1
- def test_present(self):
- """
- Test to ensure the DynamoDB table exists.
- """
- name = "new_table"
- ret = {"name": name, "result": True, "changes": {}, "comment": ""}
- exists_mock = MagicMock(side_effect=[True, False, False])
- dict_mock = MagicMock(return_value={})
- mock_bool = MagicMock(return_value=True)
- pillar_mock = MagicMock(return_value=[])
- with patch.dict(
- boto_dynamodb.__salt__,
- {
- "boto_dynamodb.exists": exists_mock,
- "boto_dynamodb.describe": dict_mock,
- "config.option": dict_mock,
- "pillar.get": pillar_mock,
- "boto_dynamodb.create_table": mock_bool,
- },
- ):
- comt = (
- "DynamoDB table {0} exists,\n"
- "DynamoDB table {0} throughput matches,\n"
- "All global secondary indexes match,\n".format(name)
- )
- ret.update({"comment": comt})
- self.assertDictEqual(boto_dynamodb.present(name), ret)
- with patch.dict(boto_dynamodb.__opts__, {"test": True}):
- comt = "DynamoDB table {0} would be created.".format(name)
- ret.update({"comment": comt, "result": None})
- self.assertDictEqual(boto_dynamodb.present(name), ret)
- changes = {
- "new": {
- "global_indexes": None,
- "hash_key": None,
- "hash_key_data_type": None,
- "local_indexes": None,
- "range_key": None,
- "range_key_data_type": None,
- "read_capacity_units": None,
- "table": "new_table",
- "write_capacity_units": None,
- }
- }
- with patch.dict(boto_dynamodb.__opts__, {"test": False}):
- comt = (
- "DynamoDB table {0} was successfully created,\n"
- "DynamoDB table new_table throughput matches,\n".format(name)
- )
- ret.update({"comment": comt, "result": True, "changes": changes})
- self.assertDictEqual(ret, boto_dynamodb.present(name))
- # 'absent' function tests: 1
- def test_absent(self):
- """
- Test to ensure the DynamoDB table does not exist.
- """
- name = "new_table"
- ret = {"name": name, "result": True, "changes": {}, "comment": ""}
- mock = MagicMock(side_effect=[False, True, True])
- mock_bool = MagicMock(return_value=True)
- with patch.dict(
- boto_dynamodb.__salt__,
- {"boto_dynamodb.exists": mock, "boto_dynamodb.delete": mock_bool},
- ):
- comt = "DynamoDB table {0} does not exist".format(name)
- ret.update({"comment": comt})
- self.assertDictEqual(boto_dynamodb.absent(name), ret)
- with patch.dict(boto_dynamodb.__opts__, {"test": True}):
- comt = "DynamoDB table {0} is set to be deleted".format(name)
- ret.update({"comment": comt, "result": None})
- self.assertDictEqual(boto_dynamodb.absent(name), ret)
- changes = {
- "new": "Table new_table deleted",
- "old": "Table new_table exists",
- }
- with patch.dict(boto_dynamodb.__opts__, {"test": False}):
- comt = "Deleted DynamoDB table {0}".format(name)
- ret.update({"comment": comt, "result": True, "changes": changes})
- self.assertDictEqual(boto_dynamodb.absent(name), ret)
|