コード例 #1
0
ファイル: network.py プロジェクト: freenas/freenas
def test_01_get_default_routes():
    results = GET("/network/general/summary/")
    assert results.status_code == 200
    assert isinstance(results.json(), dict), results.text
    assert isinstance(results.json()['default_routes'], list), results.text
    global gateway
    gateway = results.json()['default_routes'][0]
コード例 #2
0
ファイル: jail.py プロジェクト: freenas/freenas
def test_16_verify_jail_stopped():
    global freeze
    global freeze_msg

    if freeze is True:
        pytest.skip(freeze_msg)

    freeze = False
    stop_time = time.time() + 600

    while True:
        get_job = GET(f'/core/get_jobs/?id={JOB_ID}')
        job_status = get_job.json()[0]

        if job_status['state'] in ('RUNNING', 'WAITING'):
            if stop_time <= time.time():
                freeze = True
                freeze_msg = f"Failed to stop jail: {JAIL_NAME}"
                assert False, get_job.text

                break
            time.sleep(3)
        else:
            results = GET('/jail/')
            assert results.status_code == 200, results.text
            assert len(results.json()) > 0, get_job.text
            assert results.json()[0]['state'].lower() == 'down', results.text

            break
コード例 #3
0
ファイル: lldp.py プロジェクト: razzfazz/freenas
def test_03_Checking_that_API_reports_LLDP_configuration_as_saved():
    results = GET("/lldp")
    assert results.status_code == 200, results.text
    data = results.json()
    assert data["country"] == COUNTRY
    assert data["intdesc"] == INTDESC
    assert data["location"] == LOCATION
コード例 #4
0
ファイル: ups.py プロジェクト: freenas/freenas
def test_01_get_ups_service_id():
    global ups_id
    results = GET('/service/?service=ups')
    assert results.status_code == 200, results.text
    assert results.json()[0]['state'] == 'STOPPED', results.text
    assert results.json()[0]['enable'] is False, results.text
    ups_id = results.json()[0]['id']
コード例 #5
0
ファイル: ntpservers.py プロジェクト: razzfazz/freenas
def test_02_Check_ntpserver_configured_using_api(ntp_dict):
    results = GET('/system/ntpserver/?id=1')
    assert results.status_code == 200, results.text
    data = results.json()
    assert isinstance(data, list), data
    assert len(data) == 1, data
    assert data[0]['address'] == ntpServer, data
コード例 #6
0
ファイル: jail.py プロジェクト: freenas/freenas
def test_14_verify_exec_call():
    global freeze
    global freeze_msg

    if freeze is True:
        pytest.skip(freeze_msg)

    freeze = False
    stop_time = time.time() + 600

    while True:
        get_job = GET(f'/core/get_jobs/?id={JOB_ID}')
        job_status = get_job.json()[0]

        if job_status['state'] in ('RUNNING', 'WAITING'):
            if stop_time <= time.time():
                freeze = True
                freeze_msg = f"Failed to exec into jail: {JAIL_NAME}"
                assert False, get_job.text

                break
            time.sleep(3)
        else:
            results = job_status['result']
            assert get_job.status_code == 200, results.text
            assert 'exec successful' in results, results.text

            break
コード例 #7
0
ファイル: system_advanced.py プロジェクト: razzfazz/freenas
def test_02_system_advanced_serial_port_choices(sysadv_dict):
    results = GET('/system/advanced/serial_port_choices/')
    assert results.status_code == 200, results.text
    data = results.json()
    sysadv_dict['serial_choices'] = data
    assert isinstance(data, list), data
    assert len(data) > 0, data
コード例 #8
0
ファイル: ipmi.py プロジェクト: razzfazz/freenas
def test_04_ipmi_is_loaded():
    global IPMI_LOADED
    result = GET(
        '/ipmi/is_loaded'
    )

    IPMI_LOADED = result.json()
    assert isinstance(result.json(), bool), result.text
コード例 #9
0
ファイル: staticroute.py プロジェクト: freenas/freenas
def test_02_check_staticroute_configured_using_api(sr_dict):
    results = GET(f'/staticroute/?id={sr_dict["newroute"]["id"]}')
    assert results.status_code == 200, results.text
    data = results.json()
    assert isinstance(data, list), data
    assert len(data) == 1, data
    assert data[0]['destination'] == DESTINATION, data
    assert data[0]['gateway'] == GATEWAY, data
コード例 #10
0
ファイル: vm.py プロジェクト: freenas/freenas
def test_03_get_vm_query(data):
    if nested_vm is False:
        pytest.skip(message)
    else:
        results = GET(f'/vm/?id={data["vmid"]}')
        assert results.status_code == 200, results.text
        assert isinstance(results.json(), list) is True, results.text
        global vmware_query
        vmware_query = results
コード例 #11
0
ファイル: update.py プロジェクト: freenas/freenas
def test_05_get_download_update():
    if update_version is None:
        pytest.skip('No update found')
    else:
        results = GET('/update/download/')
        global JOB_ID
        assert results.status_code == 200, results.text
        assert isinstance(results.json(), int) is True, results.text
        JOB_ID = results.json()
コード例 #12
0
ファイル: snmp.py プロジェクト: razzfazz/freenas
def test_07_Validate_that_SNMP_settings_are_preserved():
    results = GET('/snmp')
    assert results.status_code == 200, results.text
    data = results.json()
    assert data['community'] == COMMUNITY
    assert data['traps'] == TRAPS
    assert data['contact'] == CONTACT
    assert data['location'] == LOCATION
    assert data['v3_password'] == PASSWORD
コード例 #13
0
ファイル: interfaces.py プロジェクト: freenas/freenas
def test_03_get_interface_aliases_broadcast_ip():
    results = GET(f'/interface?name={interface}')
    assert results.status_code == 200, results.text
    assert isinstance(results.json(), list) is True, results.text
    for aliases_list in results.json()[0]['state']['aliases']:
        if ip in aliases_list['address']:
            broadcast_ip = aliases_list['broadcast']
            break
    assert isinstance(broadcast_ip, str) is True, results.text
    aliases['broadcast'] = broadcast_ip
コード例 #14
0
ファイル: interfaces.py プロジェクト: freenas/freenas
def test_05_get_interface_aliases_netmask():
    results = GET(f'/interface?name={interface}')
    assert results.status_code == 200, results.text
    assert isinstance(results.json(), list) is True, results.text
    for aliases_list in results.json()[0]['state']['aliases']:
        if ip in aliases_list['address']:
            netmask = aliases_list['netmask']
            break
    assert isinstance(netmask, int) is True, results.text
    aliases['netmask'] = netmask
コード例 #15
0
ファイル: interfaces.py プロジェクト: freenas/freenas
def test_02_get_interface_aliases_ip():
    results = GET(f'/interface?name={interface}')
    assert results.status_code == 200, results.text
    assert isinstance(results.json(), list) is True, results.text
    for aliases_list in results.json()[0]['state']['aliases']:
        assert isinstance(aliases_list['address'], str) is True, results.text
        # no break to look all address value are string
        if ip in aliases_list['address']:
            interface_ip = aliases_list['address']
    assert interface_ip == ip, results.text
コード例 #16
0
ファイル: interfaces.py プロジェクト: freenas/freenas
def test_04_get_interface_aliases_type():
    results = GET(f'/interface?name={interface}')
    assert results.status_code == 200, results.text
    assert isinstance(results.json(), list) is True, results.text
    for aliases_list in results.json()[0]['state']['aliases']:
        assert isinstance(aliases_list['type'], str) is True, results.text
        # no break to look all address value are string
        if ip in aliases_list['address']:
            types = aliases_list['type']
    assert types in ('INET', 'INET6'), results.text
    aliases['type'] = types
コード例 #17
0
ファイル: dyndns.py プロジェクト: freenas/freenas
def test_03_Check_that_API_reports_dynsdns_configuration_as_saved():
    results = GET('/dyndns/')
    assert results.status_code == 200, results.text
    data = results.json()
    if test == 'NOIP':
        assert data['username'] == NOIPPASSWORD
        assert data['provider'] == '*****@*****.**'
        assert data['domain'] == NOIPHOST
    else:
        assert data['username'] == 'foo'
        assert data['provider'] == 'ixsystems.com'
        assert data['domain'] == ['foobar']
コード例 #18
0
ファイル: smarttest.py プロジェクト: freenas/freenas
def test_01_Create_a_new_SMARTTest():
    disk_identifiers = GET("/storage/disk").json()["disk_identifier"]
    global disk_ident
    disk_indent = disk_identifiers.split()[0]
    payload = {"smarttest_disks": disk_indent,
               "smarttest_type": "L",
               "smarttest_hour": "*",
               "smarttest_daymonth": "*",
               "smarttest_month": "*",
               "smarttest_dayweek": "*"}
    results = POST("/tasks/smarttest/", payload)
    assert results.status_code == 201, results.text
コード例 #19
0
ファイル: s3.py プロジェクト: razzfazz/freenas
def test_01_update_s3_service():
    volumes = GET("/storage/volume/", api="1")
    if volumes:
        result = PUT('/s3/', {
            'bindip': '0.0.0.0',
            'bindport': 9000,
            'access_key': ACCESS_KEY,
            'secret_key': SECRET_KEY,
            'browser': True,
            'storage_path': volumes.json()[0]['mountpoint']
        })

        assert result.status_code == 200, result.text
コード例 #20
0
ファイル: boot.py プロジェクト: freenas/freenas
def test_04_verify_boot_scrub_job():
    stop_time = time() + 600
    while True:
        get_job = GET(f'/core/get_jobs/?id={JOB_ID}')
        job_status = get_job.json()[0]
        if job_status['state'] in ('RUNNING', 'WAITING'):
            if stop_time <= time():
                assert False, "Job Timeout\n\n" + get_job.text
                break
            sleep(5)
        else:
            assert job_status['state'] == 'SUCCESS', get_job.text
            break
コード例 #21
0
ファイル: update.py プロジェクト: freenas/freenas
def test_09_verify_the_update_is_successful():
    if update_version is None:
        pytest.skip('No update found')
    elif download_failed is True:
        pytest.skip(f'Downloading {selected_trains} failed')
    else:
        while True:
            get_job = GET(f'/core/get_jobs/?id={JOB_ID}')
            job_status = get_job.json()[0]
            if job_status['state'] in ('RUNNING', 'WAITING'):
                sleep(5)
            else:
                assert job_status['state'] == 'SUCCESS', get_job.text
                break
コード例 #22
0
ファイル: update.py プロジェクト: freenas/freenas
def test_14_verify_initial_version_is_not_current_FreeNAS_version():
    if update_version is None:
        pytest.skip('No update found')
    elif download_failed is True:
        pytest.skip(f'Downloading {selected_trains} failed')
    elif reboot is False:
        pytest.skip(f'Reboot is False skip')
    else:
        global results, current_version
        results = GET("/system/info/")
        assert results.status_code == 200, results.text
        assert isinstance(results.json(), dict) is True, results.text
        current_version = results.json()['version']
        assert initial_version != current_version, results.text
コード例 #23
0
ファイル: jail.py プロジェクト: freenas/freenas
def test_05_verify_bsd_release():
    global freeze
    freeze = False
    global freeze_msg
    stop_time = time.time() + 600
    while True:
        get_job = GET(f'/core/get_jobs/?id={JOB_ID}')
        job_status = get_job.json()[0]
        if job_status['state'] in ('RUNNING', 'WAITING'):
            if stop_time <= time.time():
                freeze = True
                freeze_msg = f"Failed to fetch {RELEASE}"
                assert False, get_job.text
                break
            time.sleep(5)
        else:
            results = POST('/jail/list_resource/', {'resource': 'RELEASE'})
            assert RELEASE in results.json(), get_job.text
            break
コード例 #24
0
ファイル: smart.py プロジェクト: razzfazz/freenas
def test_01_create_a_new_smarttest(smart_dict):
    disks = GET('/disk/')
    assert disks.status_code == 200, disks.text
    disks = disks.json()
    assert isinstance(disks, list), disks
    assert len(disks) > 0, disks

    idents = smart_dict['idents'] = [d['identifier'] for d in disks]

    results = POST('/smart/test/', {
        'disks': idents,
        'type': 'LONG',
        'schedule': {
            'hour': '*',
            'dom': '*',
            'month': '*',
            'dow': '*',
        },
    })
    assert results.status_code == 200, results.text
    smart_dict['smarttest'] = results.json()
コード例 #25
0
ファイル: lldp.py プロジェクト: razzfazz/freenas
def test_03_Checking_that_API_reports_LLDP_configuration_as_saved():
    results = GET("/services/lldp/")
    assert results.json()["lldp_country"] == COUNTRY
    results = GET("/services/lldp/")
    assert results.json()["lldp_intdesc"] == INTDESC
    results = GET("/services/lldp/")
    assert results.json()["lldp_location"] == LOCATION
コード例 #26
0
ファイル: update.py プロジェクト: freenas/freenas
def test_06_verify_the_update_download_is_successful():
    if update_version is None:
        pytest.skip('No update found')
    else:
        global download_failed
        stop_time = time() + 600
        download_failed = False
        while True:
            get_job = GET(f'/core/get_jobs/?id={JOB_ID}')
            job_status = get_job.json()[0]
            if job_status['state'] in ('RUNNING', 'WAITING'):
                if stop_time <= time():
                    download_failed = True
                    assert job_status['state'] == 'SUCCESS', get_job.text
                    break
                sleep(5)
            elif job_status['state'] != 'SUCCESS':
                download_failed = True
                assert job_status['state'] == 'SUCCESS', get_job.text
                break
            else:
                assert job_status['state'] == 'SUCCESS', get_job.text
                break
コード例 #27
0
ファイル: jail.py プロジェクト: freenas/freenas
def test_07_verify_creation_of_jail():
    global freeze
    global freeze_msg
    if freeze is True:
        pytest.skip(freeze_msg)

    freeze = False
    stop_time = time.time() + 600
    while True:
        get_job = GET(f'/core/get_jobs/?id={JOB_ID}')
        job_status = get_job.json()[0]
        if job_status['state'] in ('RUNNING', 'WAITING'):
            if stop_time <= time.time():
                freeze = True
                freeze_msg = f"Failed to create jail {RELEASE}"
                assert False, get_job.text
                break
            time.sleep(3)
        else:
            results = GET('/jail/')
            assert results.status_code == 200, results.text
            assert len(results.json()) > 0, get_job.text
            break
コード例 #28
0
def test_065_checking_to_see_if_nfs_service_is_running(request):
    depends(request, ["pool_04", "smb_001", "smb_003"], scope="session")
    results = GET("/service?service=cifs")
    assert results.json()[0]["state"] == "RUNNING", results.text
コード例 #29
0
def test_085_verify_that_recyclebin_is_true(request):
    depends(request, ["pool_04", "smb_001", "smb_003"], scope="session")
    results = GET(f"/sharing/smb/id/{smb_id}/")
    assert results.status_code == 200, results.text
    assert results.json()['recyclebin'] is True, results.text
コード例 #30
0
def test_01_get_initial_FreeNAS_version():
    results = GET("/system/info/")
    assert results.status_code == 200, results.text
    assert isinstance(results.json(), dict) is True, results.text
    global initial_version
    initial_version = results.json()['version']
コード例 #31
0
def test_111_checking_if_cifs_is_stop(request):
    depends(request, ["pool_04", "smb_001", "smb_003"], scope="session")
    results = GET("/service?service=cifs")
    assert results.json()[0]['state'] == "STOPPED", results.text
コード例 #32
0
ファイル: ldap_bsd.py プロジェクト: qimingnan/freenas
def test_07_Checking_to_see_if_SMB_service_is_enabled():
    results = GET("/services/services/cifs/")
    assert results.json()["srv_state"] == "RUNNING", results.text
コード例 #33
0
def test_45_delete_cifs_share():
    smbid = GET(f'/sharing/smb/?name={SMB_NAME}').json()[0]['id']
    results = DELETE(f"/sharing/smb/id/{smbid}")
    assert results.status_code == 200, results.text
コード例 #34
0
ファイル: ldap_bsd.py プロジェクト: qimingnan/freenas
def test_37_Verify_SMB_service_is_disabled():
    results = GET("/services/services/cifs/")
    assert results.json()["srv_state"] == "STOPPED", results.text
コード例 #35
0
def test_04_looking_number(disk):
    results = GET(f'/disk?name={disk}')
    assert results.status_code == 200, results.text
    assert isinstance(results.json()[0]['number'], int), results.text
コード例 #36
0
 def test_02_Check_getting_disks(self):
     assert GET("/storage/volume/") == 200
コード例 #37
0
 def test_01_Check_getting_disks(self):
     assert GET("/storage/disk/") == 200
コード例 #38
0
ファイル: cronjob.py プロジェクト: zhengfengran/freenas
def test_08_Check_that_the_API_reports_the_cronjob_as_deleted(cronjob_dict):
    id = cronjob_dict['id']
    results = GET(f'/cronjob?id={id}')
    assert results.json() == [], results.text
コード例 #39
0
ファイル: system_advanced.py プロジェクト: razzfazz/freenas
def test_04_system_advanced_check_serial_port_using_api(sysadv_dict):
    results = GET('/system/advanced/')
    assert results.status_code == 200, results.text
    data = results.json()
    assert isinstance(data, dict)
    assert data['serialport'] == sysadv_dict['serial_choices'][0]
コード例 #40
0
def test_49_checking_if_cifs_is_stop():
    results = GET("/service?service=cifs")
    assert results.json()[0]['state'] == "STOPPED", results.text
コード例 #41
0
def test_010_test_aux_param_on_update(request):
    depends(request, ["SHARES_CREATED", "ssh_password"], scope="session")
    results = GET('/sharing/smb',
                  payload={
                      'query-filters':
                      [['id', '=', SHARE_DICT["REGISTRYTEST_0"]]],
                      'query-options': {
                          'get': True
                      },
                  })
    assert results.status_code == 200, results.text
    old_aux = results.json()['auxsmbconf']
    results = PUT(f'/sharing/smb/id/{SHARE_DICT["REGISTRYTEST_0"]}/',
                  {"auxsmbconf": '\n'.join(SAMPLE_AUX)})
    assert results.status_code == 200, results.text
    new_aux = results.json()['auxsmbconf']
    new_name = results.json()['name']
    ncomments_sent = 0
    ncomments_recv = 0

    for entry in old_aux.splitlines():
        """
        Verify that aux params from last preset applied
        are still in effect. Parameters included in
        SAMPLE_AUX will never be in a preset so risk of
        collision is minimal.
        """
        aux, val = entry.split('=', 1)
        cmd = f'midclt call smb.getparm "{aux.strip()}" {new_name}'
        results = SSH_TEST(cmd, user, password, ip)
        assert results['result'] is True, f"[{entry}]: {results['output']}"
        out = results['output'].strip()
        inval = val.strip()
        assert inval == out, f"[{entry}]: {out}"

    for entry in new_aux.splitlines():
        """
        Verify that non-comment parameters were successfully
        applied to the running configuration.
        """
        if not entry:
            continue

        if entry.startswith(('#', ';')):
            ncomments_recv += 1
            continue

        aux, val = entry.split('=', 1)
        cmd = f'midclt call smb.getparm "{aux.strip()}" {new_name}'
        results = SSH_TEST(cmd, user, password, ip)
        assert results['result'] is True, f"[{entry}]: {results['output']}"
        out = results['output'].strip()
        inval = val.strip()
        if aux.strip() == "vfs objects":
            new_obj = inval.split()
            assert new_obj == json.loads(out), f"[{entry}]: {out}"
        else:
            assert inval == out, f"[{entry}]: {out}"
    """
    Verify comments aren't being stripped on update
    """
    for entry in SAMPLE_AUX:
        if entry.startswith(('#', ';')):
            ncomments_sent += 1

    assert ncomments_sent == ncomments_recv, new_aux
コード例 #42
0
ファイル: ldap_bsd.py プロジェクト: qimingnan/freenas
def test_04_Checking_LDAP():
    results = GET("/directoryservice/ldap/")
    assert results.json()["ldap_enable"] is True, results.text
コード例 #43
0
def test_06_get_for_disk1_id():
    global DISK_ID
    results = GET(f'/disk?name={disk_list[1]}')
    assert results.status_code == 200, results.text
    DISK_ID = results.json()[0]['identifier']
コード例 #44
0
def test_28_update_cifs_share():
    smbid = GET(f'/sharing/smb/?name={SMB_NAME}').json()[0]['id']
    results = PUT(f"/sharing/smb/id/{smbid}/", {"home": False})
    assert results.status_code == 200, results.text
コード例 #45
0
def test_109_checking_to_see_if_clif_service_is_enabled_at_boot(request):
    depends(request, ["pool_04", "smb_001", "smb_003"], scope="session")
    results = GET("/service?service=cifs")
    assert results.json()[0]["enable"] is False, results.text
コード例 #46
0
ファイル: ldap_bsd.py プロジェクト: qimingnan/freenas
def test_36_Verify_LDAP_is_disabled():
    results = GET("/directoryservice/ldap/")
    assert results.json()["ldap_enable"] is False, results.text
コード例 #47
0
def test_05_looking_disk0_identifier_and_serial_match(disk):
    results = GET(f'/disk?name={disk}')
    assert results.status_code == 200, results.text
    identifier_serial = results.json()[0]['identifier']
    serial = results.json()[0]['serial']
    assert serial in identifier_serial, results.text
コード例 #48
0
def test_01_get_certificate_query():
    results = GET('/certificate/')
    assert results.status_code == 200, results.text
    assert isinstance(results.json(), list), results.text
コード例 #49
0
ファイル: system_advanced.py プロジェクト: razzfazz/freenas
def test_01_system_advanced_get():
    results = GET('/system/advanced/')
    assert results.status_code == 200, results.text
    assert isinstance(results.json(), dict)
コード例 #50
0
def test_104_verify_smb_sharesec_change_for(request, ae):
    depends(request, ["pool_04", "smb_001", "smb_003"], scope="session")
    results = GET(f"/smb/sharesec/id/{share_id}/")
    assert results.status_code == 200, results.text
    ae_result = results.json()['share_acl'][0][ae]
    assert ae_result == payload['share_acl'][0][ae], results.text
コード例 #51
0
ファイル: cronjob.py プロジェクト: zhengfengran/freenas
def test_05_Checking_that_API_reports_the_cronjob_as_updated(cronjob_dict):
    id = cronjob_dict['id']
    results = GET(f'/cronjob?id={id}')
    assert results.json()[0]['enabled'] is False
コード例 #52
0
def test_01_verify_default_acltype_from_pool_dataset_with_api(request):
    depends(request, ["pool_04"], scope="session")
    results = GET(f'/pool/dataset/id/{pool_name}/')
    assert results.status_code == 200, results.text
    assert results.json()['acltype']['rawvalue'] == 'posix', results.text
コード例 #53
0
ファイル: cronjob.py プロジェクト: zhengfengran/freenas
def test_02_Checking_to_see_if_cronjob_was_created_and_enabled(cronjob_dict):
    id = cronjob_dict['id']
    results = GET(f'/cronjob?id={id}')
    assert results.json()[0]['enabled'] is True
コード例 #54
0
def test_01_verifying_that_the_installer_created_all_disk():
    results = GET('/disk/')
    assert results.status_code == 200, results.text
    assert len(results.json()) == len(disk_list)
コード例 #55
0
def test_10_get_new_next_uid(request):
    depends(request, ["user_02", "user_01"])
    results = GET('/user/get_next_uid/')
    assert results.status_code == 200, results.text
    global new_next_uid
    new_next_uid = results.json()
コード例 #56
0
def test_02_get_update_trains():
    results = GET('/update/get_trains/')
    assert results.status_code == 200, results.text
    assert isinstance(results.json(), dict) is True, results.text
    global selected_trains
    selected_trains = results.json()['selected']
コード例 #57
0
def test_05_checking_to_see_if_clif_service_is_enabled_at_boot():
    results = GET("/service?service=cifs")
    assert results.json()[0]["enable"] is True, results.text
コード例 #58
0
def test_02_looking_for_disk(disk):
    results = GET(f'/disk?name={disk}')
    assert results.status_code == 200, results.text
    assert results.json()[0]['name'] == disk
コード例 #59
0
ファイル: system_advanced.py プロジェクト: razzfazz/freenas
def test_09_system_advanced_check_motd_using_api():
    results = GET('/system/advanced/')
    assert results.status_code == 200, results.text
    data = results.json()
    assert isinstance(data, dict)
    assert data['motd'] == MOTD
コード例 #60
0
def test_07_checking_to_see_if_nfs_service_is_running():
    results = GET("/service?service=cifs")
    assert results.json()[0]["state"] == "RUNNING", results.text