def get_protocol_status_on_storage(): # precondition precondition() # test data response = ['ftp', 'nfs', 'smb', 'tm_enable', 'allow_ip'] tolog('Expect: \r\n' + str(response) + '\r\n') result = server.webapi('get', 'protocol/storage/nasshare_0') if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = json.loads(result["text"])[0] tolog('Actual: \r\n' + str(check.keys()).replace('u', '') + '\r\n') if len(response) != len(check.keys()): result_assert.FailFlag = True tolog('Fail: please check out response parameters count\r\n') else: for key in check.keys(): if key not in response: result_assert.FailFlag = True tolog('Fail: ' + key + ' is not in response\r\n') result_assert.result_assert()
def reset_protocol_setting(): # test data id = ['FTP', 'NFS', 'SMB'] for i in range(len(id)): tolog('Expect: ' + id[i] + ' protocol should be reset\r\n') result = server.webapi('post', 'protocol/reset/' + id[i]) if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: tolog('Actual: ' + id[i] + ' protocol is reset\r\n') tolog('Expect: all protocol should be reset\r\n') result2 = server.webapi('post', 'protocol/reset') if isinstance(result2, str): result_assert.FailFlag = True tolog('Fail: ' + result2 + '\r\n') else: tolog('Actual: all protocol is reset\r\n') result_assert.result_assert()
def get_ftp(): # test data response = [ 'enable', 'encrypt_type', 'port', 'passive_start', 'passive_end', 'charset', 'dw_rate', 'up_rate' ] tolog('Expect: \r\n' + str(response) + '\r\n') result = server.webapi('get', 'protocol/ftp') if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = json.loads(result["text"])[0] tolog('Actual: \r\n' + str(check.keys()).replace('u', '') + '\r\n') if len(response) != len(check.keys()): result_assert.FailFlag = True tolog('Fail: please check out response parameters count\r\n') else: for key in check.keys(): if key not in response: result_assert.FailFlag = True tolog('Fail: ' + key + ' is not in response\r\n') result_assert.result_assert()
def get_protocol_running_status(): # test data response = ['name', 'status'] tolog('Expect: \r\n' + str(response) + '\r\n') result = server.webapi('get', 'protocol/status') if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = json.loads(result["text"])[0] tolog('Actual: \r\n' + str(check.keys()).replace('u', '') + '\r\n') if len(response) != len(check.keys()): result_assert.FailFlag = True tolog('Fail: please check out response parameters count\r\n') else: for key in check.keys(): if key not in response: result_assert.FailFlag = True tolog('Fail: ' + key + ' is not in response\r\n') result_assert.result_assert()
def invalid_parameters_for_set_ftp(): # test data settings = { 'enable': [2, ''], 'encrypt_type': [4, ''], 'cmd_port': [0, 65536, ''], 'passive_start': [1023, 65535, ''], 'passive_end': [1024, 65536, ''], 'charset': ['test', 0], 'dw_rate': [''], 'up_rate': [''] } for key in settings: for i in range(len(settings[key])): setting = {key: settings[key][i]} tolog('Expect: that should hint error when body is ' + json.dumps(setting) + '\r\n') result = server.webapi('post', 'protocol/ftp', setting) if isinstance(result, dict): result_assert.FailFlag = True tolog('Fail: when body is ' + json.dumps(setting) + '\r\n') else: tolog('Actual: ' + result + '\r\n') result_assert.result_assert()
def problem_body_add_group_step3(): # precondition: edit cancel server.webapi('post', 'dsgroup/editcancel') # step1 step1 = server.webapi('post', 'dsgroup/editbegin', { "page": 1, "page_size": 500 }) token = json.loads(step1["text"])[0]["token"] # step2 step2 = server.webapi('post', 'dsgroup/editbegin', { "token": token, "page_data": [[1, 1001]] }) tolog('Expect: missing body should return error\r\n') result1 = server.webapi('post', 'dsgroup/editsave') if isinstance(result1, dict): result_assert.FailFlag = True tolog('Fail: that return 200 when body is missing\r\n') server.webapi('post', 'dsgroup/editcancel') else: server.webapi('post', 'dsgroup/editcancel') tolog('Actual: ' + result1 + '\r\n') # step1 step1 = server.webapi('post', 'dsgroup/editbegin', { "page": 1, "page_size": 500 }) token = json.loads(step1["text"])[0]["token"] # step2 step2 = server.webapi('post', 'dsgroup/editbegin', { "token": token, "page_data": [[1, 1001]] }) tolog('Expect: body is empty that should return error\r\n') result2 = server.webapi('post', 'dsgroup/editsave', {}) if isinstance(result2, dict): result_assert.FailFlag = True tolog('Fail: that return 200 when body is empty\r\n') server.webapi('post', 'dsgroup/editcancel') else: server.webapi('post', 'dsgroup/editcancel') tolog('Actual: ' + result2 + '\r\n') result_assert.result_assert()
def add_group_and_users_by_must_parameters(): # precondition server.webapi('post', 'dsgroup/editcancel') tolog('Expect: add group "by_must_parameters" and add 10 user\r\n') step1 = server.webapi('post', 'dsgroup/editbegin', { "page": 1, "page_size": 20 }) if isinstance(step1, str): result_assert.FailFlag = True tolog("Fail: " + step1 + '\r\n') else: # test data token = json.loads(step1["text"])[0]["token"] get_page_data = json.loads(step1["text"])[0]["page_data"] page_data = [[1, uid["uid"]] for uid in get_page_data[1:]] step2 = server.webapi('post', 'dsgroup/editnext', { "token": token, "page_data": page_data, "page": 1, "page_size": 20 }) if isinstance(step2, str): result_assert.FailFlag = True tolog("Fail: " + step2 + '\r\n') else: step3 = server.webapi('post', 'dsgroup/editsave', { "id": 'by_must_parameters', "token": token, "page_data": page_data }) if isinstance(step3, str): result_assert.FailFlag = True tolog("Fail: " + step3 + '\r\n') else: check = server.webapi('get', 'dsgroup/by_must_parameters') checkResult = json.loads(check["text"])[0] tolog('Actual: ' + json.dumps(checkResult) + '\r\n') result_assert.result_assert()
def invalid_group_name(): # test data name = ['', 't' * 31, 1] for n in name: # precondition: cancel edit server.webapi('post', 'dsgroup/editcancel') tolog('Expect: that will hint error when group name is ' + str(n) + '\r\n') step1 = server.webapi('post', 'dsgroup/editbegin', { "page": 1, "page_size": 20 }) if isinstance(step1, str): result_assert.FailFlag = True tolog("Fail: " + step1 + '\r\n') else: # test data token = json.loads(step1["text"])[0]["token"] get_page_data = json.loads(step1["text"])[0]["page_data"] page_data = [[0, uid["uid"]] for uid in get_page_data] step2 = server.webapi('post', 'dsgroup/editnext', { "page": 1, "page_size": 20, "token": token, "page_data": page_data }) if isinstance(step2, str): result_assert.FailFlag = True tolog("Fail: " + step2 + '\r\n') else: step3 = server.webapi('post', 'dsgroup/editsave', { "id": n, "token": token, "page_data": page_data }) if isinstance(step3, dict): result_assert.FailFlag = True tolog("Fail: group name can be specified " + str(n) + '\r\n') else: tolog('Actual: ' + step3 + '\r\n') result_assert.result_assert()
def set_ftp(): # test data settings = { 'enable': [0, 1, 0, 1, 0], 'encrypt_type': [0, 1, 2, 3, 0], 'cmd_port': [1, 2, 65534, 65535, 1], 'passive_start': [1024, 1025, 65533, 65534, 1024], 'passive_end': [1025, 1026, 65534, 65535, 1025], 'charset': ['utf8', 'ja_jp', 'ko_kr', 'zh_cn', 'zh_tw'], 'dw_rate': [0, 512, 2048, 65535, 65536], 'up_rate': [65536, 65535, 1024, 126, 0] } for i in range(len(settings['charset'])): # test data setting = {} for key in settings: setting[key] = settings[key][i] tolog('Expect: that should return 200 when body is \r\n' + json.dumps(setting) + '\r\n') result = server.webapi('post', 'protocol/ftp', setting) if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = server.webapi('get', 'protocol/ftp') checkResult = json.loads(check['text'])[0] tolog('Actual: return 200, and gets ftp protocol info are \r\n' + json.dumps(checkResult) + '\r\n') for v in setting.values(): if v not in checkResult.values(): result_assert.FailFlag = True tolog('Fail: please check out the value ' + str(v) + '\r\n') result_assert.result_assert()
def set_protocol_settings_on_storage(): # test data settings = { 'ftp': [0, 1], 'nfs': [1, 0], 'smb': [1, 0], 'tm_enable': [1, 0], 'allow_ip': [[], []] } for i in range(len(settings['ftp'])): # test data setting = {} for key in settings: setting[key] = settings[key][i] tolog('Expect: that should return 200 when body is \r\n' + json.dumps(setting) + '\r\n') result = server.webapi('post', 'protocol/storage/nasshare_0', setting) if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = server.webapi('get', 'protocol/ftp') checkResult = json.loads(check['text'])[0] tolog('Actual: return 200, and gets ftp protocol info are \r\n' + json.dumps(checkResult) + '\r\n') for v in setting.values(): if v not in checkResult.values(): result_assert.FailFlag = True tolog('Fail: please check out the value ' + str(v) + '\r\n') result_assert.result_assert()
def invalid_path_parameters_for_get_protocol_status_on_storage(): # test data id = ['nasshare_100', 'snapshot_100', 'clone_100', 'test', 0] for i in range(len(id)): tolog('Expect: that should hint error when path parameter is ' + str(id[i]) + '\r\n') result = server.webapi('post', 'protocol/storage/' + str(id[i])) if isinstance(result, dict): result_assert.FailFlag = True tolog('Fail: when path parameter is ' + str(id[i]) + '\r\n') else: tolog('Actual: ' + result + '\r\n') result_assert.result_assert()
def invalid_path_parameters_for_reset_protocol_setting(): # test data id = ['test', 0] for i in range(len(id)): tolog('Expect: that should hint error when path parameter is ' + str(id[i]) + '\r\n') result = server.webapi('post', 'protocol/reset/' + str(id[i])) if isinstance(result, dict): result_assert.FailFlag = True tolog('Fail: when path parameter is ' + str(id[i]) + '\r\n') else: tolog('Actual: ' + result + '\r\n') result_assert.result_assert()
def set_smb(): # test data settings = { 'enable': [0, 1], 'desc': ['', 'this is the test'], 'workgroup': ['', 'test'], 'nt_acl': ['yes', 'no'] } for i in range(len(settings['enable'])): # test data setting = {} for key in settings: setting[key] = settings[key][i] tolog('Expect: that should return 200 when body is \r\n' + json.dumps(setting) + '\r\n') result = server.webapi('post', 'protocol/smb', setting) if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = server.webapi('get', 'protocol/smb') checkResult = json.loads(check['text'])[0] tolog('Actual: return 200, and gets ftp protocol info are \r\n' + json.dumps(checkResult) + '\r\n') for v in setting.values(): if v not in checkResult.values(): result_assert.FailFlag = True tolog('Fail: please check out the value ' + str(v) + '\r\n') result_assert.result_assert()
def search_ds_group(): tolog('Expect: get group that name contains t\r\n') result = server.webapi( 'get', "dsgroup?page=1&page_size=10&search=grp_name+like'%t%'") if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = json.loads(result["text"]) checkResult = ''.join(str(check)).replace('[{', '').replace( '}]', '').replace('{', '').replace('},', '\r\n') tolog('Actual: \r\n' + checkResult) result_assert.result_assert()
def get_ds_groups(): # test data response = ['id', 'gid', 'description'] tolog('Expect: list all of groups sort by desc gro_name ') result = server.webapi( 'get', 'dsgroup?page=1&page_size=500&sort=grp_name&direct=desc') if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = json.loads(result["text"]) checkResult = ''.join(str(check)).replace('[{', '').replace( '}]', '').replace('{', '').replace('},', '\r\n') tolog('Actual: \r\n' + checkResult) for group in check: if len(response) != len(group.keys()): result_assert.FailFlag = True tolog('Fail: please check out response parameters count\r\n') break for p in group.keys(): if p not in response: result_assert.FailFlag = True tolog('Fail: please check out response parameter: ' + p + '\r\n') result_assert.result_assert()
def set_nfs(): # test data settings = { 'enable': [0, 1, 0, 1], 'mountd_port': [1024, 1025, 65532, 65533] } for i in range(len(settings['mountd_port'])): # test data setting = {} for key in settings: setting[key] = settings[key][i] tolog('Expect: that should return 200 when body is \r\n' + json.dumps(setting) + '\r\n') result = server.webapi('post', 'protocol/nfs', setting) if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = server.webapi('get', 'protocol/nfs') checkResult = json.loads(check['text'])[0] tolog('Actual: return 200, and gets ftp protocol info are \r\n' + json.dumps(checkResult) + '\r\n') for v in setting.values(): if v not in checkResult.values(): result_assert.FailFlag = True tolog('Fail: please check out the value ' + str(v) + '\r\n') result_assert.result_assert()
def get_quota_by_default_path_parameter(): # precondition # precondition() # test data id = ['nasshare_0', 'clone_0'] response = ['status', 'qt_list'] for i in range(len(id)): tolog('Expect: \r\n' + str(response) + '\r\n') result = server.webapi('get', 'quota/' + id[i]) if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: check = json.loads(result["text"])[0] tolog('Actual: \r\n' + str(check.keys()).replace('u', '') + '\r\n') if len(response) != len(check.keys()): result_assert.FailFlag = True tolog('Fail: please check out response parameters count\r\n') else: for key in check: if key not in response: result_assert.FailFlag = True tolog('Fail: ' + key + ' is not in response\r\n') result_assert.result_assert()
def invalid_parameters_for_set_smb(): # test data settings = {'enable': [-1, 2, ''], 'nt_acl': [-1, 0, '']} for key in settings: for i in range(len(settings[key])): setting = {key: settings[key][i]} tolog('Expect: that should hint error when body is ' + json.dumps(setting) + '\r\n') result = server.webapi('post', 'protocol/smb', setting) if isinstance(result, dict): result_assert.FailFlag = True tolog('Fail: when body is ' + json.dumps(setting) + '\r\n') else: tolog('Actual: ' + result + '\r\n') result_assert.result_assert()
def enable_protocol(): # test data id = ['FTP', 'NFS', 'SMB'] for i in range(len(id)): # precondition: disable protocol server.webapi('post', 'protocol/disable/' + id[i]) tolog('Expect: ' + id[i] + ' protocol should be enabled when it is disabled\r\n') result = server.webapi('post', 'protocol/enable/' + id[i]) if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: tolog('Actual: ' + id[i] + ' protocol is enabled\r\n') for i in range(len(id)): tolog('Expect: ' + id[i] + ' protocol should be enabled when it is enabled\r\n') result = server.webapi('post', 'protocol/enable/' + id[i]) if isinstance(result, str): result_assert.FailFlag = True tolog('Fail: ' + result + '\r\n') else: tolog('Actual: ' + id[i] + ' protocol is enabled\r\n') result_assert.result_assert()
def add_group_and_verify_name_rules(): # precondition: create DSUser for i in range(10): server.webapi('post', 'dsuser', { "id": 'test_group_' + str(i), "password": '******' }) # test data name = ['a', '12', 'N' * 29, 't' * 30] for n in name: # precondition: cancel edit server.webapi('post', 'dsgroup/editcancel') tolog('Expect: add group ' + n + '\r\n') step1 = server.webapi('post', 'dsgroup/editbegin', { "page": 1, "page_size": 20 }) if isinstance(step1, str): result_assert.FailFlag = True tolog("Fail: " + step1 + '\r\n') else: # test data token = json.loads(step1["text"])[0]["token"] get_page_data = json.loads(step1["text"])[0]["page_data"] page_data = [[0, uid["uid"]] for uid in get_page_data] step2 = server.webapi('post', 'dsgroup/editnext', { "page": 1, "page_size": 20, "token": token, "page_data": page_data }) if isinstance(step2, str): result_assert.FailFlag = True tolog("Fail: " + step2 + '\r\n') else: step3 = server.webapi('post', 'dsgroup/editsave', { "id": n, "token": token, "page_data": page_data }) if isinstance(step3, str): result_assert.FailFlag = True tolog("Fail: " + step3 + '\r\n') else: check = server.webapi('get', 'dsgroup/' + n) checkResult = json.loads(check["text"])[0] tolog('Actual: ' + json.dumps(checkResult) + '\r\n') result_assert.result_assert()