def test_add_to_load_balancer_doesnt_push_onto_undo_stack_on_failure(self): """ add_to_load_balancer doesn't push an operation onto the undo stack if it fails. """ response = mock.Mock() response.code = 500 self.treq.post.return_value = succeed(response) self.treq.content.return_value = succeed("{'nodes': [{'id': 1}]}") d = add_to_load_balancer('http://url/', 'my-auth-token', { 'loadBalancerId': 12345, 'port': 80 }, '192.168.1.1', self.undo) self.failureResultOf(d, RequestError) self.assertEqual(self.undo.push.call_count, 0)
def test_add_to_load_balancer_doesnt_push_onto_undo_stack_on_failure(self): """ add_to_load_balancer doesn't push an operation onto the undo stack if it fails. """ response = mock.Mock() response.code = 500 self.treq.post.return_value = succeed(response) self.treq.content.return_value = succeed("{'nodes': [{'id': 1}]}") d = add_to_load_balancer('http://url/', 'my-auth-token', {'loadBalancerId': 12345, 'port': 80}, '192.168.1.1', self.undo) self.failureResultOf(d, RequestError) self.assertEqual(self.undo.push.call_count, 0)
def test_add_to_load_balancer_pushes_remove_onto_undo_stack(self): """ add_to_load_balancer pushes an inverse remove_from_load_balancer operation onto the undo stack. """ response = mock.Mock() response.code = 200 self.treq.post.return_value = succeed(response) self.treq.json_content.return_value = succeed({'nodes': [{'id': 1}]}) d = add_to_load_balancer('http://url/', 'my-auth-token', { 'loadBalancerId': 12345, 'port': 80 }, '192.168.1.1', self.undo) self.successResultOf(d) self.undo.push.assert_called_once_with(remove_from_load_balancer, 'http://url/', 'my-auth-token', 12345, 1)
def test_add_to_load_balancer_propagates_api_failure(self): """ add_to_load_balancer will propagate API failures. """ response = mock.Mock() response.code = 500 self.treq.post.return_value = succeed(response) self.treq.content.return_value = succeed(error_body) d = add_to_load_balancer('http://url/', 'my-auth-token', {'loadBalancerId': 12345, 'port': 80}, '192.168.1.1') failure = self.failureResultOf(d) self.assertTrue(failure.check(RequestError)) real_failure = failure.value.reason self.assertTrue(real_failure.check(APIError)) self.assertEqual(real_failure.value.code, 500)
def test_add_to_load_balancer_propagates_api_failure(self): """ add_to_load_balancer will propagate API failures. """ response = mock.Mock() response.code = 500 self.treq.post.return_value = succeed(response) self.treq.content.return_value = succeed(error_body) d = add_to_load_balancer('http://url/', 'my-auth-token', { 'loadBalancerId': 12345, 'port': 80 }, '192.168.1.1', self.undo) failure = self.failureResultOf(d) self.assertTrue(failure.check(RequestError)) real_failure = failure.value.reason self.assertTrue(real_failure.check(APIError)) self.assertEqual(real_failure.value.code, 500)
def test_add_to_load_balancer(self): """ add_to_load_balancer will make a properly formed post request to the specified load balancer endpoint witht he specified auth token, load balancer id, port, and ip address. """ response = mock.Mock() response.code = 200 self.treq.post.return_value = succeed(response) content = {'nodes': [{'id': 1}]} self.treq.json_content.return_value = succeed(content) d = add_to_load_balancer('http://url/', 'my-auth-token', { 'loadBalancerId': 12345, 'port': 80 }, '192.168.1.1', self.undo) result = self.successResultOf(d) self.assertEqual(result, content) self.treq.post.assert_called_once_with( 'http://url/loadbalancers/12345/nodes', headers=expected_headers, data=mock.ANY) data = self.treq.post.mock_calls[0][2]['data'] self.assertEqual( json.loads(data), { 'nodes': [{ 'address': '192.168.1.1', 'port': 80, 'condition': 'ENABLED', 'type': 'PRIMARY' }] }) self.treq.json_content.assert_called_once_with(response)
def test_add_to_load_balancer(self): """ add_to_load_balancer will make a properly formed post request to the specified load balancer endpoint witht he specified auth token, load balancer id, port, and ip address. """ response = mock.Mock() response.code = 200 self.treq.post.return_value = succeed(response) content = {'nodes': [{'id': 1}]} self.treq.json_content.return_value = succeed(content) d = add_to_load_balancer('http://url/', 'my-auth-token', {'loadBalancerId': 12345, 'port': 80}, '192.168.1.1', self.undo) result = self.successResultOf(d) self.assertEqual(result, content) self.treq.post.assert_called_once_with( 'http://url/loadbalancers/12345/nodes', headers=expected_headers, data=mock.ANY ) data = self.treq.post.mock_calls[0][2]['data'] self.assertEqual(json.loads(data), {'nodes': [{'address': '192.168.1.1', 'port': 80, 'condition': 'ENABLED', 'type': 'PRIMARY'}]}) self.treq.json_content.assert_called_once_with(response)
def test_add_to_load_balancer_pushes_remove_onto_undo_stack(self): """ add_to_load_balancer pushes an inverse remove_from_load_balancer operation onto the undo stack. """ response = mock.Mock() response.code = 200 self.treq.post.return_value = succeed(response) self.treq.json_content.return_value = succeed({'nodes': [{'id': 1}]}) d = add_to_load_balancer('http://url/', 'my-auth-token', {'loadBalancerId': 12345, 'port': 80}, '192.168.1.1', self.undo) self.successResultOf(d) self.undo.push.assert_called_once_with( remove_from_load_balancer, 'http://url/', 'my-auth-token', 12345, 1)