Skip to content

Commit

Permalink
PR #64 - STS unit test updates for TrustedAdvisor
Browse files Browse the repository at this point in the history
  • Loading branch information
jantman committed Sep 30, 2015
1 parent e508e76 commit f818a28
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 1 deletion.
4 changes: 3 additions & 1 deletion awslimitchecker/services/newservice.py.example
Expand Up @@ -57,10 +57,12 @@ class _XXNewServiceXXService(_AwsService):
return
# TODO: set this to the correct connection methods:
elif self.region:
import boto.XXnewserviceXX
self.conn = self.connect_via(boto.XXnewserviceXX.connect_to_region)
else:
logger.debug("Connecting to %s (no region specified)",
self.service_name)
self.conn = boto.connect_XXnewserviceXX()
logger.info("Connected to %s", self.service_name)

def find_usage(self):
"""
Expand Down
99 changes: 99 additions & 0 deletions awslimitchecker/tests/test_trustedadvisor.py
Expand Up @@ -39,6 +39,7 @@

import sys
from boto.support.layer1 import SupportConnection
from boto.support import connect_to_region
from boto.regioninfo import RegionInfo
from boto.exception import JSONResponseError, BotoServerError
from awslimitchecker.trustedadvisor import TrustedAdvisor
Expand Down Expand Up @@ -78,6 +79,14 @@ def test_init(self):
cls = TrustedAdvisor()
assert cls.conn is None

def test_init_sts(self):
cls = TrustedAdvisor(account_id='aid', account_role='role', region='r')
assert cls.conn is None
assert cls.account_id == 'aid'
assert cls.account_role == 'role'
assert cls.region == 'us-east-1'
assert cls.ta_region == 'r'

def test_connect(self):
cls = TrustedAdvisor()
mock_conn = Mock(spec_set=SupportConnection, name='mock_conn')
Expand All @@ -88,6 +97,23 @@ def test_connect(self):
assert cls.conn == mock_conn
assert mock_connect.mock_calls == [call()]

def test_connect_region(self):
cls = TrustedAdvisor(account_id='foo', account_role='bar', region='re')
mock_conn = Mock(spec_set=SupportConnection, name='mock_conn')
mock_conn_via = Mock(spec_set=SupportConnection, name='mock_conn')
with patch('awslimitchecker.trustedadvisor.TrustedAdvisor.connect_via'
'') as mock_connect_via:
mock_connect_via.return_value = mock_conn_via
with patch('awslimitchecker.trustedadvisor.boto.connect_support'
'', autospec=True) as mock_connect:
mock_connect.return_value = mock_conn
cls.connect()
assert cls.conn == mock_conn_via
assert mock_connect.mock_calls == []
assert mock_connect_via.mock_calls == [
call(connect_to_region)
]

def test_connect_again(self):
cls = TrustedAdvisor()
mock_original_conn = Mock(spec_set=SupportConnection)
Expand Down Expand Up @@ -306,6 +332,79 @@ def test_poll(self):
}
}

def test_poll_region(self):
tmp = self.mock_conn.describe_trusted_advisor_check_result
self.cls.ta_region = 'us-west-2'
tmp.return_value = {
'result': {
'timestamp': '2015-06-15T20:27:42Z',
'flaggedResources': [
{
'status': 'ok',
'resourceId': 'resid1',
'isSuppressed': False,
'region': 'us-west-2',
'metadata': [
'us-west-2',
'AutoScaling',
'Auto Scaling groups',
'20',
'2',
'Green'
]
},
{
'status': 'ok',
'resourceId': 'resid2',
'isSuppressed': False,
'region': 'us-east-1',
'metadata': [
'us-east-1',
'AutoScaling',
'Launch configurations',
'20',
'18',
'Yellow'
]
},
{
'status': 'ok',
'resourceId': 'resid3',
'isSuppressed': False,
'region': 'us-east-1',
'metadata': [
'us-west-2',
'AutoScaling',
'Auto Scaling groups',
'40',
'10',
'Green'
]
},
]
}
}
with patch('%s._get_limit_check_id' % pb, autospec=True) as mock_id:
mock_id.return_value = (
'foo',
[
'Region',
'Service',
'Limit Name',
'Limit Amount',
'Current Usage',
'Status'
]
)
res = self.cls._poll()
assert tmp.mock_calls == [call('foo')]
assert mock_id.mock_calls == [call(self.cls)]
assert res == {
'AutoScaling': {
'Auto Scaling groups': 20,
}
}

def test_poll_dont_have_ta(self):
self.cls.have_ta = False
tmp = self.mock_conn.describe_trusted_advisor_check_result
Expand Down
1 change: 1 addition & 0 deletions awslimitchecker/trustedadvisor.py
Expand Up @@ -55,6 +55,7 @@ def __init__(self, account_id=None, account_role=None, region=None):
self.have_ta = True
self.account_id = account_id
self.account_role = account_role
# @TODO do we always want to connect to us-east-1 for TA?
self.region = 'us-east-1'
self.ta_region = region

Expand Down

0 comments on commit f818a28

Please sign in to comment.