# coding: utf-8

"""
    ****************************************************************************
    Copyright (c) 2016-present,
    Jaguar0625, gimre, BloodyRookie, Tech Bureau, Corp. All rights reserved.

    This file is part of Catapult.

    Catapult is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Catapult is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with Catapult. If not, see <http://www.gnu.org/licenses/>.
    ****************************************************************************
    
    Catapult REST Endpoints
    OpenAPI Specification of catapult-rest 2.2.0  # noqa: E501
    The version of the OpenAPI document: 0.10.4
    Contact: contact@nem.foundation

    NOTE: This file is auto generated by Symbol OpenAPI Generator:
    https://github.com/nemtech/symbol-openapi-generator
    Do not edit this file manually.
"""


from __future__ import absolute_import

import unittest
import datetime

import symbol_openapi_client
from symbol_openapi_client.models.network_configuration_dto import NetworkConfigurationDTO  # noqa: E501
from symbol_openapi_client.rest import ApiException

class TestNetworkConfigurationDTO(unittest.TestCase):
    """NetworkConfigurationDTO unit test stubs"""

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def make_instance(self, include_optional):
        """Test NetworkConfigurationDTO
            include_option is a boolean, when False only required
            params are included, when True both required and
            optional params are included """
        # model = symbol_openapi_client.models.network_configuration_dto.NetworkConfigurationDTO()  # noqa: E501
        if include_optional :
            return NetworkConfigurationDTO(
                network = symbol_openapi_client.models.network_properties_dto.NetworkPropertiesDTO(
                    identifier = 'mijin-test', 
                    node_equality_strategy = 'host', 
                    nemesis_signer_public_key = 'AC1A6E1D8DE5B17D2C6B1293F1CAD3829EEACF38D09311BB3C8E5A880092DE26', 
                    generation_hash_seed = 'C8FC3FB54FDDFBCE0E8C71224990124E4EEC5AD5D30E592EDFA9524669A23810', 
                    epoch_adjustment = '1573430400s', ), 
                chain = symbol_openapi_client.models.chain_properties_dto.ChainPropertiesDTO(
                    enable_verifiable_state = True, 
                    enable_verifiable_receipts = True, 
                    currency_mosaic_id = '0x24F4'26B8'D549'3D4B', 
                    harvesting_mosaic_id = '0x1D9C'DC7E'218C'A88D', 
                    block_generation_target_time = '30s', 
                    block_time_smoothing_factor = '3000', 
                    block_finalization_interval = '30', 
                    importance_grouping = '39', 
                    importance_activity_percentage = '5', 
                    max_rollback_blocks = '40', 
                    max_difficulty_blocks = '60', 
                    default_dynamic_fee_multiplier = '10000', 
                    max_transaction_lifetime = '24h', 
                    max_block_future_time = '500ms', 
                    initial_currency_atomic_units = '8998999998000000', 
                    max_mosaic_atomic_units = '9000000000000000', 
                    total_chain_importance = '15000000', 
                    min_harvester_balance = '500', 
                    max_harvester_balance = '4000000', 
                    min_voter_balance = '50000', 
                    max_voting_keys_per_account = '3', 
                    min_voting_key_lifetime = '72', 
                    max_voting_key_lifetime = '26280', 
                    harvest_beneficiary_percentage = '10', 
                    harvest_network_percentage = '5', 
                    harvest_network_fee_sink_address = 'SAAA244WMCB2JXGNQTQHQOS45TGBFF4V2MJBVOQ', 
                    block_prune_interval = '360', 
                    max_transactions_per_block = '200000', ), 
                plugins = symbol_openapi_client.models.plugins_properties_dto.PluginsPropertiesDTO(
                    accountlink = symbol_openapi_client.models.account_key_link_network_properties_dto.AccountKeyLinkNetworkPropertiesDTO(
                        dummy = '0', ), 
                    aggregate = symbol_openapi_client.models.aggregate_network_properties_dto.AggregateNetworkPropertiesDTO(
                        max_transactions_per_aggregate = '1000', 
                        max_cosignatures_per_aggregate = '15', 
                        enable_strict_cosignature_check = False, 
                        enable_bonded_aggregate_support = True, 
                        max_bonded_transaction_lifetime = '48h', ), 
                    lockhash = symbol_openapi_client.models.hash_lock_network_properties_dto.HashLockNetworkPropertiesDTO(
                        locked_funds_per_aggregate = '10000000', 
                        max_hash_lock_duration = '2d', ), 
                    locksecret = symbol_openapi_client.models.secret_lock_network_properties_dto.SecretLockNetworkPropertiesDTO(
                        max_secret_lock_duration = '30d', 
                        min_proof_size = '1', 
                        max_proof_size = '1000', ), 
                    metadata = symbol_openapi_client.models.metadata_network_properties_dto.MetadataNetworkPropertiesDTO(
                        max_value_size = '1024', ), 
                    mosaic = symbol_openapi_client.models.mosaic_network_properties_dto.MosaicNetworkPropertiesDTO(
                        max_mosaics_per_account = '10000', 
                        max_mosaic_duration = '3650d', 
                        max_mosaic_divisibility = '6', 
                        mosaic_rental_fee_sink_address = 'SAAA244WMCB2JXGNQTQHQOS45TGBFF4V2MJBVOQ', 
                        mosaic_rental_fee = '500', ), 
                    multisig = symbol_openapi_client.models.multisig_network_properties_dto.MultisigNetworkPropertiesDTO(
                        max_multisig_depth = '3', 
                        max_cosignatories_per_account = '10', 
                        max_cosigned_accounts_per_account = '5', ), 
                    namespace = symbol_openapi_client.models.namespace_network_properties_dto.NamespaceNetworkPropertiesDTO(
                        max_name_size = '64', 
                        max_child_namespaces = '500', 
                        max_namespace_depth = '3', 
                        min_namespace_duration = '1m', 
                        max_namespace_duration = '365d', 
                        namespace_grace_period_duration = '2m', 
                        reserved_root_namespace_names = 'xem, nem, user, account, org, com, biz, net, edu, mil, gov, info', 
                        namespace_rental_fee_sink_address = 'SAAA244WMCB2JXGNQTQHQOS45TGBFF4V2MJBVOQ', 
                        root_namespace_rental_fee_per_block = '1', 
                        child_namespace_rental_fee = '100', ), 
                    restrictionaccount = symbol_openapi_client.models.account_restriction_network_properties_dto.AccountRestrictionNetworkPropertiesDTO(
                        max_account_restriction_values = '512', ), 
                    restrictionmosaic = symbol_openapi_client.models.mosaic_restriction_network_properties_dto.MosaicRestrictionNetworkPropertiesDTO(
                        max_mosaic_restriction_values = '20', ), 
                    transfer = symbol_openapi_client.models.transfer_network_properties_dto.TransferNetworkPropertiesDTO(
                        max_message_size = '1024', ), )
            )
        else :
            return NetworkConfigurationDTO(
                network = symbol_openapi_client.models.network_properties_dto.NetworkPropertiesDTO(
                    identifier = 'mijin-test', 
                    node_equality_strategy = 'host', 
                    nemesis_signer_public_key = 'AC1A6E1D8DE5B17D2C6B1293F1CAD3829EEACF38D09311BB3C8E5A880092DE26', 
                    generation_hash_seed = 'C8FC3FB54FDDFBCE0E8C71224990124E4EEC5AD5D30E592EDFA9524669A23810', 
                    epoch_adjustment = '1573430400s', ),
                chain = symbol_openapi_client.models.chain_properties_dto.ChainPropertiesDTO(
                    enable_verifiable_state = True, 
                    enable_verifiable_receipts = True, 
                    currency_mosaic_id = '0x24F4'26B8'D549'3D4B', 
                    harvesting_mosaic_id = '0x1D9C'DC7E'218C'A88D', 
                    block_generation_target_time = '30s', 
                    block_time_smoothing_factor = '3000', 
                    block_finalization_interval = '30', 
                    importance_grouping = '39', 
                    importance_activity_percentage = '5', 
                    max_rollback_blocks = '40', 
                    max_difficulty_blocks = '60', 
                    default_dynamic_fee_multiplier = '10000', 
                    max_transaction_lifetime = '24h', 
                    max_block_future_time = '500ms', 
                    initial_currency_atomic_units = '8998999998000000', 
                    max_mosaic_atomic_units = '9000000000000000', 
                    total_chain_importance = '15000000', 
                    min_harvester_balance = '500', 
                    max_harvester_balance = '4000000', 
                    min_voter_balance = '50000', 
                    max_voting_keys_per_account = '3', 
                    min_voting_key_lifetime = '72', 
                    max_voting_key_lifetime = '26280', 
                    harvest_beneficiary_percentage = '10', 
                    harvest_network_percentage = '5', 
                    harvest_network_fee_sink_address = 'SAAA244WMCB2JXGNQTQHQOS45TGBFF4V2MJBVOQ', 
                    block_prune_interval = '360', 
                    max_transactions_per_block = '200000', ),
                plugins = symbol_openapi_client.models.plugins_properties_dto.PluginsPropertiesDTO(
                    accountlink = symbol_openapi_client.models.account_key_link_network_properties_dto.AccountKeyLinkNetworkPropertiesDTO(
                        dummy = '0', ), 
                    aggregate = symbol_openapi_client.models.aggregate_network_properties_dto.AggregateNetworkPropertiesDTO(
                        max_transactions_per_aggregate = '1000', 
                        max_cosignatures_per_aggregate = '15', 
                        enable_strict_cosignature_check = False, 
                        enable_bonded_aggregate_support = True, 
                        max_bonded_transaction_lifetime = '48h', ), 
                    lockhash = symbol_openapi_client.models.hash_lock_network_properties_dto.HashLockNetworkPropertiesDTO(
                        locked_funds_per_aggregate = '10000000', 
                        max_hash_lock_duration = '2d', ), 
                    locksecret = symbol_openapi_client.models.secret_lock_network_properties_dto.SecretLockNetworkPropertiesDTO(
                        max_secret_lock_duration = '30d', 
                        min_proof_size = '1', 
                        max_proof_size = '1000', ), 
                    metadata = symbol_openapi_client.models.metadata_network_properties_dto.MetadataNetworkPropertiesDTO(
                        max_value_size = '1024', ), 
                    mosaic = symbol_openapi_client.models.mosaic_network_properties_dto.MosaicNetworkPropertiesDTO(
                        max_mosaics_per_account = '10000', 
                        max_mosaic_duration = '3650d', 
                        max_mosaic_divisibility = '6', 
                        mosaic_rental_fee_sink_address = 'SAAA244WMCB2JXGNQTQHQOS45TGBFF4V2MJBVOQ', 
                        mosaic_rental_fee = '500', ), 
                    multisig = symbol_openapi_client.models.multisig_network_properties_dto.MultisigNetworkPropertiesDTO(
                        max_multisig_depth = '3', 
                        max_cosignatories_per_account = '10', 
                        max_cosigned_accounts_per_account = '5', ), 
                    namespace = symbol_openapi_client.models.namespace_network_properties_dto.NamespaceNetworkPropertiesDTO(
                        max_name_size = '64', 
                        max_child_namespaces = '500', 
                        max_namespace_depth = '3', 
                        min_namespace_duration = '1m', 
                        max_namespace_duration = '365d', 
                        namespace_grace_period_duration = '2m', 
                        reserved_root_namespace_names = 'xem, nem, user, account, org, com, biz, net, edu, mil, gov, info', 
                        namespace_rental_fee_sink_address = 'SAAA244WMCB2JXGNQTQHQOS45TGBFF4V2MJBVOQ', 
                        root_namespace_rental_fee_per_block = '1', 
                        child_namespace_rental_fee = '100', ), 
                    restrictionaccount = symbol_openapi_client.models.account_restriction_network_properties_dto.AccountRestrictionNetworkPropertiesDTO(
                        max_account_restriction_values = '512', ), 
                    restrictionmosaic = symbol_openapi_client.models.mosaic_restriction_network_properties_dto.MosaicRestrictionNetworkPropertiesDTO(
                        max_mosaic_restriction_values = '20', ), 
                    transfer = symbol_openapi_client.models.transfer_network_properties_dto.TransferNetworkPropertiesDTO(
                        max_message_size = '1024', ), ),
        )

    def testNetworkConfigurationDTO(self):
        """Test NetworkConfigurationDTO"""
        inst_req_only = self.make_instance(include_optional=False)
        inst_req_and_optional = self.make_instance(include_optional=True)


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