def test_set_value_sets_value(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('foo.bar.BAZ')
         self.assertEqual(p.value, None)
         p.value = 'foo'
         self.assertEqual(p.value, 'foo')
 def test_set_name_sets_prefix(self):
     from_aws = Mock()
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             from_aws)
         p = UnboundParameter('BAZ')
         p.name = 'foo.bar.BARNEY'
         self.assertEqual(p.prefix, 'foo.bar.')
 def test_set_prefix_accepts_empty_prefixes(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('foo.bar.BAZ')
         p.prefix = ''
         self.assertEqual(p.prefix, '')
         self.assertEqual(p.name, 'BAZ')
 def test_set_key_sets_key(self):
     from_aws = Mock()
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             from_aws)
         p = UnboundParameter('BAZ')
         p.key = 'BARNEY'
         self.assertEqual(p.key, 'BARNEY')
 def test_set_prefix_converts_None_to_empty_string(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('foo.bar.BAZ')
         p.prefix = None
         self.assertEqual(p.prefix, '')
         self.assertEqual(p.name, 'BAZ')
 def test_set_key_reloads_aws_object(self):
     from_aws = Mock()
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             from_aws)
         p = UnboundParameter('BAZ')
         p.key = 'BARNEY'
         compare(from_aws.mock_calls, [call(), call()])
 def test__render_read(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('foo.bar.BAZ')
         compare(p._render_read(), {
             'Names': ['foo.bar.BAZ'],
             'WithDecryption': True
         })
 def test_set_key_sets_key_without_changing_prefix(self):
     from_aws = Mock()
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             from_aws)
         p = UnboundParameter('foo.bar.BAZ')
         p.key = 'BARNEY'
         self.assertEqual(p.key, 'BARNEY')
         self.assertEqual(p.prefix, 'foo.bar.')
 def test_set_key_refuses_empty_keys(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('BAZ')
         with self.assertRaises(ValueError):
             p.key = ''
         with self.assertRaises(ValueError):
             p.key = None
 def test_save_throws_ValueError_if_aws_object_and_not_overwrite(self):
     fake_boto3_session, put_parameter = self.get_mock_boto3_session(
         response={'Parameters': [{
             'Type': 'String'
         }]})
     with Replacer() as r:
         r.replace('deployfish.aws.systems_manager.get_boto3_session',
                   fake_boto3_session)
         p = UnboundParameter('foo.bar.BAZ', kms_key_id='my_key')
         p.value = 'foobar'
         with self.assertRaises(ValueError):
             p.save()
         put_parameter.assert_not_called()
 def test__render_write_no_encryption(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('foo.bar.BAZ')
         p.value = 'my_value'
         compare(
             p._render_write(), {
                 'Name': 'foo.bar.BAZ',
                 'Value': 'my_value',
                 'Overwrite': True,
                 'Type': 'String'
             })
 def test_get_value_returns_aws_value_if_aws_object_and_no_user_set_value(
         self):
     with Replacer() as r:
         r.replace('deployfish.aws.systems_manager.get_boto3_session',
                   self.fake_boto3_session)
         p = UnboundParameter('foo.bar.BAZ')
         self.assertEqual(p.value, 'my_aws_value')
 def test_get_key_returns_correct_key_even_if_no_prefix(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('BAZ')
         self.assertEqual(p.key, 'BAZ')
 def test_get_name_returns_correct_name(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('foo.bar.BAZ')
         self.assertEqual(p.name, 'foo.bar.BAZ')
 def test_get_prefix_returns_empty_string_if_no_prefix(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('BAZ')
         self.assertEqual(p.prefix, '')
 def test__is_secure_key_but_no_aws_object_returns_True(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('foo.bar.BAZ', kms_key_id='my_key')
         self.assertTrue(p.is_secure)
 def test_save_saves_if_no_aws_object(self):
     fake_boto3_session, put_parameter = self.get_mock_boto3_session()
     with Replacer() as r:
         r.replace('deployfish.aws.systems_manager.get_boto3_session',
                   fake_boto3_session)
         p = UnboundParameter('foo.bar.BAZ', kms_key_id='my_key')
         p.value = 'foobar'
         p.save()
         put_parameter.assert_called_once()
         compare(
             put_parameter.call_args,
             call(Name='foo.bar.BAZ',
                  Value='foobar',
                  Overwrite=True,
                  Type='SecureString',
                  KeyId='my_key'))
 def test_get_value_returns_None_if_no_aws_object_and_no_user_set_value(
         self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.UnboundParameter._from_aws',
             Mock())
         p = UnboundParameter('foo.bar.BAZ')
         self.assertEqual(p.value, None)
 def test_get_exists_returns_True_if_aws_object(self):
     with Replacer() as r:
         r.replace(
             'deployfish.aws.systems_manager.get_boto3_session',
             self.get_mock_boto3_session(
                 response={'Parameters': [{
                     'Type': 'String'
                 }]}))
         p = UnboundParameter('foo.bar.BAZ')
         self.assertTrue(p.exists)
 def test__is_secure_no_key_with_secure_aws_object_returns_True(self):
     with Replacer() as r:
         r.replace('deployfish.aws.systems_manager.get_boto3_session',
                   self.get_mock_boto3_session('SecureString'))
         p = UnboundParameter('foo.bar.BAZ')
         self.assertTrue(p.is_secure)
 def test_get_exists_returns_False_if_no_aws_object(self):
     with Replacer() as r:
         r.replace('deployfish.aws.systems_manager.get_boto3_session',
                   self.get_mock_boto3_session())
         p = UnboundParameter('foo.bar.BAZ')
         self.assertFalse(p.exists)