def test_basic(self):
     sot = agent.Agent(EXAMPLE)
     self.assertEqual('MachineAgentId', sot.id_attribute)
     self.assertEqual('/user/agents', sot.base_path)
     self.assertEqual('cloudBackup', sot.service.service_name)
     self.assertFalse(sot.allow_create)
     self.assertTrue(sot.allow_retrieve)
     self.assertFalse(sot.allow_update)
     self.assertTrue(sot.allow_delete)
     self.assertTrue(sot.allow_list)
     self.assertEqual(EXAMPLE['CleanupAllowed'], sot.can_cleanup)
     self.assertEqual(EXAMPLE['BackupContainer'], sot.container)
     self.assertEqual(EXAMPLE['Datacenter'], sot.datacenter)
     self.assertEqual(EXAMPLE['Flavor'], sot.flavor)
     self.assertEqual(EXAMPLE['IsDisabled'], sot.is_disabled)
     self.assertEqual(EXAMPLE['IsEncrypted'], sot.is_encrypted)
     self.assertEqual(EXAMPLE['TimeOfLastSuccessfulBackup'],
                      sot.last_successful_backup_at)
     self.assertEqual(EXAMPLE['PublicKey'], sot.public_key)
     self.assertEqual(EXAMPLE['Architecture'], sot.server_arch)
     self.assertEqual(EXAMPLE['MachineName'], sot.server_name)
     self.assertEqual(EXAMPLE['OperatingSystem'], sot.server_os)
     self.assertEqual(EXAMPLE['OperatingSystemVersion'],
                      sot.server_os_version)
     self.assertEqual(EXAMPLE['IPAddress'], sot.server_ipaddress)
     self.assertEqual(EXAMPLE['HostServerId'], sot.server_uuid)
     self.assertEqual(EXAMPLE['UseServiceNet'], sot.servicenet)
     self.assertEqual(EXAMPLE['Status'], sot.status)
     self.assertEqual(EXAMPLE['BackupVaultSize'], sot.vault_size)
     self.assertEqual(EXAMPLE['AgentVersion'], sot.version)
    def test_disable(self):
        response = mock.Mock()
        response.body = ''
        sess = mock.Mock()
        sess.post = mock.Mock()
        sess.post.return_value = response
        sot = agent.Agent(EXAMPLE)

        self.assertIsNone(sot.disable(sess))

        body = {'MachineAgentId': sot.id, 'Enable': 'false'}
        url = 'agent/enable'
        sess.post.assert_called_with(url, service=sot.service, json=body)
    def test_update_behavior(self):
        response = mock.Mock()
        response.body = ''
        sess = mock.Mock()
        sess.post = mock.Mock()
        sess.post.return_value = response
        sot = agent.Agent(EXAMPLE)

        self.assertIsNone(sot.update_behavior(sess, DATACENTER, SERVICENET))

        body = {'BackupDataCenter': DATACENTER, 'UseServiceNet': SERVICENET}
        url = 'agent/%s' % sot.id
        sess.post.assert_called_with(url, service=sot.service, json=body)
    def test_migrate_vault(self):
        response = mock.Mock()
        response.body = ''
        sess = mock.Mock()
        sess.post = mock.Mock()
        sess.post.return_value = response
        sot = agent.Agent(EXAMPLE)

        self.assertIsNone(sot.migrate_vault(sess, DESTINATION))

        body = {
            'SourceMachineAgentId': sot.id,
            'DestinationMachineAgentId': DESTINATION
        }
        url = 'agent/migratevault'
        sess.post.assert_called_with(url, service=sot.service, json=body)
    def test_encrypt_volume(self):
        response = mock.Mock()
        response.body = ''
        sess = mock.Mock()
        sess.post = mock.Mock()
        sess.post.return_value = response
        sot = agent.Agent(EXAMPLE)

        self.assertEqual('', sot.encrypt_volume(sess, ENCRYPTIONKEY))

        body = {
            'MachineAgentId': sot.id,
            'EncryptedPasswordHex': ENCRYPTIONKEY
        }
        url = 'agent/encrypt'
        sess.post.assert_called_with(url, service=sot.service, json=body)
    def test_update_encryption_password(self):
        response = mock.Mock()
        response.body = ''
        sess = mock.Mock()
        sess.post = mock.Mock()
        sess.post.return_value = response
        sot = agent.Agent(EXAMPLE)

        self.assertEqual(
            '', sot.update_encryption_password(sess, OLD_KEY, NEW_KEY))

        body = {
            'MachineAgentId': sot.id,
            'OldEncryptedPasswordHex': OLD_KEY,
            'NewEncryptedPasswordHex': NEW_KEY
        }
        url = 'agent/changeencryption'
        sess.post.assert_called_with(url, service=sot.service, json=body)