# coding: utf-8

"""
    Usage API

    These usage endpoints define the following operations:  * **Usage**: Retrieve usage data for the specified time period (default is one month).          * Users must have the `View organization usage` permission to access this endpoint.     * This operation offers visibility across all account groups within the organization.     * Users with `View organization usage` permission in multiple organizations should query the operation with the `aid` query string parameter (see optional parameters) for each organization.     * The `agentId` field in enterprise agent unit responses may be omitted when not available.  * **Quotas**: Obtain organization and account usage quotas. Additionally, users with the appropriate permissions can create, update, or delete these quotas.          * Users must have the necessary permissions to perform quota-related actions.  Refer to the Usage API operations for detailed usage instructions and optional parameters. 

    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import json
import unittest
import thousandeyes_sdk.usage.models

from thousandeyes_sdk.core.exceptions import ApiException
from thousandeyes_sdk.usage.api.usage_api import UsageApi
from .integration_test_utils import IntegrationTestBase
from .test_utils import assert_constructed_model_matches_example_json


class TestUsageApiIntegration(IntegrationTestBase):
    """UsageApi integration test stubs"""

    def setUp(self) -> None:
        super().setUp()
        self.api = UsageApi(self.api_client)


    def test_get_enterprise_agents_units_usage_happy_path(self) -> None:
        """Integration test for get_enterprise_agents_units_usage success path"""
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        response_body_json = """
                {
                  "_links" : {
                    "next" : {
                      "hreflang" : "hreflang",
                      "templated" : true,
                      "profile" : "profile",
                      "name" : "name",
                      "href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
                      "type" : "type",
                      "deprecation" : "deprecation",
                      "title" : "title"
                    },
                    "previous" : {
                      "hreflang" : "hreflang",
                      "templated" : true,
                      "profile" : "profile",
                      "name" : "name",
                      "href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
                      "type" : "type",
                      "deprecation" : "deprecation",
                      "title" : "title"
                    },
                    "self" : {
                      "hreflang" : "hreflang",
                      "templated" : true,
                      "profile" : "profile",
                      "name" : "name",
                      "href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
                      "type" : "type",
                      "deprecation" : "deprecation",
                      "title" : "title"
                    }
                  },
                  "breakdowns" : [ {
                    "aid" : "1234",
                    "agentId" : "123456",
                    "accountGroupName" : "Support",
                    "agentName" : "TEVA-test-agent",
                    "enterpriseUnitsUsed" : 599878,
                    "enterpriseUnitsProjected" : 597808
                  }, {
                    "aid" : "315",
                    "agentId" : "789",
                    "accountGroupName" : "Documentation",
                    "agentName" : "lab-physical-appliance-1",
                    "enterpriseUnitsUsed" : 597123,
                    "enterpriseUnitsProjected" : 597808
                  } ]
                }
                """
        expected_response = json.loads(response_body_json)
        response = self.api.get_enterprise_agents_units_usage(

            start_date=start_date,

            end_date=end_date,

            cursor=cursor,

            _headers=self.te_headers("get_enterprise_agents_units_usage"),
        )
        assert_constructed_model_matches_example_json(response, expected_response)


    def test_get_enterprise_agents_units_usage_error_400(self) -> None:
        """Integration test for get_enterprise_agents_units_usage error path (HTTP 400)"""
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "errors" : [ {
                    "code" : "code",
                    "field" : "field",
                    "message" : "message"
                  }, {
                    "code" : "code",
                    "field" : "field",
                    "message" : "message"
                  } ],
                  "status" : 0
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(400)
        ) as context:
            self.api.get_enterprise_agents_units_usage(

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_enterprise_agents_units_usage", error_status="400"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_enterprise_agents_units_usage_error_401(self) -> None:
        """Integration test for get_enterprise_agents_units_usage error path (HTTP 401)"""
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "error_description" : "Invalid access token",
                  "error" : "invalid_token"
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(401)
        ) as context:
            self.api.get_enterprise_agents_units_usage(

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_enterprise_agents_units_usage", error_status="401"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_enterprise_agents_units_usage_error_403(self) -> None:
        """Integration test for get_enterprise_agents_units_usage error path (HTTP 403)"""
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(403)
        ) as context:
            self.api.get_enterprise_agents_units_usage(

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_enterprise_agents_units_usage", error_status="403"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_enterprise_agents_units_usage_error_404(self) -> None:
        """Integration test for get_enterprise_agents_units_usage error path (HTTP 404)"""
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(404)
        ) as context:
            self.api.get_enterprise_agents_units_usage(

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_enterprise_agents_units_usage", error_status="404"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_enterprise_agents_units_usage_error_429(self) -> None:
        """Integration test for get_enterprise_agents_units_usage error path (HTTP 429)"""
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(429)
        ) as context:
            self.api.get_enterprise_agents_units_usage(

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_enterprise_agents_units_usage", error_status="429"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_enterprise_agents_units_usage_error_500(self) -> None:
        """Integration test for get_enterprise_agents_units_usage error path (HTTP 500)"""
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(500)
        ) as context:
            self.api.get_enterprise_agents_units_usage(

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_enterprise_agents_units_usage", error_status="500"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)




    def test_get_tests_units_usage_happy_path(self) -> None:
        """Integration test for get_tests_units_usage success path"""
        aid = '1234'
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        response_body_json = """
                {
                  "_links" : {
                    "next" : {
                      "hreflang" : "hreflang",
                      "templated" : true,
                      "profile" : "profile",
                      "name" : "name",
                      "href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
                      "type" : "type",
                      "deprecation" : "deprecation",
                      "title" : "title"
                    },
                    "previous" : {
                      "hreflang" : "hreflang",
                      "templated" : true,
                      "profile" : "profile",
                      "name" : "name",
                      "href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
                      "type" : "type",
                      "deprecation" : "deprecation",
                      "title" : "title"
                    },
                    "self" : {
                      "hreflang" : "hreflang",
                      "templated" : true,
                      "profile" : "profile",
                      "name" : "name",
                      "href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
                      "type" : "type",
                      "deprecation" : "deprecation",
                      "title" : "title"
                    }
                  },
                  "breakdowns" : [ {
                    "testId" : "1158",
                    "testName" : "https://app.thousandeyes.com",
                    "testType" : "Web-Page Load",
                    "enterpriseUnitsUsed" : 14050,
                    "enterpriseUnitsProjected" : 340674,
                    "cloudUnitsUsed" : 10000,
                    "cloudUnitsProjected" : 12000,
                    "aid" : "1234",
                    "accountGroupName" : "Support"
                  }, {
                    "testId" : "1221",
                    "testName" : "https://app.thousandeyes.com",
                    "testType" : "Web - HTTP Server",
                    "enterpriseUnitsUsed" : 194051,
                    "enterpriseUnitsProjected" : 30622,
                    "cloudUnitsUsed" : 12000,
                    "cloudUnitsProjected" : 13000,
                    "aid" : "1234",
                    "accountGroupName" : "Support"
                  } ]
                }
                """
        expected_response = json.loads(response_body_json)
        response = self.api.get_tests_units_usage(

            aid=aid,

            start_date=start_date,

            end_date=end_date,

            cursor=cursor,

            _headers=self.te_headers("get_tests_units_usage"),
        )
        assert_constructed_model_matches_example_json(response, expected_response)


    def test_get_tests_units_usage_error_400(self) -> None:
        """Integration test for get_tests_units_usage error path (HTTP 400)"""
        aid = '1234'
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "errors" : [ {
                    "code" : "code",
                    "field" : "field",
                    "message" : "message"
                  }, {
                    "code" : "code",
                    "field" : "field",
                    "message" : "message"
                  } ],
                  "status" : 0
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(400)
        ) as context:
            self.api.get_tests_units_usage(

                aid=aid,

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_tests_units_usage", error_status="400"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_tests_units_usage_error_401(self) -> None:
        """Integration test for get_tests_units_usage error path (HTTP 401)"""
        aid = '1234'
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "error_description" : "Invalid access token",
                  "error" : "invalid_token"
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(401)
        ) as context:
            self.api.get_tests_units_usage(

                aid=aid,

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_tests_units_usage", error_status="401"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_tests_units_usage_error_403(self) -> None:
        """Integration test for get_tests_units_usage error path (HTTP 403)"""
        aid = '1234'
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(403)
        ) as context:
            self.api.get_tests_units_usage(

                aid=aid,

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_tests_units_usage", error_status="403"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_tests_units_usage_error_404(self) -> None:
        """Integration test for get_tests_units_usage error path (HTTP 404)"""
        aid = '1234'
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(404)
        ) as context:
            self.api.get_tests_units_usage(

                aid=aid,

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_tests_units_usage", error_status="404"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_tests_units_usage_error_429(self) -> None:
        """Integration test for get_tests_units_usage error path (HTTP 429)"""
        aid = '1234'
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(429)
        ) as context:
            self.api.get_tests_units_usage(

                aid=aid,

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_tests_units_usage", error_status="429"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_tests_units_usage_error_500(self) -> None:
        """Integration test for get_tests_units_usage error path (HTTP 500)"""
        aid = '1234'
        start_date = '2022-07-17T22:00:54Z'
        end_date = '2022-07-18T22:00:54Z'
        cursor = 'cursor_example'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(500)
        ) as context:
            self.api.get_tests_units_usage(

                aid=aid,

                start_date=start_date,

                end_date=end_date,

                cursor=cursor,

                _headers=self.te_headers("get_tests_units_usage", error_status="500"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)




    def test_get_usage_happy_path(self) -> None:
        """Integration test for get_usage success path"""
        aid = '1234'
        response_body_json = """
                {
                  "_links" : {
                    "self" : {
                      "hreflang" : "hreflang",
                      "templated" : true,
                      "profile" : "profile",
                      "name" : "name",
                      "href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
                      "type" : "type",
                      "deprecation" : "deprecation",
                      "title" : "title"
                    }
                  },
                  "usage" : {
                    "cloudUnitsProjected" : 20993812,
                    "connectedDevicesUnitsUsed" : 79640902,
                    "enterpriseAgentsUsed" : 58,
                    "endpointAgents" : [ {
                      "aid" : "1234",
                      "accountGroupName" : "Support",
                      "endpointAgentsUsed" : 22
                    }, {
                      "aid" : "12345",
                      "accountGroupName" : "Documentation",
                      "endpointAgentsUsed" : 14
                    } ],
                    "cloudUnitsNextBillingPeriod" : 25123456,
                    "enterpriseUnitsNextBillingPeriod" : 0,
                    "endpointAgentsUsed" : 42,
                    "enterpriseUnitsUsed" : 79640902,
                    "cloudUnitsUsed" : 8500489,
                    "connectedDevicesUnitsNextBillingPeriod" : 0,
                    "connectedDevicesUnitsProjected" : 108016317,
                    "tests" : [ {
                      "aid" : "1234",
                      "testId" : "1158",
                      "accountGroupName" : "Documentation",
                      "testName" : "https://app.thousandeyes.com",
                      "testType" : "Web-Page Load",
                      "cloudUnitsUsed" : 14050,
                      "cloudUnitsProjected" : 340674
                    }, {
                      "aid" : "12345",
                      "testId" : "1159",
                      "accountGroupName" : "Documentation",
                      "testName" : "https://support.thousandeyes.com",
                      "testType" : "Web - HTTP Server",
                      "cloudUnitsUsed" : 64390,
                      "cloudUnitsProjected" : 164457
                    } ],
                    "endpointAgentsEmbedded" : [ {
                      "aid" : "1234",
                      "accountGroupName" : "Support",
                      "endpointAgentsEmbeddedUsed" : 2
                    }, {
                      "aid" : "12345",
                      "accountGroupName" : "Documentation",
                      "endpointAgentsEmbeddedUsed" : 3
                    } ],
                    "allocations" : {
                      "used" : 1000,
                      "projected" : 1000,
                      "allocations" : [ {
                        "productName" : "Some Product Name",
                        "allocatedUnits" : 600
                      } ]
                    },
                    "endpointAgentsEssentialsUsed" : 5,
                    "quota" : {
                      "monthEnd" : "2020-02-05T08:00:00Z",
                      "endpointAgentsEmbeddedIncluded" : 10,
                      "enterpriseAgentsIncluded" : 25,
                      "monthStart" : "2020-01-05T08:00:00Z",
                      "cloudUnitsIncluded" : 4320000000,
                      "deviceAgentsIncluded" : 100,
                      "endpointAgentsIncluded" : 200,
                      "endpointAgentsEssentialsIncluded" : 10
                    },
                    "enterpriseUnitsProjected" : 108016317,
                    "endpointAgentsEmbeddedUsed" : 5,
                    "enterpriseAgents" : [ {
                      "aid" : "1234",
                      "accountGroupName" : "Support",
                      "enterpriseAgentsUsed" : 7
                    }, {
                      "aid" : "12345",
                      "accountGroupName" : "Documentation",
                      "enterpriseAgentsUsed" : 1
                    } ],
                    "enterpriseAgentUnits" : [ {
                      "aid" : "1234",
                      "agentId" : "123456",
                      "accountGroupName" : "Support",
                      "agentName" : "TEVA-test-agent",
                      "enterpriseUnitsUsed" : 599878,
                      "enterpriseUnitsProjected" : 597808
                    }, {
                      "aid" : "315",
                      "agentId" : "789",
                      "accountGroupName" : "Documentation",
                      "agentName" : "lab-physical-appliance-1",
                      "enterpriseUnitsUsed" : 597123,
                      "enterpriseUnitsProjected" : 597808
                    } ],
                    "endpointAgentsEssentials" : [ {
                      "aid" : "1234",
                      "accountGroupName" : "Support",
                      "endpointAgentsEssentialsUsed" : 2
                    }, {
                      "aid" : "12345",
                      "accountGroupName" : "Documentation",
                      "endpointAgentsEssentialsUsed" : 3
                    } ]
                  }
                }
                """
        expected_response = json.loads(response_body_json)
        response = self.api.get_usage(

            aid=aid,

            _headers=self.te_headers("get_usage"),
        )
        assert_constructed_model_matches_example_json(response, expected_response)


    def test_get_usage_error_400(self) -> None:
        """Integration test for get_usage error path (HTTP 400)"""
        aid = '1234'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "errors" : [ {
                    "code" : "code",
                    "field" : "field",
                    "message" : "message"
                  }, {
                    "code" : "code",
                    "field" : "field",
                    "message" : "message"
                  } ],
                  "status" : 0
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(400)
        ) as context:
            self.api.get_usage(

                aid=aid,

                _headers=self.te_headers("get_usage", error_status="400"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_usage_error_401(self) -> None:
        """Integration test for get_usage error path (HTTP 401)"""
        aid = '1234'
        error_body_json = """
                {
                  "error_description" : "Invalid access token",
                  "error" : "invalid_token"
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(401)
        ) as context:
            self.api.get_usage(

                aid=aid,

                _headers=self.te_headers("get_usage", error_status="401"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_usage_error_403(self) -> None:
        """Integration test for get_usage error path (HTTP 403)"""
        aid = '1234'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(403)
        ) as context:
            self.api.get_usage(

                aid=aid,

                _headers=self.te_headers("get_usage", error_status="403"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_usage_error_404(self) -> None:
        """Integration test for get_usage error path (HTTP 404)"""
        aid = '1234'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(404)
        ) as context:
            self.api.get_usage(

                aid=aid,

                _headers=self.te_headers("get_usage", error_status="404"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_usage_error_429(self) -> None:
        """Integration test for get_usage error path (HTTP 429)"""
        aid = '1234'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(429)
        ) as context:
            self.api.get_usage(

                aid=aid,

                _headers=self.te_headers("get_usage", error_status="429"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)


    def test_get_usage_error_500(self) -> None:
        """Integration test for get_usage error path (HTTP 500)"""
        aid = '1234'
        error_body_json = """
                {
                  "instance" : "instance",
                  "detail" : "detail",
                  "type" : "type",
                  "title" : "title",
                  "status" : 6
                }
                """
        expected_error = json.loads(error_body_json)
        with self.assertRaises(
            ApiException.exception_class_for_http_status(500)
        ) as context:
            self.api.get_usage(

                aid=aid,

                _headers=self.te_headers("get_usage", error_status="500"),
            )
        assert_constructed_model_matches_example_json(context.exception.data, expected_error)






if __name__ == '__main__':
    unittest.main()
