def test_quota_infra(request, appliance, provider, setup_provider, admin_email, entities, custom_prov_data, prov_data, catalog_item, context, vm_name, template_name): """This test case verifies the quota assigned by automation method for user and group is working correctly for the infra providers. Steps: 1. Navigate to Automation > Automate > Explorer 2. Add quota automation methods to domain 3. Change 'quota_source_type' to 'user' or 'group' 4. Test quota by provisioning VMs over quota limit via UI or SSUI for user and group 5. Check whether quota is exceeded or not """ prov_data.update(custom_prov_data) with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_dynamic_dialogs_on_service_request( import_datastore, generic_catalog_item_with_imported_dialog): """ Bugzilla: 1706600 Polarion: assignee: nansari startsin: 5.10 casecomponent: Services initialEstimate: 1/6h testSteps: 1. Import DataStore and Dynamic Dialog 2. Add catalog item with above dialog 3. Navigate to order page of service 3. Order the service 4. Click refresh until Service finishes. (Services/Requests) 5. Double Click on your request 6. Page down and Under 'Dialog Options' Notice the 'Text Area' field expectedResults: 1. 2. 3. 4. 5. 6. Dialog Fields should populate in the System Request """ catalog_item = generic_catalog_item_with_imported_dialog[0] request = ServiceCatalogs(catalog_item.appliance, catalog=catalog_item.catalog, name=catalog_item.name).order() view = navigate_to(request, "Details") assert view.details.request_details.read( )["Text Box"] == "data text displays yada yada yada"
def test_datepicker_in_service_request( generic_catalog_item_with_imported_dialog): """ Bugzilla: 1744413 Polarion: assignee: nansari startsin: 5.11 casecomponent: Services initialEstimate: 1/6h testSteps: 1. Create Dialog with datepicker 2. Create a service and add the dialog 3. Order the service 4. Go to on service request details page expectedResults: 1. 2. 3. 4. datepicker date should be correct """ catalog_item, _, _ = generic_catalog_item_with_imported_dialog request = ServiceCatalogs(catalog_item.appliance, catalog=catalog_item.catalog, name=catalog_item.name).order() view = navigate_to(request, "Details") # Date should be correct on request details page assert view.details.request_details.read()["Datepicker"] == "06/18/2020"
def test_dynamic_dialog_field_to_static_field( appliance, import_datastore, generic_catalog_item_with_imported_dialog): """ Bugzilla: 1614436 Polarion: assignee: nansari casecomponent: Services testtype: functional initialEstimate: 1/4h startsin: 5.10 """ auto_log = '/var/www/miq/vmdb/log/automation.log' catalog_item, sd, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) navigate_to(sd, "Edit") # update dynamic field to static view = appliance.browser.create_view(EditElementView) view.element.edit_element(ele_label) view.element_information.dynamic_chkbox.fill(False) view.ele_save_button.click() view.save_button.click() # Text area field should not be loaded in automation log with LogValidator(auto_log, failure_patterns=["TEXT AREA REFRESH DIALOG" ]).waiting(timeout=120): navigate_to(service_catalogs, "Order")
def test_dialog_dynamic_timepicker_date_format( appliance, import_datastore, import_data, generic_catalog_item_with_imported_dialog): """ Bugzilla: 1685266 1728964 Polarion: assignee: nansari startsin: 5.11 casecomponent: Services initialEstimate: 1/6h testSteps: 1. Import Datastore and dialog 2. Create a service and add the dialog 3. Navigate to order page of service 4. In service Order page expectedResults: 1. 2. 3. 4. Timepicker date format and date should be correct """ catalog_item, _, _ = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) view = navigate_to(service_catalogs, "Order") # Format and date should be correct as per automation method assert view.fields("date_time_control_1").read() == '06/19/2020'
def test_quota_tagging_cloud_via_services(appliance, request, context, admin_email, set_entity_quota_tag, catalog_item): """Test Group and User Quota in UI and SSUI using tagging Polarion: assignee: ghubale casecomponent: Cloud initialEstimate: 1/6h tags: quota """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_dialog_not_required_default_value( appliance, generic_catalog_item_with_imported_dialog, file_name): """ Bugzilla: 1783375 Polarion: assignee: nansari casecomponent: Services initialEstimate: 1/16h startsin: 5.10 """ catalog_item, _, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) # download yaml file fs = FTPClientWrapper(cfme_data.ftpserver.entities.dialogs) file_path = fs.download(file_name) with open(file_path) as stream: dialog_data = yaml.load(stream, Loader=yaml.BaseLoader) default_drop = dialog_data[0]["dialog_tabs"][0]["dialog_groups"][0][ "dialog_fields"][0]["default_value"] view = navigate_to(service_catalogs, "Order") assert view.fields("dropdown_list_1").read() == default_drop
def test_order_catalog_item(appliance, provider, catalog_item, request, register_event): """Tests order catalog item Metadata: test_flag: provision Polarion: assignee: nansari casecomponent: Services initialEstimate: 1/4h tags: service """ vm_name = catalog_item.prov_data['catalog']["vm_name"] request.addfinalizer(lambda: appliance.collections.infra_vms.instantiate( f"{vm_name}0001", provider).cleanup_on_provider()) register_event(target_type='Service', target_name=catalog_item.name, event_type='service_provisioned') service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) service_catalogs.order() logger.info( f"Waiting for cfme provision request for service {catalog_item.name}") request_description = catalog_item.name provision_request = appliance.collections.requests.instantiate( request_description, partial_check=True) provision_request.wait_for_request() msg = f"Provisioning failed with the message {provision_request.rest.message}" assert provision_request.is_succeeded(), msg
def order_service(appliance, provider, provisioning, dialog, catalog, request): """ Orders service once the catalog item is created""" if hasattr(request, 'param'): param = request.param catalog_item = create_catalog_item( appliance, provider, provisioning, dialog, catalog, console_test=True if 'console_test' in param else None) else: catalog_item = create_catalog_item(appliance, provider, provisioning, dialog, catalog) service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) provision_request = service_catalogs.order() provision_request.wait_for_request(method='ui') assert provision_request.is_succeeded() if provision_request.exists(): provision_request.wait_for_request() if not BZ(1646333, forced_streams=['5.10']).blocks: provision_request.remove_request() yield catalog_item service = MyService(appliance, catalog_item.name) if service.exists: service.delete() vm_name = '{}0001'.format(catalog_item.prov_data['catalog']['vm_name']) vm = appliance.collections.infra_vms.instantiate(vm_name, provider) vm.cleanup_on_provider()
def test_order_catalog_bundle(appliance, provider, catalog_item, request): """Tests ordering a catalog bundle Metadata: test_flag: provision Polarion: assignee: nansari casecomponent: Services initialEstimate: 1/4h tags: service """ vm_name = catalog_item.prov_data['catalog']["vm_name"] request.addfinalizer(lambda: appliance.collections.infra_vms.instantiate( f"{vm_name}0001", provider).cleanup_on_provider()) bundle_name = fauxfactory.gen_alphanumeric(12, start="bundle_") catalog_bundle = appliance.collections.catalog_bundles.create( bundle_name, description="catalog_bundle", display_in=True, catalog=catalog_item.catalog, dialog=catalog_item.dialog, catalog_items=[catalog_item.name]) service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_bundle.name) service_catalogs.order() logger.info( f"Waiting for cfme provision request for service {bundle_name}") request_description = bundle_name provision_request = appliance.collections.requests.instantiate( request_description, partial_check=True) provision_request.wait_for_request() msg = f"Provisioning failed with the message {provision_request.rest.message}" assert provision_request.is_succeeded(), msg
def test_order_service_after_deleting_provider(appliance, provider, setup_provider, catalog_item): """ Polarion: assignee: nansari casecomponent: Services testtype: functional initialEstimate: 1/4h startsin: 5.8 tags: service """ template_name = catalog_item.prov_data["catalog"]["catalog_name"]["name"] template_id = appliance.rest_api.collections.templates.find_by( name=template_name)[0].id # delete provider provider.delete() provider.wait_for_delete() assert not provider.exists # order catalog item service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) provision_request = service_catalogs.order() provision_request.wait_for_request() # Verify state and msg view = navigate_to(provision_request, "Details") assert view.details.request_details.get_text_of( "Request State") == "Finished" last_msg = f"Error: Source Template/Vm with id [{template_id}] has no EMS, unable to provision" assert view.details.request_details.get_text_of("Last Message") == last_msg
def test_retire_ansible_service(appliance, catalog_item, request, job_type, ansible_api_version_change): """Tests retiring of catalog items for Ansible Template and Workflow jobs Metadata: test_flag: provision Polarion: assignee: jhenner casecomponent: Services caseimportance: medium initialEstimate: 1/4h """ service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) service_catalogs.order() logger.info('Waiting for cfme provision request for service %s', catalog_item.name) cells = {'Description': catalog_item.name} order_request = appliance.collections.requests.instantiate( cells=cells, partial_check=True) order_request.wait_for_request(method='ui') msg = f"Request failed with the message {order_request.row.last_message.text}" assert order_request.is_succeeded(method='ui'), msg myservice = MyService(appliance, catalog_item.name) myservice.retire()
def test_service_generic_catalog_bundle(appliance, catalog_item): """ Polarion: assignee: nansari casecomponent: Services caseimportance: medium initialEstimate: 1/8h tags: service """ bundle_name = fauxfactory.gen_alphanumeric(12, start="generic_") appliance.collections.catalog_bundles.create( bundle_name, description="catalog_bundle", display_in=True, catalog=catalog_item.catalog, dialog=catalog_item.dialog, catalog_items=[catalog_item.name]) service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, bundle_name) service_catalogs.order() logger.info('Waiting for cfme provision request for service %s', bundle_name) request_description = bundle_name provision_request = appliance.collections.requests.instantiate( request_description, partial_check=True) provision_request.wait_for_request() msg = f"Request failed with the message {provision_request.rest.message}" assert provision_request.is_succeeded(), msg
def test_automate_method_with_dialog(request, appliance, catalog, setup_dynamic_dialog): """ Polarion: assignee: dgaikwad initialEstimate: 1/15h caseimportance: medium caseposneg: positive testtype: functional startsin: 5.7 casecomponent: Automate tags: automate """ catalog_item = appliance.collections.catalog_items.create( appliance.collections.catalog_items.GENERIC, name=fauxfactory.gen_alphanumeric(), description="my catalog", display_in=True, catalog=catalog, dialog=setup_dynamic_dialog.label) request.addfinalizer(catalog_item.delete_if_exists) with LogValidator("/var/www/miq/vmdb/log/automation.log", matched_patterns=[".*Hello World.*" ]).waiting(timeout=120): service_catalogs = ServiceCatalogs(appliance, catalog=catalog_item.catalog, name=catalog_item.name) provision_request = service_catalogs.order() provision_request.wait_for_request() request.addfinalizer(provision_request.remove_request)
def test_dialog_default_value_integer( appliance, generic_catalog_item_with_imported_dialog, file_name): """ Bugzilla: 1554780 Polarion: assignee: nansari casecomponent: Services initialEstimate: 1/4h testtype: functional startsin: 5.10 """ catalog_item, _, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) # download yaml file fs = FTPClientWrapper(cfme_data.ftpserver.entities.dialogs) file_path = fs.download(file_name) with open(file_path, "r") as stream: dialog_data = yaml.load(stream, Loader=yaml.BaseLoader) default_drop = dialog_data[0]["dialog_tabs"][0]["dialog_groups"][0][ "dialog_fields"][0]["default_value"] default_radio = dialog_data[0]["dialog_tabs"][0]["dialog_groups"][0][ "dialog_fields"][1]["default_value"] view = navigate_to(service_catalogs, "Order") assert (view.fields("dropdown").read() == default_drop and view.fields("radio").read() == default_radio)
def service_vm(appliance, provider, catalog_item): """ This is global fixture to get service and vm/instance provision by service.""" collection = provider.appliance.provider_based_collection(provider) vm_name = "{}0001".format(catalog_item.prov_data["catalog"]["vm_name"]) vm = collection.instantiate("{}".format(vm_name), provider) service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) provision_request = service_catalogs.order() logger.info("Waiting for service provision request for service %s", catalog_item.name) provision_request.wait_for_request() if not provision_request.is_finished(): pytest.skip("Failed to provision service '{}'".format( catalog_item.name)) service = MyService(appliance, catalog_item.name, vm_name=vm_name) yield service, vm vm.cleanup_on_provider() if service.exists: service.delete() if provision_request.exists: provision_request.remove_request(method="rest")
def test_pxe_servicecatalog(appliance, setup_provider, provider, catalog_item, request): """Tests RHEV PXE service catalog Metadata: test_flag: pxe, provision Polarion: assignee: nansari initialEstimate: 1/4h """ vm_name = catalog_item.prov_data['catalog']["vm_name"] request.addfinalizer( lambda: appliance.collections.infra_vms.instantiate( "{}0001".format(vm_name), provider).cleanup_on_provider() ) service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) service_catalogs.order() # nav to requests page happens on successful provision logger.info('Waiting for cfme provision request for service %s', catalog_item.name) request_description = catalog_item.name provision_request = appliance.collections.requests.instantiate(request_description, partial_check=True) provision_request.wait_for_request(num_sec=3600) msg = "Provisioning failed with the message {}".format(provision_request.rest.message) assert provision_request.is_succeeded(), msg
def test_quota_tagging_infra_via_services(request, appliance, admin_email, context, set_entity_quota_tag, custom_prov_data, prov_data, catalog_item): """This test case verifies the quota tagging is working correctly for the infra providers. Polarion: assignee: ghubale casecomponent: Quota caseimportance: medium initialEstimate: 1/6h tags: quota """ prov_data.update(custom_prov_data) with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_quota_cloud_via_services(appliance, request, admin_email, entities, prov_data, catalog_item, context): """This test case verifies the quota assigned by automation method for user and group is working correctly for the cloud providers. Polarion: assignee: ghubale initialEstimate: 1/4h casecomponent: Cloud tags: quota testSteps: 1. Navigate to Automation > Automate > Explorer 2. Add quota automation methods to domain 3. Change 'quota_source_type' to 'user' or 'group' 4. Test quota by provisioning instances over quota limit via UI or SSUI for user and group 5. Check whether quota is exceeded or not """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = ( "Provisioning Service [{catalog_item_name}] from [{catalog_item_name}]" .format(catalog_item_name=catalog_item.name)) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def myservice(appliance, setup_provider, provider, catalog_item, request): """Tests my service Metadata: test_flag: provision """ vm_name = version.pick({ version.LOWEST: catalog_item.provisioning_data["catalog"]["vm_name"] + '_0001', '5.7': catalog_item.provisioning_data["catalog"]["vm_name"] + '0001' }) catalog_item.create() service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) service_catalogs.order() logger.info('Waiting for cfme provision request for service %s', catalog_item.name) request_description = catalog_item.name service_request = appliance.collections.requests.instantiate( request_description, partial_check=True) service_request.wait_for_request() assert service_request.is_succeeded() yield catalog_item.name, vm_name cleanup_vm(vm_name, provider)
def test_dynamic_dropdown_refresh_load( appliance, import_datastore, import_data, generic_catalog_item_with_imported_dialog, context): """ Bugzilla: 1576873 Polarion: assignee: nansari startsin: 5.10 casecomponent: Services initialEstimate: 1/16h """ catalog_item, _, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) with appliance.context.use(context): if context == ViaSSUI: view = ssui_nav(service_catalogs, "Details") else: view = navigate_to(service_catalogs, "Order") with LogValidator("/var/www/miq/vmdb/log/automation.log", matched_patterns=['We are in B'], failure_patterns=["We are in A" ]).waiting(timeout=120): view.fields(ele_label).dropdown.fill("b")
def test_tenant_quota_enforce_via_service_infra(request, appliance, provider, setup_provider, context, set_roottenant_quota, extra_msg, custom_prov_data, catalog_item): """Tests quota enforcement via service infra Metadata: test_flag: quota Polarion: assignee: ghubale casecomponent: infra initialEstimate: 1/8h """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') assert provision_request.row.reason.text == "Quota Exceeded" @request.addfinalizer def delete(): provision_request.remove_request() catalog_item.delete()
def test_dynamic_dropdown_auto_refresh_load( appliance, import_datastore, import_data, generic_catalog_item_with_imported_dialog, context): """ Bugzilla: 1568342 Polarion: assignee: nansari startsin: 5.11 casecomponent: Services initialEstimate: 1/16h """ catalog_item, _, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) with appliance.context.use(context): if context == ViaSSUI: view = ssui_nav(service_catalogs, "Details") else: view = navigate_to(service_catalogs, "Order") view.fields(ele_label).dropdown.fill("Contract B") wait_for(lambda: view.fields("location").dropdown.read() == 'Florida', timeout=7) view.fields(ele_label).dropdown.fill("Contract A") wait_for(lambda: view.fields("location").dropdown.read() == 'Alaska', timeout=7)
def test_order_catalog_item(appliance, provider, setup_provider, catalog_item, request, register_event): """Tests order catalog item Metadata: test_flag: provision """ vm_name = catalog_item.provisioning_data['catalog']["vm_name"] request.addfinalizer(lambda: cleanup_vm(vm_name + "_0001", provider)) catalog_item.create() register_event(target_type='Service', target_name=catalog_item.name, event_type='service_provisioned') service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) service_catalogs.order() logger.info("Waiting for cfme provision request for service {}".format( catalog_item.name)) request_description = catalog_item.name provision_request = appliance.collections.requests.instantiate( request_description, partial_check=True) provision_request.wait_for_request() msg = "Provisioning failed with the message {}".format( provision_request.rest.message) assert provision_request.is_succeeded(), msg
def test_service_dd_dialog_load_values_on_init( appliance, import_datastore, import_data, file_name, generic_catalog_item_with_imported_dialog): """ Bugzilla: 1684567 Polarion: assignee: nansari startsin: 5.11 casecomponent: Services initialEstimate: 1/6h testSteps: 1. Import the attached yaml dialog export and automate domains. 2. Add the dialog to a service or custom button. 3. Navigate to order page of service 4. In service Order page expectedResults: 1. 2. 3. 4. The dialog elements should not be populated as the method should not have run as "load_values_on_init: false" is set in the element definition. """ catalog_item, sd, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) view = navigate_to(service_catalogs, "Order") # Dynamic textbox field should be empty assert not view.fields("text_box").read()
def test_order_catalog_bundle(appliance, provider, setup_provider, catalog_item, request): """Tests ordering a catalog bundle Metadata: test_flag: provision """ vm_name = catalog_item.provisioning_data['catalog']["vm_name"] request.addfinalizer(lambda: cleanup_vm(vm_name + "_0001", provider)) catalog_item.create() bundle_name = fauxfactory.gen_alphanumeric() catalog_bundle = CatalogBundle(name=bundle_name, description="catalog_bundle", display_in=True, catalog=catalog_item.catalog, dialog=catalog_item.dialog, catalog_items=[catalog_item.name]) catalog_bundle.create() service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_bundle.name) service_catalogs.order() logger.info("Waiting for cfme provision request for service {}".format( bundle_name)) request_description = bundle_name provision_request = appliance.collections.requests.instantiate( request_description, partial_check=True) provision_request.wait_for_request() msg = "Provisioning failed with the message {}".format( provision_request.rest.message) assert provision_request.is_succeeded(), msg
def test_service_dialog_expression_method( appliance, setup_provider, create_vm, import_datastore, import_data, file_name, generic_catalog_item_with_imported_dialog): """ Bugzilla: 1558926 Polarion: assignee: nansari startsin: 5.10 casecomponent: Services initialEstimate: 1/6h testSteps: 1. Import datastore and import dialog 2. Add catalog item with above dialog 3. Navigate to order page of service 4. In service order page 5. Add values in expression field expectedResults: 1. 2. 3. 4. 5. Expression method should work """ catalog_item, sd, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog=catalog_item.catalog, name=catalog_item.name) view = navigate_to(service_catalogs, "Order") assert create_vm.name in [ opt.text for opt in view.fields("dropdown_list_1").dropdown.all_options ]
def test_dialog_dropdown_int_required( appliance, generic_catalog_item_with_imported_dialog): """ Bugzilla: 1740899 Polarion: assignee: nansari casecomponent: Services initialEstimate: 1/16h startsin: 5.10 testSteps: 1. Create a dialog dropdown that is required with a value type of integer 2. Order a catalog item that uses that dialog 3. Make a selection for the dropdown expectedResults: 1. 2. 3. The field should validate successfully """ catalog_item, _, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) view = navigate_to(service_catalogs, "Order") view.fields(ele_label).dropdown.fill("2") wait_for(lambda: not view.submit_button.disabled, timeout=7)
def test_multi_dropdown_dialog_value( appliance, generic_catalog_item_with_imported_dialog): """ Bugzilla: 1740823 Polarion: assignee: nansari casecomponent: Services initialEstimate: 1/16h startsin: 5.10 testSteps: 1. Create a multi select dropdown with values "One, Two, Three" 2. Add catalog item 3. Go to service order page 4. Check the values in dropdown 5. Check the "<None>" in multi drop down list expectedResults: 1. 2. 3. 4. "One, Two, Three" should be present in list 5. "<None>" should not be displayed in the list """ catalog_item, sd, ele_label = generic_catalog_item_with_imported_dialog service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) view = navigate_to(service_catalogs, "Order") options_list = [ option.text for option in view.fields(ele_label).multi_drop.all_options ] assert all([opt in options_list for opt in ["One", "Two", "Three"]]) assert "<None>" not in options_list
def order_service(appliance, provider, provisioning, dialog, catalog, request): # BZ 1646333 - Delete this request button is not shown in service Request details page # The above BZ got closed because of INSUFFICIENT_DATA, so I havve reported the same issue # in BZ 775779. """ Orders service once the catalog item is created""" if hasattr(request, 'param'): vm_count = request.param['vm_count'] if 'vm_count' in request.param else '1' console_test = request.param['console_test'] if 'console_test' in request.param else False catalog_item = create_catalog_item(appliance, provider, provisioning, dialog, catalog, vm_count=vm_count, console_test=console_test) else: catalog_item = create_catalog_item(appliance, provider, provisioning, dialog, catalog) service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) provision_request = service_catalogs.order() provision_request.wait_for_request(method='ui') assert provision_request.is_succeeded() if provision_request.exists(): provision_request.wait_for_request() # Provision request is being removed through REST API because of BZ 775779. provision_request.remove_request(method='rest') yield catalog_item service = MyService(appliance, catalog_item.name) if service.exists: service.delete() name = catalog_item.prov_data['catalog']['vm_name'] for i in range(int(vm_count)): vm_name = f'{name}000{i+1}' vm = appliance.collections.infra_vms.instantiate(vm_name, provider) vm.cleanup_on_provider()