示例#1
0
 def execute(self, args):
     manager = MessagingManager(self.client)
     okay = manager.ping(
         datacenter=args['--datacenter'], network=args['--network'])
     if okay:
         return 'OK'
     else:
         CLIAbort('Ping failed')
class MessagingManagerTests(unittest.TestCase):

    def setUp(self):
        self.client = MagicMock()
        self.manager = MessagingManager(self.client)

    def test_list_accounts(self):
        self.manager.list_accounts()
        self.client['Account'].getMessageQueueAccounts.assert_called_with(
            mask=ANY)

    def test_get_endpoints(self):
        endpoints = self.manager.get_endpoints()
        self.assertEqual(endpoints, SoftLayer.managers.messaging.ENDPOINTS)

    @patch('SoftLayer.managers.messaging.ENDPOINTS', {
        'datacenter01': {
            'private': 'private_endpoint', 'public': 'public_endpoint'},
        'dal05': {
            'private': 'dal05_private', 'public': 'dal05_public'}})
    def test_get_endpoint(self):
        # Defaults to dal05, public
        endpoint = self.manager.get_endpoint()
        self.assertEqual(endpoint, 'https://dal05_public')

        endpoint = self.manager.get_endpoint(network='private')
        self.assertEqual(endpoint, 'https://dal05_private')

        endpoint = self.manager.get_endpoint(datacenter='datacenter01')
        self.assertEqual(endpoint, 'https://public_endpoint')

        endpoint = self.manager.get_endpoint(datacenter='datacenter01',
                                             network='private')
        self.assertEqual(endpoint, 'https://private_endpoint')

        endpoint = self.manager.get_endpoint(datacenter='datacenter01',
                                             network='private')
        self.assertEqual(endpoint, 'https://private_endpoint')

        # ERROR CASES
        self.assertRaises(
            TypeError,
            self.manager.get_endpoint, datacenter='doesnotexist')

        self.assertRaises(
            TypeError,
            self.manager.get_endpoint, network='doesnotexist')

    @patch('SoftLayer.managers.messaging.MessagingConnection')
    def test_get_connection(self, conn):
        queue_conn = self.manager.get_connection('QUEUE_ACCOUNT_ID')
        conn.assert_called_with(
            'QUEUE_ACCOUNT_ID', endpoint='https://dal05.mq.softlayer.net')
        conn().authenticate.assert_called_with(
            self.client.auth.username, self.client.auth.api_key)
        self.assertEqual(queue_conn, conn())

    def test_get_connection_no_auth(self):
        self.client.auth = None
        self.assertRaises(SoftLayerError,
                          self.manager.get_connection, 'QUEUE_ACCOUNT_ID')

    def test_get_connection_no_username(self):
        self.client.auth.username = None
        self.assertRaises(SoftLayerError,
                          self.manager.get_connection, 'QUEUE_ACCOUNT_ID')

    def test_get_connection_no_api_key(self):
        self.client.auth.api_key = None
        self.assertRaises(SoftLayerError,
                          self.manager.get_connection, 'QUEUE_ACCOUNT_ID')

    @patch('SoftLayer.managers.messaging.requests.get')
    def test_ping(self, get):
        result = self.manager.ping()

        get.assert_called_with('https://dal05.mq.softlayer.net/v1/ping')
        get().raise_for_status.assert_called_with()
        self.assertTrue(result)