Source code for acapi2.tests.test_acquiadata

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import unittest
from unittest.mock import patch

import requests
import requests_mock

from acapi2.http_request import HttpRequest
from acapi2.resources.acquiadata import AcquiaData


[docs]@requests_mock.Mocker() class TestAcquiaData(unittest.TestCase): endpoint = "https://cloud.acquia.com/api/" # These api key and secret examples # were taken from the official API docs api_key = "d0697bfc-7f56-4942-9205-b5686bf5b3f5" api_secret = "D5UfO/4FfNBWn4+0cUwpLOoFzfP7Qqib4AoY+wYGsKE="
[docs] def test_endpoint_not_found(self, mocker): uri = self.endpoint + "invalid/" mocker.register_uri("GET", uri, status_code=404) acquia_data = AcquiaData(uri, self.api_key, self.api_secret) with self.assertRaises(requests.HTTPError): acquia_data.request()
[docs] def test_retry_and_get(self, mocker): mocker.register_uri( "GET", self.endpoint, [ {"status_code": 500}, {"status_code": 503}, {"status_code": 502}, {"status_code": 200}, ], ) acquia_data = AcquiaData(self.endpoint, self.api_key, self.api_secret) self.assertEqual(acquia_data.request().status_code, 200)
[docs] def test_unauthorised_request(self, mocker): mocker.register_uri("GET", self.endpoint, status_code=403) acquia_data = AcquiaData(self.endpoint, self.api_key, self.api_secret) with self.assertRaises(requests.HTTPError): acquia_data.request()
[docs] def test_post_request(self, mocker): uri = self.endpoint + "organizations" mocker.register_uri( "POST", uri, status_code=200, json={"message": "Oganization created."}, ) acquia_data = AcquiaData(uri, self.api_key, self.api_secret) rdata = {"name": "A Random name"} response = acquia_data.request(method="POST", data=rdata) self.assertEqual(response.status_code, 200) self.assertIn(b"created", response.content)
[docs] def test_delete_request(self, mocker): uri = self.endpoint + "organizations/1234" acquia_response = { "id": "6", "uuid": "g47ac10b-58cc-4372-a567-0e02b2c3d470", "name": "Sample organization", "subscriptions_total": "115", "admins_total": "2", "users_total": "82", "teams_total": "13", "roles_total": "4", } mocker.register_uri( "DELETE", uri, status_code=202, json=acquia_response ) acquia_data = AcquiaData(uri, self.api_key, self.api_secret) response = acquia_data.request(method="DELETE") self.assertEqual(response.status_code, 202) self.assertIn(b"id", response.content) self.assertIn(b"name", response.content)
[docs] @patch.object(HttpRequest, "do") def test_request_backoff(self, mocker, request_do_mock): request_do_mock.side_effect = [ requests.exceptions.ConnectionError(), requests_mock.create_response(requests.Request()), ] acquia_data = AcquiaData(self.endpoint, self.api_key, self.api_secret) acquia_data.request() assert request_do_mock.call_count == 2