# coding: utf-8

"""
    Agilicus API

    Agilicus API endpoints  # noqa: E501

    The version of the OpenAPI document: 2020.07.31
    Contact: dev@agilicus.com
    Generated by: https://openapi-generator.tech
"""


from __future__ import absolute_import

import unittest
import datetime

import agilicus_api
from agilicus_api.models.create_token_request import CreateTokenRequest  # noqa: E501
from agilicus_api.rest import ApiException

class TestCreateTokenRequest(unittest.TestCase):
    """CreateTokenRequest unit test stubs"""

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def make_instance(self, include_optional):
        """Test CreateTokenRequest
            include_option is a boolean, when False only required
            params are included, when True both required and
            optional params are included """
        # model = agilicus_api.models.create_token_request.CreateTokenRequest()  # noqa: E501
        if include_optional :
            return CreateTokenRequest(
                sub = '123', 
                org = '123', 
                roles = {
                    'key' : '0'
                    }, 
                audiences = [
                    '0'
                    ], 
                time_validity = agilicus_api.models.time_validity.TimeValidity(
                    duration = 56, ), 
                hosts = [
                    agilicus_api.models.host_permissions.HostPermissions(
                        upstream_host = '0', 
                        app_id = '123', 
                        admin_org_id = '123', 
                        allowed_list = [
                            agilicus_api.models.rendered_rule.RenderedRule(
                                methods = [
                                    'get'
                                    ], 
                                paths = [
                                    '0'
                                    ], 
                                query_parameters = [
                                    agilicus_api.models.rendered_query_parameter.RenderedQueryParameter(
                                        name = '0', 
                                        exact_match = '0', )
                                    ], 
                                body = agilicus_api.models.rendered_rule_body.RenderedRuleBody(
                                    json = [
                                        agilicus_api.models.json_body_constraint.JSONBodyConstraint(
                                            name = '0', 
                                            exact_match = '0', 
                                            match_type = 'string', 
                                            pointer = '/foo/0/a~1b/2', )
                                        ], ), )
                            ], )
                    ], 
                token_validity = agilicus_api.models.token_validity.TokenValidity(
                    start = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), 
                    duration = 56, 
                    end = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), ), 
                session = '123', 
                scopes = [
                    'urn:agilicus:users:owner'
                    ]
            )
        else :
            return CreateTokenRequest(
                sub = '123',
                org = '123',
                audiences = [
                    '0'
                    ],
                time_validity = agilicus_api.models.time_validity.TimeValidity(
                    duration = 56, ),
        )

    def testCreateTokenRequest(self):
        """Test CreateTokenRequest"""
        inst_req_only = self.make_instance(include_optional=False)
        inst_req_and_optional = self.make_instance(include_optional=True)


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