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"
示例#2
0
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"
示例#3
0
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"
示例#4
0
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")
示例#5
0
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'
示例#6
0
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"
示例#7
0
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
示例#8
0
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()
示例#10
0
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
示例#11
0
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"
示例#19
0
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)
示例#21
0
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")
示例#22
0
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()
示例#23
0
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)
示例#24
0
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
示例#25
0
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()
示例#26
0
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
示例#27
0
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)
示例#29
0
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
示例#30
0
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()