class US342270_Tnt5213718c_Fast_reconnect(aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5213718c(self):

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'USER_peap.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(self, UiLib.radius_live_logs,
                           [NAUplift_Constants.ADD_USER, None])
        functs = [self.radius_live_logs]

        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US341330_Tnt5048856c_Change_internal_user_password(aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5048856c(self):

        # # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        # Run Peap EAP MSCHAPV2 Authentication
        self.pezlib.run_and_verify_pezcmd('/tmp/' +
                                          'user_nxtlgn_pwdcng_peapms.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(self, UiLib.radius_live_logs,
                           ["user_nxtlgn_pwdchng", None])
        functs = [self.radius_live_logs]

        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US342254_Tnt5212069c_Authentication_with_UTF8(aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5212069c(self):

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        # Run PEAP-GTC Authentication
        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'UTF_USER_peap.py',
                                          tls_config=False,
                                          negative_test=False)
        # Add Validation Steps
        UiLib.bindFunction(self, UiLib.radius_live_logs,
                           [NAUplift_Constants.AD_UTF_USER, AD_DOMAIN_NAME])

        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US342239_Tnt5212325c_PEAP_GTC_AD_Change_password(aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5212325c(self):
        # pez_utils.start_pez_docker_image(docker_image="dockerhub.cisco.com/isepy-release-docker/pez-executer",
        #                                  docker_image_version="v4")

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        # Run EAP-TLS Authentication
        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'SIMPLE_USER_peap.py',
                                          tls_config=False,
                                          negative_test=False)
        # Add Validation Steps
        UiLib.bindFunction(
            self, UiLib.radius_live_logs,
            [NAUplift_Constants.AD_SIMPLE_USER + "@" + AD_DOMAIN_NAME, None])

        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US377894_Tnt5988327c_PEAP_MSCHAPv2_authentication_using_PEZ(
        aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5988327c(self):

        UiLib.bindFunction(self, UiLib.delete_user_identity,
                           [NAUplift_Constants.ADD_USER])

        # create new identity source sequence
        UiLib.bindFunction(self, UiLib.create_identity_source_sequence, [
            IDENTITY_SEQUENCE_NAME,
            ["Internal Users", NAUplift_Constants.AD_NAME]
        ])

        UiLib.bindFunction(
            self, UiLib.create_authentication_rule_for_simple_condition, [
                POLICY_SET, AUTHENTICATION_POLICY, AUTH_COND_NAME[2],
                IDENTITY_SEQUENCE_NAME
            ])

        functs = [
            self.delete_user_identity, self.create_identity_source_sequence,
            self.create_authentication_rule_for_simple_condition
        ]

        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'USER_peapms.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(self, UiLib.radius_live_logs,
                           [NAUplift_Constants.ADD_USER, None])
        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class Tnt5121851c_Change_User_password_against_domain_in_the_Authentication_domain(
        aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5121851c(self):
        # step2:
        # Enable domain in the Authentication domain
        UiLib.bindFunction(self, UiLib.domain_authentication_enable, [
            NAUplift_Constants.AD_SCOPE1, NAUplift_Constants.AD_NAME,
            AD_DOMAIN_NAME
        ])

        funcs = [self.domain_authentication_enable]

        runFunctionsInOrderV2(funcs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        # Run EAP-TLS Authentication
        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'SIMPLE_USER_peap.py',
                                          tls_config=False,
                                          negative_test=False)
        # Add Validation Steps
        UiLib.bindFunction(
            self, UiLib.radius_live_logs,
            [NAUplift_Constants.AD_SIMPLE_USER + "@" + AD_DOMAIN_NAME, None])

        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US359233_Tnt5281274c_Verify_authentication_when_2nd_Shared_Secret_key_maching(
        aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5281274c(self):
        # pez_utils.start_pez_docker_image(docker_image="dockerhub.cisco.com/isepy-release-docker/pez-executer",
        #                                  docker_image_version="v4")

        UiLib.bindFunction(
            self, UiLib.networkDevices_create_with_range_and_two_secret, [
                NAUplift_Constants.NETWORK_DEVICE_NAME, self.nad_ip,
                NAUplift_Constants.SHARED_SECRET, 'asci', '32'
            ])

        functs = [self.networkDevices_create_with_range_and_two_secret]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'USER_peapms.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(self, UiLib.radius_live_logs,
                           [NAUplift_Constants.ADD_USER, None])
        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US341331_Tnt5048980c_Change_internal_user_password_when_user_define_with_UTF_8(
        aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5048980c(self):

        UiLib.bindFunction(self, UiLib.identities_add_simple_user, [
            NAUplift_Constants.ADD_USER, NAUplift_Constants.ADD_EMAIL,
            NAUplift_Constants.ADD_PASSWORD
        ])

        functs = [self.identities_add_simple_user]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'UTF8USER_peapms.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(self, UiLib.radius_live_logs,
                           [NAUplift_Constants.ADD_UTF8USER, None])
        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US342269_Tnt5213050c_Change_user_password_against_internal_identity_store(
        aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5213050c(self):
        UiLib.bindFunction(self, UiLib.edit_identity_source_in_default_policy,
                           ["Internal Users", POLICY_SET])
        funcs = [self.edit_identity_source_in_default_policy]

        runFunctionsInOrderV2(funcs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        ## Run EAP-TLS Authentication
        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'USER_peap.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(self, UiLib.radius_live_logs,
                           [NAUplift_Constants.ADD_USER, None])
        functs = [self.radius_live_logs]

        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US353137_Tnt5995039c_PEAP_MSCHAPv2_Turn_On_Weak_Cipher(aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5995039c(self):
        UiLib.bindFunction(self, UiLib.Enable_Peap_Eap_Mschap, [])
        UiLib.bindFunction(self, UiLib.Enable_Weak_Ciphers, [])

        functs = [self.Enable_Peap_Eap_Mschap, self.Enable_Weak_Ciphers]

        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option)

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        self.pezlib.run_and_verify_pezcmd('/tmp/' +
                                          'SIMPLE_USER_peapms_md5.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(
            self, UiLib.radius_live_logs,
            [NAUplift_Constants.AD_SIMPLE_USER + '@' + AD_DOMAIN_NAME, None])
        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US377906_Tnt5994926c_PEAP_MSCHAPv2_authentication_FIPS_mode_using_PEZ(
        aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5994926c(self):

        UiLib.bindFunction(self, UiLib.Disable_Weak_Ciphers, [])

        # Setup for FIPS mode, removing the default protocols
        UiLib.bindFunction(self, UiLib.edit_default_allowed_protocols,
                           [NAUplift_Constants.DEFAULT_POLICY_SET, False])

        # Setup the allowed protocols for FIPS mode.
        # Enable FIPS mode under Administration->Settings
        UiLib.bindFunction(self, UiLib.fips_mode_enabling_and_disabling,
                           ["Enabled"])
        funcs = [
            self.Disable_Weak_Ciphers, self.edit_default_allowed_protocols,
            self.fips_mode_enabling_and_disabling
        ]
        runFunctionsInOrderV2(funcs,
                              self,
                              RETRIES,
                              record=record_option,
                              killFFWhenFinished=True)

        time.sleep(100)
        s_log.info("Waited first 100 seconds")
        time.sleep(100)
        s_log.info("Waited second 100 seconds")
        time.sleep(100)
        s_log.info("Waited third 100 seconds")
        time.sleep(100)
        s_log.info("Waited fourth 100 seconds")
        time.sleep(100)
        s_log.info("Waited fifth 100 seconds")
        time.sleep(100)
        s_log.info("Waited sixth 100 seconds")
        time.sleep(100)
        s_log.info("Waited seventh 100 seconds")
        time.sleep(100)
        s_log.info("Waited eighth 100 seconds")
        time.sleep(100)
        s_log.info("Waited ninth 100 seconds")
        time.sleep(100)
        s_log.info("Waited tenth 100 seconds")
        time.sleep(100)
        s_log.info("Waited eleventh 100 seconds")

        # Creating New Protocol
        UiLib.bindFunction(self, UiLib.new_allowed_protocol,
                           ["Peap_allowed_protocol"])

        UiLib.bindFunction(self, UiLib.edit_default_policy_set,
                           ["Peap_allowed_protocol", POLICY_SET])

        funcs = [self.new_allowed_protocol, self.edit_default_policy_set]

        runFunctionsInOrderV2(funcs,
                              self,
                              RETRIES,
                              record=record_option,
                              killFFWhenFinished=True)

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'USER_peapms.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(self, UiLib.radius_live_logs,
                           [NAUplift_Constants.ADD_USER, None])
        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              killFFWhenFinished=True,
                              record=record_option)

    @aetest.cleanup
    def cleanup(self):
        pass
class US342251_Tnt5753124c_Authentication_using_Active_Directory_groups_and_attributes(
        aetest.Testcase):
    @aetest.setup
    def setup(self):
        get_device_attributes(self)

    @aetest.test
    def Tnt5753124c(self):
        # pez_utils.start_pez_docker_image(docker_image="dockerhub.cisco.com/isepy-release-docker/pez-executer",
        #                                  docker_image_version="v4")

        UiLib.bindFunction(self, UiLib.config_network_device, [
            NAUplift_Constants.NETWORK_DEVICE_NAME, self.nad_ip,
            NAUplift_Constants.SHARED_SECRET
        ])
        UiLib.bindFunction(self, UiLib.edit_identity_source_in_default_policy,
                           [NAUplift_Constants.AD_NAME, POLICY_SET])
        UiLib.bindFunction(
            self, UiLib.create_authorization_rule_for_simple_condition, [
                POLICY_SET, AUTHZ_POLICY_NAME[1], AUTH_COND_NAME[1],
                AUTH_PROFILE, None
            ])

        functs = [
            self.config_network_device,
            self.edit_identity_source_in_default_policy,
            self.create_authorization_rule_for_simple_condition
        ]
        runFunctionsInOrderV2(
            functs,
            self,
            RETRIES,
            resumeLastSession=True,
            killFFWhenFinished=True,
            #record=record_option
            record=True)

        # PEZ Authentication Flow
        s_log.info("---------------- PEZ AUTHENTICATION FLOW  -----------")
        self.pezlib = Pezlib()

        # Run PEAP-GTC Authentication
        self.pezlib.run_and_verify_pezcmd('/tmp/' + 'SIMPLE_USER_peap.py',
                                          tls_config=False,
                                          negative_test=False)

        # Add Validation Steps
        UiLib.bindFunction(
            self, UiLib.radius_live_logs,
            [NAUplift_Constants.AD_SIMPLE_USER + '@' + AD_DOMAIN_NAME, None])
        functs = [self.radius_live_logs]
        runFunctionsInOrderV2(functs,
                              self,
                              RETRIES,
                              resumeLastSession=True,
                              killFFWhenFinished=True,
                              record=record_option,
                              recordingDir=NAS_FOLDER)

    @aetest.cleanup
    def cleanup(self):
        pass