コード例 #1
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)
コード例 #2
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)
コード例 #3
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)
コード例 #4
0
ファイル: test_launch_server_v1.py プロジェクト: alex/otter
    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)
コード例 #5
0
    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)
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
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)