Ejemplo n.º 1
0
 def test_api_request_filter(self):
     is_cost = False
     dummy_filter = 'foo_bar'
     dummy_value = ['foo', 'bar']
     filters = {
         APIFilters.ACCOUNTS: self.dummy_list,
         APIFilters.IS_COST: is_cost,
         dummy_filter: dummy_value,
     }
     api_request = APIRequest(self.dummy_ice_url, **filters)
     request_filters = api_request.get_filters()
     self.assertEquals(request_filters[APIFilters.ACCOUNTS],
                       self._join_list(self.dummy_list))
     self.assertEquals(request_filters[APIFilters.IS_COST], is_cost)
     self.assertEquals(request_filters[dummy_filter], dummy_value)
Ejemplo n.º 2
0
class TestAPIRequest(unittest.TestCase):
    api_request = None
    dummy_ice_url = None
    dummy_list = None
    dummy_string = None
    dummy_datetime = None

    def setUp(self):
        self.dummy_ice_url = 'http://foo.com'
        self.api_request = APIRequest(self.dummy_ice_url)
        self.dummy_list = ['012345678900', '009876543210']
        self.dummy_str = 'foo'
        self.dummy_datetime = datetime.datetime.utcnow()

    def _join_list(self, value_list):
        return ','.join(value_list)

    def test_api_request_filter(self):
        is_cost = False
        dummy_filter = 'foo_bar'
        dummy_value = ['foo', 'bar']
        filters = {
            APIFilters.ACCOUNTS: self.dummy_list,
            APIFilters.IS_COST: is_cost,
            dummy_filter: dummy_value,
        }
        api_request = APIRequest(self.dummy_ice_url, **filters)
        request_filters = api_request.get_filters()
        self.assertEquals(request_filters[APIFilters.ACCOUNTS],
                          self._join_list(self.dummy_list))
        self.assertEquals(request_filters[APIFilters.IS_COST], is_cost)
        self.assertEquals(request_filters[dummy_filter], dummy_value)

    def _test_set_list(self, fn, filter_name):
        # Type error exception test
        self.assertRaises(TypeError,
                          fn,
                          self.dummy_str)
        # Filter value test
        fn(self.dummy_list)
        self.assertEquals(self.api_request.get_filters()[filter_name],
                          self._join_list(self.dummy_list))

    def _test_set_str(self, fn, filter_name):
        # Type error exception test
        self.assertRaises(TypeError, fn, [])
        # Filter value test
        fn(self.dummy_str)
        self.assertEquals(self.api_request.get_filters()[filter_name],
                          self.dummy_str)

    def _test_set_bool(self, fn, filter_name, value):
        # Type error exception test
        self.assertRaises(TypeError, fn, self.dummy_str)
        # Filter value test
        fn(value)
        self.assertEquals(self.api_request.get_filters()[filter_name], value)

    def _test_set_datetime(self, fn, filter_name):
        # Type error exception test
        self.assertRaises(TypeError, fn, self.dummy_str)
        # Filter value test
        fn(self.dummy_datetime)
        self.assertEquals(self.api_request.get_filters()[filter_name],
                          utils.format_datetime(self.dummy_datetime))

    def test_set_accounts(self):
        '''Tests set_accounts function exception and filter results'''
        self._test_set_list(self.api_request.set_accounts, APIFilters.ACCOUNTS)

    def test_set_aggregate(self):
        '''Tests set_aggregate function exception and filter results'''
        self._test_set_str(self.api_request.set_aggregate,
                           APIFilters.AGGREGATE)

    def test_set_breakdown(self):
        '''Tests set_breakdown function exception and filter results'''
        self._test_set_bool(self.api_request.set_breakdown,
                            APIFilters.BREAKDOWN, False)

    def test_set_consolidate(self):
        '''Tests set_consolidate function exception and filter results'''
        self._test_set_str(self.api_request.set_consolidate,
                           APIFilters.CONSOLIDATE)

    def test_set_end(self):
        '''Tests set_end function exception and filter results'''
        self._test_set_datetime(self.api_request.set_end, APIFilters.END)

    def test_set_factor_sps(self):
        '''Tests set_factor_sps function exception and filter results'''
        self._test_set_bool(self.api_request.set_factor_sps,
                            APIFilters.FACTOR_SPS, True)

    def test_set_group_by(self):
        '''Tests set_group_by function exception and filter results'''
        self._test_set_str(self.api_request.set_group_by,
                           APIFilters.GROUP_BY)

    def test_set_is_cost(self):
        '''Tests set_is_cost function exception and filter results'''
        self._test_set_bool(self.api_request.set_is_cost,
                            APIFilters.IS_COST, False)

    def test_set_operations(self):
        '''Tests set_operations function exception and filter results'''
        self._test_set_list(self.api_request.set_operations,
                            APIFilters.OPERATIONS)

    def test_set_products(self):
        '''Tests set_products function exception and filter results'''
        self._test_set_list(self.api_request.set_products,
                            APIFilters.PRODUCTS)

    def test_set_regions(self):
        '''Tests set_regions function exception and filter results'''
        self._test_set_list(self.api_request.set_regions,
                            APIFilters.REGIONS)

    def test_set_show_sps(self):
        '''Tests set_show_sps function exception and filter results'''
        self._test_set_bool(self.api_request.set_show_sps,
                            APIFilters.SHOW_SPS, True)

    def test_set_start(self):
        '''Tests set_start function exception and filter results'''
        self._test_set_datetime(self.api_request.set_start, APIFilters.START)

    def test_set_usage_types(self):
        '''Tests set_usage_types function exception and filter results'''
        self._test_set_list(self.api_request.set_usage_types,
                            APIFilters.USAGE_TYPES)

    def test_get_data(self):
        '''Tests the get_data function by mocking the requests.post'''
        class MockResponse():
            def __init__(self, status_code):
                self.status_code = status_code

            @property
            def content(self):
                return '''{
                    "data": {},
                    "groupBy": {},
                    "interval": 3600000,
                    "start": 1380585600000,
                    "stats": {},
                    "status": 200
                }'''

        with patch.object(api, '_requests') as mock_request:
            # Testing that if the post request comes back with a status_code
            # different than 200, the function get_data will raise an
            # APIRequestException.
            mock_request.post.return_value = MockResponse(500)
            self.assertRaises(APIRequestException, self.api_request.get_data)

            # Testing that if the post request status_code is 200, the function
            # get_data will return a dictionary.
            mock_request.post.return_value = MockResponse(200)
            self.assertTrue(isinstance(self.api_request.get_data(), dict))
Ejemplo n.º 3
0
 def setUp(self):
     self.dummy_ice_url = 'http://foo.com'
     self.api_request = APIRequest(self.dummy_ice_url)
     self.dummy_list = ['012345678900', '009876543210']
     self.dummy_str = 'foo'
     self.dummy_datetime = datetime.datetime.utcnow()
Ejemplo n.º 4
0
 def test_set_http_auth(self):
     api_request = APIRequest(self.dummy_ice_url)
     self.assertEquals(api_request.auth, None)
     api_request.set_http_auth(('foo', 'bar'))
     self.assertEquals(api_request.auth, ('foo', 'bar'))