def test_restful_perform_action(self, mock_send_request):

        model = Restful()
        self.assertRaises(dockercloud.ApiError, model._perform_action,
                          'action')

        model.endpoint = 'fake'
        model.subsystem = "subsystem"
        model.resource_uri = "/".join([
            "api", model.subsystem, model._api_version,
            model.endpoint.lstrip("/"), model.pk
        ])
        model._resource_uri = model.resource_uri
        mock_send_request.side_effect = [{'key': 'value'}, None]
        self.assertTrue(
            model._perform_action('action',
                                  params={'k': 'v'},
                                  data={'key': 'value'}))
        self.assertEqual('value', model.key)
        mock_send_request.assert_called_with(
            'POST',
            "/".join([model._resource_uri, "action"]),
            data={'key': 'value'},
            params={'k': 'v'})

        self.assertFalse(model._perform_action('action', {'key': 'value'}))