ruby-jss 2.0.0a11 → 2.0.0b5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +1 -0
- data/README-2.0.0.md +59 -35
- data/README.md +227 -172
- data/lib/jamf/api/classic/api_objects/computer.rb +18 -15
- data/lib/jamf/api/classic/api_objects/computer_group.rb +1 -0
- data/lib/jamf/api/classic/api_objects/criteriable.rb +1 -1
- data/lib/jamf/api/classic/api_objects/distribution_point.rb +12 -50
- data/lib/jamf/api/classic/api_objects/mdm.rb +40 -24
- data/lib/jamf/api/classic/api_objects/mobile_device.rb +8 -12
- data/lib/jamf/api/classic/api_objects/mobile_device_application.rb +35 -6
- data/lib/jamf/api/classic/api_objects/patch_title.rb +14 -9
- data/lib/jamf/api/classic/api_objects/policy.rb +8 -17
- data/lib/jamf/api/classic/api_objects/script.rb +1 -1
- data/lib/jamf/api/classic/base_classes/advanced_search.rb +4 -4
- data/lib/jamf/api/classic/base_classes/api_object.rb +94 -35
- data/lib/jamf/api/classic/base_classes/extension_attribute.rb +2 -2
- data/lib/jamf/api/classic/base_classes/group.rb +57 -40
- data/lib/jamf/api/classic/base_classes/patch_source.rb +10 -5
- data/lib/jamf/api/connection/attributes.rb +51 -4
- data/lib/jamf/api/connection/classic_api.rb +2 -1
- data/lib/jamf/api/connection/connect.rb +49 -2
- data/lib/jamf/api/connection/constants.rb +6 -0
- data/lib/jamf/api/connection/jamf_pro_api.rb +6 -2
- data/lib/jamf/api/connection/token.rb +10 -3
- data/lib/jamf/api/connection.rb +1 -1
- data/lib/jamf/api/jamf_pro/api_objects/inventory_preload_record.rb +9 -1
- data/lib/jamf/api/jamf_pro/base_classes/oapi_object.rb +15 -9
- data/lib/jamf/api/jamf_pro/mixins/collection_resource.rb +8 -12
- data/lib/jamf/api/jamf_pro/mixins/macos_managed_updates.rb +178 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/access_groups_preview_search_results.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/access_groups_v2_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/account.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/{access_groups_search_results.rb → account_driven_user_enrollment_session_token_settings.rb} +14 -14
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_group.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_v4.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/active_patch_history.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/active_patch_history_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/active_patch_summary.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/admin_account.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search_criteria_choices.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_user_content_search.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_user_content_search_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/android_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_error.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_error_cause.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_analytics_setting.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_dynamics_config.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_path.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_form_input_field.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_form_input_field_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/apple_tv_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/application_attributes.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/application_configuration.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/assign_remove_profile_response_sync_state.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/attributes.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_account.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_account_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_token.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_token_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/authorization.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/authorization_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/{deprecated_configuration_search_results.rb → available_updates.rb} +12 -20
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_ad_migration_report_process_status.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_ad_migration_report_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_mappings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/branding_image_url.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/building.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/building_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/cache_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/categories_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/category.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_details.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_identity_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_key.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_record.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/classic_ldap_mappings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/client_check_in_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/client_check_in_v3.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_connection_pool_statistics.rb +1 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_connection_status.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_keystore.rb +1 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_keystore_file.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_mappings_request.rb +1 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_mappings_response.rb +1 -9
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_application.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_attachment.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_certificate.rb +26 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_configuration_profile.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_alert.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_cache_detail.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_data_migration_error.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_data_migration_error_user_info.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_alert.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_capabilities.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_local_network.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_disk.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_disk_encryption.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_extension_attribute.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_font.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_general.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_general_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/{mdm_signing_certificate.rb → computer_group.rb} +18 -24
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_hardware.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_hardware_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_ibeacon.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/{computer_inventory_response.rb → computer_inventory.rb} +4 -5
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_collection_preferences.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_collection_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_recovery_lock_password_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_search_results.rb +4 -5
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_update_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_licensed_software.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_local_user_account.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_location.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_mdm_capability.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_operating_system.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_operating_system_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_overview.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_package_receipts.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition_encryption.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition_file_vault2_state.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_plugin.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_search_results_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_printer.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_purchase.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_remote_management.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_section.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_security.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_service.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_software_update.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_storage.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_user_and_location.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/computers_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/configuration_profile.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/configuration_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_candidate_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_status_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_update_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/country.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/country_codes.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/create_path.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/csa_token.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/current_account.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/current_authorization.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/data_roaming_setting.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/database_password.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/day_of_week.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/delete_user_command.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/department.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/departments_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/deployment_task.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/deployment_task_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_communication_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_compliance_information.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_device.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_device_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_disown_body.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_disown_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance_sync_status.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_prestage.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_prestage_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_token.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/diagnostic_submission_setting.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_exclusions.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_limitations.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_scope.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enable_lost_mode_command.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/engage.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_access_group_preview.rb +12 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_access_group_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_branding_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_dependencies.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_dependency.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_ldap_group_access.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_ldap_auth.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_list.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_sso_auth.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_text.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_search_results_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_v2.rb +3 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_method.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_process_text_object.rb +5 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_settings_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/export_field.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/export_parameters.rb +5 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/extension_attribute.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/extension_attribute_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/external_recipient.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment_delete.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/filter.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/font_path.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_computer_prestage.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_computer_prestage_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_ldap_auth.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_sso_auth.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_text.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_mobile_device_prestage.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_mobile_device_prestage_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_mappings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_membership.rb +2 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search_request.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search_response.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/history_search_results.rb +1 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/history_search_results_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/href_response.rb +3 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/icon_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/id_and_name.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/id_and_name_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ids.rb +5 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/initialize.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/initialize_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/install_package.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/integer_wrapper.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/internal_recipient.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_information.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_error.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_error.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_error_cause.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_success.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute_column.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute_column_result.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_invalid_csv_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_search_results_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_branding_configuration.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_branding_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_details_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_application_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_nation_credentials.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_package_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_information.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/{enrollment_access_group.rb → jamf_pro_information_v2.rb} +35 -34
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_server_url.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_version.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_protect_plan.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/language_code.rb +5 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_group.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_group_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_server.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/linked_connect_profile.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/linked_connect_profile_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/locale.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/location.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_information.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_information_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_branding_configuration.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_branding_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_managed_software_update.rb +28 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_managed_software_update_response.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/markdown.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_client_type.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_client.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_state.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_type.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_mappings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_test_search_request.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_test_search_response.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/memcached_endpoints.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_application.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_attachment.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_attachment_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_certificate_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_certificate_v2.rb +61 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_details_get_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_details_v2.rb +7 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_ebook.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_extension_attribute_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_group.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_name.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_name_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_names.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_names_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_search_results_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_search_params.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_search_results_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/network.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/network_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification_type.rb +3 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history.rb +1 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history_note.rb +1 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/order_by.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/package_manifest.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/parent_app.rb +5 -5
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_ids_on_dashboard.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_attempt.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_attempt_action.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_on_dashboard.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_summary.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_version.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/personal_hotspot_setting.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/plugin_path.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/policy_properties.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/policy_properties_v1.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/post_computer_prestage_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_dependencies.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_dependency.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_file_attachment.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_file_attachment_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_purchasing_information.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_purchasing_information_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_assignment.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_assignment_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_response_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_sync_status.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_sync_status_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/process_texts_search_results.rb +3 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_registration_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_settings_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_updatable_settings_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/provisioning_profile.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/purchasing.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/purchasing_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_computer_prestage.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_computer_prestage_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_mobile_device_prestage.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_mobile_device_prestage_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/recalculation_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/recipient.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/recipients.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/redeploy_jamf_management_framework_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/reenrollment.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/remote_administration_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/remote_administration_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/renew_mdm_profile_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/restart_device_command.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/retry_patch_policy_params.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/{safelisted_apps.rb → safelisted_app.rb} +15 -11
- data/lib/jamf/api/jamf_pro/oapi_schemas/script.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/scripts_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/search_active_patch_history_params.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/search_patch_policy_log_params.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/security.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/security_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_install_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_interaction_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_login_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/session.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_candidate_request.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_details_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_status.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/set_recovery_lock_command.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/settings_command.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/shared_device_configuration.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/signature.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/site.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/smart_search_criterion.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/software_title_configuration.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/software_title_patch_policy_summaries.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/software_update_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_cert_parse_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_parse.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_response_with_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_with_details.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_metadata_url.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_settings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/startup_status.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/static_user_group.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_certificate_upload.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_create.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_update.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_features.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_settings_request.rb +5 -5
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_settings_response.rb +5 -5
- data/lib/jamf/api/jamf_pro/oapi_schemas/time_frame.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/time_zone.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/tv_os_details.rb +9 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/udids.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_apple_tv.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_ios.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_ios_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_mobile_device.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_mobile_device_v2.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_tv_os.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_attributes.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_mappings.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search_request.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search_response.rb +1 -4
- data/lib/jamf/api/jamf_pro/oapi_schemas/v1_site.rb +3 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_ca_record.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_pki_payload_record.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_pki_payload_record_search_results.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_service_status.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/verbose_package_deployment_response.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/voice_roaming_setting.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_content.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_list_view.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_patch.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_post.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_locations.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscription.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscription_base.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscriptions.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/vpp_admin_account.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/vpp_token_subscription.rb +1 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/web_link.rb +1 -2
- data/lib/jamf/client/jamf_binary.rb +76 -77
- data/lib/jamf/client/jamf_helper.rb +245 -235
- data/lib/jamf/client/management_action.rb +63 -53
- data/lib/jamf/client.rb +3 -3
- data/lib/jamf/deprecations/deprecated_api_connection_class.rb +29 -0
- data/lib/jamf/deprecations/deprecated_api_constant.rb +3 -1
- data/lib/jamf/deprecations/deprecated_config_constant.rb +3 -1
- data/lib/jamf/version.rb +1 -1
- data/lib/jamf/zeitwerk_config.rb +217 -0
- data/lib/jamf.rb +7 -39
- data/test/{README.md → README-TEST.md} +3 -0
- data/test/bin/runtests +42 -2
- data/test/lib/jamf_test/collection_tests.rb +4 -7
- data/test/tests/building.rb +41 -0
- data/test/tests/computer.rb +41 -0
- data/test/tests/computer_group.rb +132 -0
- data/test/tests/department.rb +41 -0
- data/test/tests/mobile_device.rb +41 -0
- data/test/tests/policy.rb +39 -50
- metadata +35 -54
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_identity_v1.rb +0 -102
- data/lib/jamf/api/jamf_pro/oapi_schemas/deprecated_configuration_request.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/deprecated_configuration_response.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/deprecated_configuration_update.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/deprecated_server_request.rb +0 -166
- data/lib/jamf/api/jamf_pro/oapi_schemas/deprecated_server_response.rb +0 -163
- data/lib/jamf/api/jamf_pro/oapi_schemas/deprecated_server_update.rb +0 -171
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_settings.rb +0 -264
- data/lib/zeitwerk_config.rb +0 -163
@@ -31,7 +31,7 @@ module Jamf
|
|
31
31
|
|
32
32
|
# Module for working with the Management Action.app, which is an interface
|
33
33
|
# to the Notification Center
|
34
|
-
# This should be
|
34
|
+
# This should be included into Jamf::Client
|
35
35
|
#####################################
|
36
36
|
module ManagementAction
|
37
37
|
|
@@ -43,67 +43,77 @@ module Jamf
|
|
43
43
|
# MGMT_ACTION_BUNDLE_ID = 'com.jamfsoftware.Management-Action'.freeze
|
44
44
|
# HUP_NOTIF_CTR_CMD = '/usr/bin/killall sighup usernoted NotificationCenter'.freeze
|
45
45
|
|
46
|
+
# when this module is included, also extend our Class Methods
|
47
|
+
def self.included(includer)
|
48
|
+
Jamf.load_msg "--> #{includer} is including Jamf::Client::ManagementAction"
|
49
|
+
includer.extend(ClassMethods)
|
50
|
+
end
|
51
|
+
|
46
52
|
# class Methods
|
47
53
|
#####################################
|
48
54
|
|
49
|
-
|
50
|
-
raise Jamf::InvalidDataError, 'delay: must be a non-negative integer.' unless delay.is_a?(Integer) && delay > -1
|
55
|
+
module ClassMethods
|
51
56
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
57
|
+
def management_action(msg, title: nil, subtitle: nil, delay: 0)
|
58
|
+
raise Jamf::InvalidDataError, 'delay: must be a non-negative integer.' unless delay.is_a?(Integer) && delay > -1
|
59
|
+
|
60
|
+
cmd = Shellwords.escape MGMT_ACTION.to_s
|
61
|
+
cmd << " -message #{Shellwords.escape msg.to_s}"
|
62
|
+
cmd << " -title #{Shellwords.escape title.to_s}" if title
|
63
|
+
cmd << " -subtitle #{Shellwords.escape subtitle.to_s}" if subtitle
|
64
|
+
cmd << " -deliverydelay #{Shellwords.escape delay}" if delay > 0
|
65
|
+
`#{cmd} 2>&1`
|
66
|
+
end
|
67
|
+
alias nc_notify management_action
|
68
|
+
|
69
|
+
# Skipping all the force-alerts stuff until we figure out cleaner
|
70
|
+
# ways to do it in 10.13+
|
71
|
+
# The plan is to be able to make the NotificationCenter notification be an
|
72
|
+
# 'alert' (which stays visible til the user clicks) or a
|
73
|
+
# 'banner' (which vanishes in a few seconds), regardless of the user's
|
74
|
+
# setting in the NC prefs.
|
75
|
+
|
76
|
+
def force_alerts
|
77
|
+
orig_flags = {}
|
78
|
+
console_users.each do |user|
|
79
|
+
orig_flags[user] = set_mgmt_action_ncprefs_flags user, NC_ALERT_STYLE_FLAGS, hup: false
|
80
|
+
end
|
81
|
+
system HUP_NOTIF_CTR_CMD unless orig_flags.empty?
|
82
|
+
sleep 1
|
83
|
+
orig_flags
|
72
84
|
end
|
73
|
-
system HUP_NOTIF_CTR_CMD unless orig_flags.empty?
|
74
|
-
sleep 1
|
75
|
-
orig_flags
|
76
|
-
end
|
77
85
|
|
78
|
-
|
79
|
-
|
80
|
-
|
86
|
+
def restore_alerts(orig_flags)
|
87
|
+
orig_flags.each do |user, flags|
|
88
|
+
set_mgmt_action_ncprefs_flags user, flags, hup: false
|
89
|
+
end
|
90
|
+
system HUP_NOTIF_CTR_CMD unless orig_flags.empty?
|
81
91
|
end
|
82
|
-
system HUP_NOTIF_CTR_CMD unless orig_flags.empty?
|
83
|
-
end
|
84
92
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
93
|
+
# set the NotificationCenter option flags for a user
|
94
|
+
# flags = an integer.
|
95
|
+
#
|
96
|
+
# Doesn't seem to work in 10.13, so ignore this for now.
|
97
|
+
#
|
98
|
+
# @return [Integer] the original flags, or given flags if no originals.
|
99
|
+
#
|
100
|
+
def set_mgmt_action_ncprefs_flags(user, flags, hup: true)
|
101
|
+
plist = Pathname.new "/Users/#{user}/Library/Preferences/#{NCPREFS_DOMAIN}.plist"
|
102
|
+
prefs = JSS.parse_plist plist
|
103
|
+
mgmt_action_setting = prefs['apps'].select { |a| a['bundle-id'] == MGMT_ACTION_BUNDLE_ID }.first
|
104
|
+
if mgmt_action_setting
|
105
|
+
orig_flags = mgmt_action_setting['flags']
|
106
|
+
mgmt_action_setting['flags'] = flags
|
107
|
+
else
|
108
|
+
orig_flags = flags
|
109
|
+
prefs['apps'] << { 'bundle-id' => MGMT_ACTION_BUNDLE_ID, 'flags' => flags }
|
110
|
+
end
|
111
|
+
plist.open('w') { |f| f.write JSS.xml_plist_from(prefs) }
|
112
|
+
system HUP_NOTIF_CTR_CMD if hup
|
113
|
+
orig_flags
|
102
114
|
end
|
103
|
-
|
104
|
-
|
105
|
-
orig_flags
|
106
|
-
end
|
115
|
+
|
116
|
+
end # ClassMethods
|
107
117
|
|
108
118
|
end # moculde
|
109
119
|
|
data/lib/jamf/client.rb
CHANGED
@@ -64,9 +64,9 @@ module Jamf
|
|
64
64
|
# the path to a users byhost folder from home
|
65
65
|
USER_PREFS_BYHOST_FOLDER = 'Library/Preferences/ByHost/'.freeze
|
66
66
|
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
include Jamf::Client::JamfBinary
|
68
|
+
include Jamf::Client::JamfHelper
|
69
|
+
include Jamf::Client::ManagementAction
|
70
70
|
|
71
71
|
# Class Methods
|
72
72
|
#####################################
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Copyright 2022 Pixar
|
2
|
+
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "Apache License")
|
5
|
+
# with the following modification; you may not use this file except in
|
6
|
+
# compliance with the Apache License and the following modification to it:
|
7
|
+
# Section 6. Trademarks. is deleted and replaced with:
|
8
|
+
#
|
9
|
+
# 6. Trademarks. This License does not grant permission to use the trade
|
10
|
+
# names, trademarks, service marks, or product names of the Licensor
|
11
|
+
# and its affiliates, except as required to comply with Section 4(c) of
|
12
|
+
# the License and to reproduce the content of the NOTICE file.
|
13
|
+
#
|
14
|
+
# You may obtain a copy of the Apache License at
|
15
|
+
#
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
17
|
+
#
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
19
|
+
# distributed under the Apache License with the above modification is
|
20
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
21
|
+
# KIND, either express or implied. See the Apache License for the specific
|
22
|
+
# language governing permissions and limitations under the Apache License.
|
23
|
+
|
24
|
+
# @deprecated Use class Jamf::Connection
|
25
|
+
module Jamf
|
26
|
+
|
27
|
+
APIConnection = Connection
|
28
|
+
|
29
|
+
end
|
data/lib/jamf/version.rb
CHANGED
@@ -0,0 +1,217 @@
|
|
1
|
+
# Copyright 2022 Pixar
|
2
|
+
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "Apache License")
|
5
|
+
# with the following modification; you may not use this file except in
|
6
|
+
# compliance with the Apache License and the following modification to it:
|
7
|
+
# Section 6. Trademarks. is deleted and replaced with:
|
8
|
+
#
|
9
|
+
# 6. Trademarks. This License does not grant permission to use the trade
|
10
|
+
# names, trademarks, service marks, or product names of the Licensor
|
11
|
+
# and its affiliates, except as required to comply with Section 4(c) of
|
12
|
+
# the License and to reproduce the content of the NOTICE file.
|
13
|
+
#
|
14
|
+
# You may obtain a copy of the Apache License at
|
15
|
+
#
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
17
|
+
#
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
19
|
+
# distributed under the Apache License with the above modification is
|
20
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
21
|
+
# KIND, either express or implied. See the Apache License for the specific
|
22
|
+
# language governing permissions and limitations under the Apache License.
|
23
|
+
|
24
|
+
# Gems
|
25
|
+
######
|
26
|
+
|
27
|
+
require 'zeitwerk'
|
28
|
+
|
29
|
+
# Jamf's Zeitwerk Config and processes
|
30
|
+
module JamfZeitwerkConfig
|
31
|
+
|
32
|
+
# touch this file to make zeitwerk and mixins send text to stderr as things load
|
33
|
+
# or get mixed in
|
34
|
+
VERBOSE_LOADING_FILE = Pathname.new('/tmp/ruby-jss-verbose-loading')
|
35
|
+
|
36
|
+
# Or, set this ENV var to also make zeitverk and mixins send text to stderr
|
37
|
+
VERBOSE_LOADING_ENV = 'RUBY_JSS_VERBOSE_LOADING'
|
38
|
+
|
39
|
+
# touch this file to make zeitwek eager-load everything when the gem is required.
|
40
|
+
EAGER_LOAD_FILE = Pathname.new('/tmp/ruby-jss-zeitwerk-eager-load')
|
41
|
+
|
42
|
+
# Only look at the filesystem once.
|
43
|
+
def self.verbose_loading?
|
44
|
+
return @verbose_loading unless @verbose_loading.nil?
|
45
|
+
|
46
|
+
@verbose_loading = VERBOSE_LOADING_FILE.file?
|
47
|
+
@verbose_loading ||= ENV.include? VERBOSE_LOADING_ENV
|
48
|
+
@verbose_loading
|
49
|
+
end
|
50
|
+
|
51
|
+
# rubocop: disable Style/StderrPuts
|
52
|
+
def self.load_msg(msg)
|
53
|
+
$stderr.puts msg if verbose_loading?
|
54
|
+
end
|
55
|
+
# rubocop: enable Style/StderrPuts
|
56
|
+
|
57
|
+
# The loader object for Xolo
|
58
|
+
def self.loader
|
59
|
+
@loader
|
60
|
+
end
|
61
|
+
|
62
|
+
# Configure the Zeitwerk loader, See https://github.com/fxn/zeitwerk
|
63
|
+
def self.setup_zeitwerk_loader(zloader)
|
64
|
+
@loader = zloader
|
65
|
+
|
66
|
+
# Ignore this file (more ignores below)
|
67
|
+
loader.ignore __FILE__
|
68
|
+
|
69
|
+
##### Collaped Paths
|
70
|
+
|
71
|
+
# these paths all define classes & modules directly below 'Jamf'
|
72
|
+
# If we didn't collapse them, then e.g.
|
73
|
+
# /jamf/api/base_classes/classic/group.rb
|
74
|
+
# would be expected to define
|
75
|
+
# Jamf::Api::BaseClasses::Classic::Group
|
76
|
+
# rather than what we want:
|
77
|
+
# Jamf::Group
|
78
|
+
###################################################
|
79
|
+
|
80
|
+
loader.collapse("#{__dir__}/api")
|
81
|
+
|
82
|
+
loader.collapse("#{__dir__}/api/classic")
|
83
|
+
loader.collapse("#{__dir__}/api/classic/api_objects")
|
84
|
+
loader.collapse("#{__dir__}/api/classic/base_classes")
|
85
|
+
|
86
|
+
loader.collapse("#{__dir__}/api/jamf_pro")
|
87
|
+
loader.collapse("#{__dir__}/api/jamf_pro/api_objects")
|
88
|
+
loader.collapse("#{__dir__}/api/jamf_pro/mixins")
|
89
|
+
loader.collapse("#{__dir__}/api/jamf_pro/base_classes")
|
90
|
+
loader.collapse("#{__dir__}/api/jamf_pro/other_classes")
|
91
|
+
|
92
|
+
loader.collapse("#{__dir__}/deprecations")
|
93
|
+
|
94
|
+
##### Inflected Paths
|
95
|
+
|
96
|
+
# filenames => Constants, which don't adhere to zeitwerk's parsing standards.
|
97
|
+
#
|
98
|
+
# Mostly because the a filename like 'oapi_object' would be
|
99
|
+
# loaded by zeitwerk expecting it to define 'OapiObject', but it really
|
100
|
+
# defines 'OAPIObject'
|
101
|
+
###############################################
|
102
|
+
|
103
|
+
# Connections
|
104
|
+
loader.inflector.inflect 'classic_api' => 'ClassicAPI'
|
105
|
+
loader.inflector.inflect 'jamf_pro_api' => 'JamfProAPI'
|
106
|
+
loader.inflector.inflect 'jamf_pro_api_error' => 'JamfProAPIError'
|
107
|
+
|
108
|
+
# API objects, resources, and mixins
|
109
|
+
loader.inflector.inflect 'oapi_schemas' => 'OAPISchemas'
|
110
|
+
loader.inflector.inflect 'oapi_object' => 'OAPIObject'
|
111
|
+
loader.inflector.inflect 'oapi_validate' => 'OAPIValidate'
|
112
|
+
|
113
|
+
loader.inflector.inflect 'jpapi_resource' => 'JPAPIResource'
|
114
|
+
|
115
|
+
loader.inflector.inflect 'api_object' => 'APIObject'
|
116
|
+
loader.inflector.inflect 'xml_workaround' => 'XMLWorkaround'
|
117
|
+
loader.inflector.inflect 'json_object' => 'JSONObject'
|
118
|
+
loader.inflector.inflect 'vppable' => 'VPPable'
|
119
|
+
loader.inflector.inflect 'osx_configuration_profile' => 'OSXConfigurationProfile'
|
120
|
+
loader.inflector.inflect 'jp_extendable' => 'JPExtendable'
|
121
|
+
loader.inflector.inflect 'mdm' => 'MDM'
|
122
|
+
loader.inflector.inflect 'ibeacon' => 'IBeacon'
|
123
|
+
loader.inflector.inflect 'powerbroker_identity_services' => 'PowerBroker'
|
124
|
+
loader.inflector.inflect 'admitmac' => 'ADmitMac'
|
125
|
+
loader.inflector.inflect 'ip_address' => 'IPAddress'
|
126
|
+
loader.inflector.inflect 'netboot_server' => 'NetBootServer'
|
127
|
+
loader.inflector.inflect 'vpp_account' => 'VPPAccount'
|
128
|
+
loader.inflector.inflect 'removable_macaddr' => 'RemovableMacAddress'
|
129
|
+
loader.inflector.inflect 'md_prestage_name' => 'MobileDevicePrestageName'
|
130
|
+
loader.inflector.inflect 'md_prestage_names' => 'MobileDevicePrestageNames'
|
131
|
+
loader.inflector.inflect 'md_prestage_skip_setup_items' => 'MobileDevicePrestageSkipSetupItems'
|
132
|
+
loader.inflector.inflect 'macos_managed_updates' => 'MacOSManagedUpdates'
|
133
|
+
|
134
|
+
# deprecations, separated so they load only when used.
|
135
|
+
# When its time to get rid of them, delete the files from the
|
136
|
+
# 'deprecations' directory, and the matching line here.
|
137
|
+
loader.inflector.inflect('deprecated_api_constant' => 'API')
|
138
|
+
loader.inflector.inflect('deprecated_config_constant' => 'CONFIG')
|
139
|
+
loader.inflector.inflect('deprecated_api_connection_class' => 'APIConnection')
|
140
|
+
|
141
|
+
##### Ingored Paths
|
142
|
+
|
143
|
+
# These should be ignored, some will be required directly
|
144
|
+
#####################################
|
145
|
+
|
146
|
+
loader.ignore "#{__dir__}/db_connection.rb"
|
147
|
+
loader.ignore "#{__dir__}/ruby_extensions.rb"
|
148
|
+
loader.ignore "#{__dir__}/ruby_extensions"
|
149
|
+
loader.ignore "#{__dir__}/exceptions.rb"
|
150
|
+
|
151
|
+
lib_dir = Pathname.new(__dir__).parent.to_s
|
152
|
+
loader.ignore "#{lib_dir}/ruby-jss.rb"
|
153
|
+
loader.ignore "#{lib_dir}/jss.rb"
|
154
|
+
loader.ignore "#{lib_dir}/jss-api.rb"
|
155
|
+
|
156
|
+
##### Callbacks
|
157
|
+
|
158
|
+
# callback for when a specific file/constant loads
|
159
|
+
# duplicate and uncomment this if desired to react to
|
160
|
+
# specific things loading
|
161
|
+
#####################################
|
162
|
+
# loader.on_load('Jamf::SomeClass') do |klass, abspath|
|
163
|
+
# Jamf.load_msg "I just loaded #{klass} from #{abspath}"
|
164
|
+
# end
|
165
|
+
|
166
|
+
# callback for when anything loads
|
167
|
+
# - const_path is like "Jamf::SomeClass" or "Jamf::SomeClass::SOME_CONST_ARRY"
|
168
|
+
# - value is the value that constant contains after loading,
|
169
|
+
# e.g. the class Jamf::SomeClass for 'Jamf::SomeClass' or
|
170
|
+
# an Array for the constant "Jamf::SomeClass::SOME_CONST_ARRY"
|
171
|
+
# - abspath is the full path to the file where the constant was loaded from.
|
172
|
+
#####################################
|
173
|
+
loader.on_load do |const_path, value, abspath|
|
174
|
+
load_msg "Zeitwerk just loaded #{value.class} '#{const_path}' from:\n #{abspath}"
|
175
|
+
|
176
|
+
# Parse OAPI_PROPERTIES into getters and setters for subclasses of
|
177
|
+
# OAPIObject in the JPAPI.
|
178
|
+
#
|
179
|
+
# The class we just loaded must have this method and constant
|
180
|
+
# and the method must not have run already for the class or any superclass.
|
181
|
+
# This prevents running parse_oapi_properties again in subclasses that
|
182
|
+
# don't need to do that
|
183
|
+
if value.respond_to?(:oapi_properties_parsed?) && \
|
184
|
+
defined?(value::OAPI_PROPERTIES) && \
|
185
|
+
!value.oapi_properties_parsed?
|
186
|
+
|
187
|
+
parsed = value.parse_oapi_properties
|
188
|
+
load_msg "Parsed OAPI_PROPERTIES for #{value}" if parsed
|
189
|
+
end
|
190
|
+
|
191
|
+
# Generate the identifier list methods (.all_*) for subclasses of APIObject
|
192
|
+
# in the Classic API
|
193
|
+
if value.is_a?(Class) && value.superclass == Jamf::APIObject
|
194
|
+
|
195
|
+
done = value.define_identifier_list_methods
|
196
|
+
load_msg "Defined identifier list methods for #{value}" if done
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
loader.setup
|
201
|
+
end # setup_zeitwerk_loader
|
202
|
+
|
203
|
+
# For testing the Zeitwrk Loader.
|
204
|
+
# Normally we want autoloading on demand,
|
205
|
+
# eager loading loads everything so we can see it
|
206
|
+
#
|
207
|
+
# To make this happen touch the file defined in EAGER_LOAD_FILE
|
208
|
+
def self.eager_load_for_testing
|
209
|
+
return unless EAGER_LOAD_FILE.file?
|
210
|
+
|
211
|
+
loader.eager_load(force: true)
|
212
|
+
warn :loaded
|
213
|
+
# rescue Zeitwerk::NameError => e
|
214
|
+
# warn e.message
|
215
|
+
end
|
216
|
+
|
217
|
+
end # module JamfZeitwerkConfig
|
data/lib/jamf.rb
CHANGED
@@ -54,49 +54,20 @@ require 'jamf/exceptions'
|
|
54
54
|
require 'jamf/db_connection'
|
55
55
|
|
56
56
|
# Configure the Zeitwerk loader, See https://github.com/fxn/zeitwerk
|
57
|
-
require '
|
58
|
-
require 'zeitwerk_config'
|
59
|
-
|
60
|
-
# touch this file to make zeitwerk and mixins send text to stderr as things load
|
61
|
-
# or get mixed in
|
62
|
-
JAMF_VERBOSE_LOADING_FILE = Pathname.new('/tmp/ruby-jss-verbose-loading')
|
63
|
-
|
64
|
-
# Or, set this ENV var to also make zeitverk and mixins send text to stderr
|
65
|
-
JAMF_VERBOSE_LOADING_ENV = 'RUBY_JSS_VERBOSE_LOADING'.freeze
|
66
|
-
|
67
|
-
# touch this file to make zeitwek eager-load everything when the gem is required.
|
68
|
-
JAMF_ZEITWERK_EAGER_LOAD_FILE = Pathname.new('/tmp/ruby-jss-zeitwerk-eager-load')
|
57
|
+
require 'jamf/zeitwerk_config'
|
69
58
|
|
70
59
|
# the `Zeitwerk::Loader.for_gem` creates the loader object, and must
|
71
60
|
# happen in this file, so we pass it into a method defined in
|
72
61
|
# zeitwerk_config
|
73
|
-
setup_zeitwerk_loader Zeitwerk::Loader.for_gem
|
62
|
+
JamfZeitwerkConfig.setup_zeitwerk_loader Zeitwerk::Loader.for_gem
|
74
63
|
|
75
64
|
# Jamf, A Ruby module for interacting with the JAMF Pro Server via both of its REST APIs
|
76
65
|
module Jamf
|
77
66
|
|
78
|
-
|
79
|
-
return if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(MINIMUM_RUBY_VERSION)
|
80
|
-
|
81
|
-
raise "Can't use ruby-jss #{Jamf::VERSION}, ruby itself must be version #{MINIMUM_RUBY_VERSION} or greater, this is ruby #{RUBY_VERSION}."
|
82
|
-
end
|
83
|
-
|
84
|
-
# Only look at the filesystem once.
|
85
|
-
def self.verbose_loading?
|
86
|
-
return @verbose_loading unless @verbose_loading.nil?
|
87
|
-
|
88
|
-
@verbose_loading = JAMF_VERBOSE_LOADING_FILE.file?
|
89
|
-
@verbose_loading ||= ENV.include? JAMF_VERBOSE_LOADING_ENV
|
90
|
-
@verbose_loading
|
91
|
-
end
|
92
|
-
|
93
|
-
# rubocop: disable Style/StderrPuts
|
67
|
+
# Use the load_msg method defined for Zeitwerk
|
94
68
|
def self.load_msg(msg)
|
95
|
-
|
96
|
-
|
97
|
-
$stderr.puts msg
|
98
|
-
end
|
99
|
-
# rubocop: enable Style/StderrPuts
|
69
|
+
JamfZeitwerkConfig.load_msg msg
|
70
|
+
end
|
100
71
|
|
101
72
|
# the single instance of our configuration object
|
102
73
|
def self.config
|
@@ -113,11 +84,8 @@ module Jamf
|
|
113
84
|
|
114
85
|
end # module Jamf
|
115
86
|
|
116
|
-
# make sure we can run
|
117
|
-
Jamf.validate_ruby_version
|
118
|
-
|
119
87
|
# JSS module is now a synonym for Jamf module
|
120
88
|
JSS = Jamf
|
121
89
|
|
122
|
-
# testing zeitwerk loading
|
123
|
-
eager_load_for_testing
|
90
|
+
# testing zeitwerk loading, the the desired file is present
|
91
|
+
JamfZeitwerkConfig.eager_load_for_testing
|
@@ -47,6 +47,9 @@ Want to test with a different version of ruby? Change the #! line of the `runtes
|
|
47
47
|
|
48
48
|
- The individual tests are methods in classes defined in files in the 'tests' directory adjacent to this file.
|
49
49
|
- In general, each class test a matching ruby-jss class, usually an APIObject (classic) or JPAPIResource (jamf pro).
|
50
|
+
- Shared code is in modules defined in the 'jamf_test' directory. See those files for more info. E.g.
|
51
|
+
- 'collection_tests.rb' defines common tests for all collection-resources
|
52
|
+
- 'prestage_tests.rb' defines common tests for 'computer_prestage' and 'mobile_device_prestage'
|
50
53
|
|
51
54
|
**WARNING**: **DANGER DANGER** Be very careful about running these tests on your production Jamf Pro server!!!
|
52
55
|
|
data/test/bin/runtests
CHANGED
@@ -29,6 +29,40 @@ require 'pathname'
|
|
29
29
|
require 'getoptlong'
|
30
30
|
require 'ruby-jss'
|
31
31
|
|
32
|
+
# Debug Trace support, Ideas from
|
33
|
+
# https://gist.github.com/bendilley/1453a555e981ed533f68
|
34
|
+
# and the other gist and stack overflow mentioned there.
|
35
|
+
####################################
|
36
|
+
|
37
|
+
# Enable tracing to help debug stack level too deep errors
|
38
|
+
$do_tracing = false
|
39
|
+
|
40
|
+
# set this to true to save the call traces to a file
|
41
|
+
$save_trace = false
|
42
|
+
|
43
|
+
# the file to hold the traces
|
44
|
+
$trace_out = open('/tmp/ruby-jss-tests-trace.txt', 'w')
|
45
|
+
|
46
|
+
# the max call-stack depth - adjust this to help catch and
|
47
|
+
# debug SystemStackError exceptions
|
48
|
+
$trace_max_call_stack_depth = 1000
|
49
|
+
|
50
|
+
# the tracing proc
|
51
|
+
set_trace_func proc { |event, file, line, id, _binding, classname|
|
52
|
+
if $do_tracing
|
53
|
+
begin
|
54
|
+
if event == 'call'
|
55
|
+
$trace_out.puts "#{file}:#{line} #{classname}##{id}" if $save_trace
|
56
|
+
raise 'MaxCallStackReached' if caller_locations.length > $trace_max_call_stack_depth
|
57
|
+
end
|
58
|
+
rescue => e
|
59
|
+
warn "ERROR: #{e.class}: #{e}"
|
60
|
+
e.backtrace.each { |l| warn "..#{l}" }
|
61
|
+
exit 1
|
62
|
+
end
|
63
|
+
end # if
|
64
|
+
}
|
65
|
+
|
32
66
|
# app
|
33
67
|
class App
|
34
68
|
|
@@ -62,8 +96,8 @@ class App
|
|
62
96
|
@testsdir = @appdir + 'tests'
|
63
97
|
|
64
98
|
@tests_to_run = ARGV.dup
|
65
|
-
@tests_to_run = @testsdir.children.map { |c| c.basename.to_s }.sort if @tests_to_run
|
66
|
-
@tests_to_run.delete_if { |t| t.start_with? '.'}
|
99
|
+
@tests_to_run = @testsdir.children.map { |c| c.basename.to_s }.sort if @tests_to_run.empty?
|
100
|
+
@tests_to_run.delete_if { |t| t.start_with? '.' }
|
67
101
|
|
68
102
|
@minitest_opts = ['--verbose']
|
69
103
|
|
@@ -126,6 +160,7 @@ class App
|
|
126
160
|
|
127
161
|
###################################
|
128
162
|
def run_tests
|
163
|
+
puts
|
129
164
|
JamfTest.say "Starting tests of ruby-jss v#{Jamf::VERSION}, using ruby version #{RUBY_VERSION}"
|
130
165
|
JamfTest.say "API Connection: #{Jamf.cnx}; Server running Jamf Pro #{Jamf.cnx.jamf_version}"
|
131
166
|
|
@@ -158,6 +193,7 @@ class App
|
|
158
193
|
###################################
|
159
194
|
def show_help
|
160
195
|
return false unless @show_help
|
196
|
+
|
161
197
|
puts <<-USAGEBLURB
|
162
198
|
Usage: #{File.basename __FILE__} [options] [spec [spec ...]]
|
163
199
|
|
@@ -209,6 +245,10 @@ if $PROGRAM_NAME == __FILE__
|
|
209
245
|
app = App.new
|
210
246
|
app.run
|
211
247
|
exit 0
|
248
|
+
rescue SystemStackError
|
249
|
+
puts $!
|
250
|
+
puts caller[0..100]
|
251
|
+
exit 1
|
212
252
|
rescue => e
|
213
253
|
puts "ERROR #{e.class}: #{e}"
|
214
254
|
puts e.backtrace
|
@@ -176,11 +176,11 @@ module JamfTest
|
|
176
176
|
say "Ran #{collection_class}.all_ids"
|
177
177
|
validate_array ids, item_class: id_class
|
178
178
|
|
179
|
-
|
180
179
|
identifiers.each do |ident|
|
181
180
|
next if ident == :id
|
182
181
|
|
183
182
|
mth = ident.to_s.end_with?('s') ? "all_#{ident}es" : "all_#{ident}s"
|
183
|
+
say "Testing #{collection_class}.#{mth}"
|
184
184
|
collection_class.send mth
|
185
185
|
say "Ran #{collection_class}.#{mth}"
|
186
186
|
end
|
@@ -196,7 +196,6 @@ module JamfTest
|
|
196
196
|
cached_ids = collection_class.all_ids cached_list: @cached_all
|
197
197
|
say "Ran #{collection_class}.all_ids cached_list: @cached_all"
|
198
198
|
validate_array cached_ids, item_class: id_class
|
199
|
-
|
200
199
|
end
|
201
200
|
|
202
201
|
#################
|
@@ -223,7 +222,6 @@ module JamfTest
|
|
223
222
|
|
224
223
|
validate_hash ids_to_other
|
225
224
|
validate_array ids_to_other.keys, item_class: id_class
|
226
|
-
|
227
225
|
end
|
228
226
|
|
229
227
|
################
|
@@ -250,7 +248,6 @@ module JamfTest
|
|
250
248
|
|
251
249
|
validate_hash ids_to_other
|
252
250
|
validate_array ids_to_other.keys, item_class: id_class
|
253
|
-
|
254
251
|
end
|
255
252
|
|
256
253
|
################
|
@@ -265,7 +262,9 @@ module JamfTest
|
|
265
262
|
id, other = ids_to_other_ident.to_a.sample
|
266
263
|
|
267
264
|
valid_id = collection_class.valid_id other
|
268
|
-
|
265
|
+
unless id.to_s == valid_id.to_s
|
266
|
+
raise "#{collection_class} id #{id}, has #{other_ident} '#{other}', but calling .valid_id('#{other}') returned id: #{valid_id}"
|
267
|
+
end
|
269
268
|
|
270
269
|
say "#{collection_class}.valid_id for #{other_ident} '#{other}' returned the correct id"
|
271
270
|
end
|
@@ -284,13 +283,11 @@ module JamfTest
|
|
284
283
|
########### Object Tests
|
285
284
|
####################################
|
286
285
|
|
287
|
-
|
288
286
|
# override this if the class requires more than 'name' with .create
|
289
287
|
################
|
290
288
|
def create_new
|
291
289
|
@unsaved_new_object = collection_class.create name: test_object_name
|
292
290
|
say "Created new #{collection_class}, to be saved in Jamf."
|
293
|
-
|
294
291
|
end
|
295
292
|
|
296
293
|
# override this if your class can take more than 'name'
|