コード例 #1
0
 def setUp(self):
     self.endpoint = 'http://softlayer.com'
     self.account = 'account'
     self.base_href = "%s/v1/%s" % (self.endpoint, self.account)
     self.client = QueueClient(self.endpoint, self.account)
コード例 #2
0
class TestClient(unittest.TestCase):
    def setUp(self):
        self.endpoint = 'http://softlayer.com'
        self.account = 'account'
        self.base_href = "%s/v1/%s" % (self.endpoint, self.account)
        self.client = QueueClient(self.endpoint, self.account)

    def test_client_init(self):
        self.assertEquals(self.client.url, self.base_href)
        self.assertEquals(self.client.account, self.account)

    @patch('requests.post')
    def test_authenticate(self, res):
        self.client.authenticate('username', 'password')
        res.assert_called_with('http://softlayer.com/v1/account/auth', headers={'X-Auth-Key': 'password', 'X-Auth-User': '******'})

    @patch('requests.get')
    def test_ping_good(self, res):
        res.return_value.error = None
        res.return_value.status_code = 200
        self.assertTrue(self.client.ping())

    @patch('requests.get')
    def test_ping_status(self, res):
        res.return_value.error = None
        res.return_value.status_code = 500
        self.assertFalse(self.client.ping())

    @patch('requests.get')
    def test_ping_bad(self, res):
        res.side_effect = requests.RequestException('Fail')
        self.assertFalse(self.client.ping())

    @patch('requests.request')
    def test_request(self, res):
        header_resp = Mock()
        res.return_value.status_code = 200
        res.return_value.content = '{"some": "json"}'
        res.return_value.headers = header_resp
        result = self.client.request('GET', 'queues')
        self.assertEqual(result.json, {'some': 'json'})
        self.assertEqual(result.headers, header_resp)
        res.assert_called_with(
            'GET', '%s/queues' % (self.base_href,),
            headers=self.client.headers, auth=None)

    @patch('softlayer_messaging.queue.Queue')
    def test_queue(self, res):
        name = Mock()
        q = self.client.queue(name)
        res.assert_called_with(self.client.url, name, self.client.auth)
        self.assertEqual(q, res())

    @patch('softlayer_messaging.topic.Topic')
    def test_topic(self, res):
        name = Mock()
        q = self.client.topic(name)
        res.assert_called_with(self.client.url, name, self.client.auth)
        self.assertEqual(q, res())

    @patch('softlayer_messaging.client.QueueClient.request')
    def test_queues(self, res):
        tags = ['tag1', 'tag2']
        result = self.client.queues(tags=tags)
        res.assert_called_with('GET', 'queues', params={'tags': "tag1,tag2"})
        self.assertEqual(result, res().json)

    @patch('softlayer_messaging.client.QueueClient.request')
    def test_topics(self, res):
        tags = ['tag1', 'tag2']
        result = self.client.topics(tags=tags)
        res.assert_called_with('GET', 'topics', params={'tags': "tag1,tag2"})
        self.assertEqual(result, res().json)

    @patch('softlayer_messaging.client.QueueClient.request')
    def test_create_queue(self, res):
        name = 'name'
        kwargs = {'arg1': 'arg1', 'arg2': 'arg2'}
        result = self.client.create_queue(name, **kwargs)
        res.assert_called_with(
            'PUT', 'queues/name',
            data=json.dumps(kwargs))
        self.assertEqual(result, res().json)

    @patch('softlayer_messaging.client.QueueClient.request')
    def test_create_topic(self, res):
        name = 'name'
        kwargs = {'arg1': 'arg1', 'arg2': 'arg2'}
        result = self.client.create_topic(name, **kwargs)
        res.assert_called_with(
            'PUT', 'topics/name',
            data=json.dumps(kwargs))
        self.assertEqual(result, res().json)

    @patch('softlayer_messaging.client.QueueClient.request')
    def test_stats(self, res):
        result = self.client.stats()
        res.assert_called_with('GET', 'stats/hour')
        self.assertEqual(result, res().json)

    def test_repr(self):
        self.client.url = "URL"
        value = repr(self.client)
        self.assertEqual(value, "<QueueClient [URL]>")