def test_run_Ontap_gather_facts_for_all_subsets_pass(self, mock_request):
        set_module_args(self.set_args_run_Ontap_gather_facts_for_all_subsets())
        my_obj = ontap_rest_info_module()
        gather_subset = [
            'cloud/targets', 'cluster/chassis', 'cluster/jobs',
            'cluster/metrocluster/diagnostics', 'cluster/metrics',
            'cluster/nodes', 'cluster/peers', 'cluster/schedules',
            'cluster/software/history', 'cluster/software/packages',
            'name-services/dns', 'name-services/ldap',
            'name-services/name-mappings', 'name-services/nis',
            'network/ethernet/broadcast-domains', 'network/ethernet/ports',
            'network/fc/logins', 'network/fc/wwpn-aliases',
            'network/ip/interfaces', 'network/ip/routes',
            'network/ip/service-policies', 'network/ipspaces',
            'storage/aggregates', 'storage/disks', 'storage/volumes',
            'svm/peers', 'svm/peer-permissions', 'svm/svms',
            'protocols/cifs/services', 'protocols/cifs/shares'
        ]
        mock_request.side_effect = [
            SRR['validate_ontap_version_pass'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['metrocluster_post'],
            SRR['job'],
            SRR['metrocluster_return'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
        ]

        with pytest.raises(AnsibleExitJson) as exc:
            my_obj.apply()
        print('Info: test_run_Ontap_gather_facts_for_all_subsets_pass: %s' %
              repr(exc.value.args))
        assert set(exc.value.args[0]['ontap_info']) == set(gather_subset)
    def test_run_ontap_version_check_for_10_2_pass(self, mock_request):
        set_module_args(self.set_args_run_ontap_version_check())
        my_obj = ontap_rest_info_module()
        mock_request.side_effect = [
            SRR['validate_ontap_version_pass'],
            SRR['get_subset_info'],
        ]

        with pytest.raises(AnsibleExitJson) as exc:
            my_obj.apply()
        assert exc.value.args[0]['changed']
    def test_run_ontap_version_check_for_9_2_fail(self, mock_request):
        ''' Test for Checking the ONTAP version '''
        set_module_args(self.set_args_run_ontap_version_check())
        my_obj = ontap_rest_info_module()
        mock_request.side_effect = [
            SRR['validate_ontap_version_fail'],
        ]

        with pytest.raises(AnsibleFailJson) as exc:
            my_obj.apply()
        assert exc.value.args[0]['msg'] == SRR['validate_ontap_version_fail'][2]
    def test_run_ontap_gather_facts_for_aggregate_info_pass_with_fields_section_pass(self, mock_request):
        set_module_args(self.set_args_run_ontap_gather_facts_for_aggregate_info_with_fields_section_pass())
        my_obj = ontap_rest_info_module()
        gather_subset = ['storage/aggregates']
        mock_request.side_effect = [
            SRR['validate_ontap_version_pass'],
            SRR['get_subset_info'],
        ]

        with pytest.raises(AnsibleExitJson) as exc:
            my_obj.apply()
        print('Info: test_run_ontap_gather_facts_for_volume_info_pass: %s' % repr(exc.value.args))
        assert set(exc.value.args[0]['ontap_info']) == set(gather_subset)
    def test_run_metrocluster_pass(self, mock_request):
        set_module_args(self.set_args_run_metrocluster_diag())
        my_obj = ontap_rest_info_module()
        gather_subset = ['cluster/metrocluster/diagnostics']
        mock_request.side_effect = [
            SRR['validate_ontap_version_pass'], SRR['metrocluster_post'],
            SRR['job'], SRR['metrocluster_return']
        ]

        with pytest.raises(AnsibleExitJson) as exc:
            my_obj.apply()
        print('Info: test_run_metrocluster_digag_pass: %s' %
              repr(exc.value.args))
        assert set(exc.value.args[0]['ontap_info']) == set(gather_subset)
    def test_get_all_records_for_volume_info_to_check_next_api_call_functionality_pass(self, mock_request):
        set_module_args(self.set_args_get_all_records_for_volume_info_to_check_next_api_call_functionality_pass())
        my_obj = ontap_rest_info_module()
        total_records = 5
        mock_request.side_effect = [
            SRR['validate_ontap_version_pass'],
            SRR['get_subset_info_with_next'],
            SRR['get_next_record'],
        ]

        with pytest.raises(AnsibleExitJson) as exc:
            my_obj.apply()
        print('Info: test_get_all_records_for_volume_info_to_check_next_api_call_functionality_pass: %s' % repr(exc.value.args))
        assert exc.value.args[0]['ontap_info']['storage/volumes']['num_records'] == total_records
    def test_run_ontap_gather_facts_for_all_subsets_with_fields_section_fail(self, mock_request):
        set_module_args(self.set_args_run_ontap_gather_facts_for_all_subsets_with_fields_section_fail())
        my_obj = ontap_rest_info_module()
        error_message = "Error: fields: %s, only one subset will be allowed." \
                        % self.set_args_run_ontap_gather_facts_for_aggregate_info_with_fields_section_pass()['fields']
        mock_request.side_effect = [
            SRR['validate_ontap_version_pass'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
        ]

        with pytest.raises(AnsibleFailJson) as exc:
            my_obj.apply()
        print('Info: test_run_ontap_gather_facts_for_all_subsets_pass: %s' % repr(exc.value.args))
        assert exc.value.args[0]['msg'] == error_message
    def test_run_ontap_gather_facts_for_all_subsets_with_fields_section_pass(
            self, mock_request):
        set_module_args(
            self.
            set_args_run_ontap_gather_facts_for_all_subsets_with_fields_section_pass(
            ))
        my_obj = ontap_rest_info_module()
        gather_subset = [
            'application/applications', 'application/templates',
            'cloud/targets', 'cluster/chassis', 'cluster/jobs',
            'cluster/metrocluster/diagnostics', 'cluster/metrics',
            'cluster/nodes', 'cluster/peers', 'cluster/schedules',
            'cluster/software', 'cluster/software/history',
            'cluster/software/packages', 'name-services/dns',
            'name-services/ldap', 'name-services/name-mappings',
            'name-services/nis', 'network/ethernet/broadcast-domains',
            'network/ethernet/ports', 'network/fc/logins',
            'network/fc/wwpn-aliases', 'network/ip/interfaces',
            'network/ip/routes', 'network/ip/service-policies',
            'network/ipspaces', 'protocols/cifs/services',
            'protocols/cifs/shares', 'protocols/san/fcp/services',
            'protocols/san/igroups', 'protocols/san/iscsi/credentials',
            'protocols/san/iscsi/services', 'protocols/san/lun-maps',
            'storage/aggregates', 'storage/disks',
            'storage/flexcache/flexcaches', 'storage/flexcache/origins',
            'storage/luns', 'storage/namespaces', 'storage/ports',
            'storage/qos/policies', 'storage/qtrees', 'storage/quota/reports',
            'storage/quota/rules', 'storage/shelves',
            'storage/snapshot-policies', 'storage/volumes',
            'support/autosupport', 'support/autosupport/messages',
            'support/ems', 'support/ems/events', 'support/ems/filters',
            'svm/peers', 'svm/peer-permissions', 'svm/svms'
        ]
        mock_request.side_effect = [
            SRR['validate_ontap_version_pass'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['metrocluster_post'],
            SRR['job'],
            SRR['metrocluster_return'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
            SRR['get_subset_info'],
        ]

        with pytest.raises(AnsibleExitJson) as exc:
            my_obj.apply()
        print('Info: test_run_ontap_gather_facts_for_all_subsets_pass: %s' %
              repr(exc.value.args))
        assert set(exc.value.args[0]['ontap_info']) == set(gather_subset)