const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isAndroid = platformInfo.startsWith('android')
const isIOS = platformInfo.startsWith('ios')
const isHarmony = platformInfo.startsWith('harmony')
const isWeb = platformInfo.startsWith('web')
const isMp = platformInfo.startsWith('mp')
const isAppWebView = process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true'
const PAGE_PATH = '/pages/API/request/request'
const methodMap = {
"GET": "/api/http/method/get",
"POST": "/api/http/method/post",
"PUT": "/api/http/method/put",
"DELETE": "/api/http/method/delete",
"PATCH": "/api/http/method/patch",
"OPTIONS": "/api/http/method/options",
"HEAD": "/api/http/method/head"
}
async function request(page, method, header, data, url) {
if (url == null) {
url = methodMap[method]
}
await page.setData({
url: url,
method: method,
data: data,
header: header
})
res = await page.callMethod('jest_request')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
}
describe('ExtApi-Request', () => {
let page;
let res;
beforeAll(async () => {
page = await program.reLaunch(PAGE_PATH)
await page.waitFor('view');
});
beforeEach(async () => {
await page.setData({
jest_result: false,
data: null,
header: null
})
});
it('Check GET', async () => {
await request(page, 'GET');
});
it('Check POST ContentType Json', async () => {
await request(page, 'POST', {
"Content-Type": "application/json"
}, {
"hello": "world"
}, "/api/http/contentType/json");
});
it('Check POST ContentType Form', async () => {
await request(page, 'POST', {
"Content-Type": "application/x-www-form-urlencoded"
}, "hello=world", "/api/http/contentType/xWwwFormUrlencoded");
});
it('Check PUT', async () => {
await request(page, 'PUT');
});
it('Check DELETE', async () => {
await request(page, 'DELETE');
});
if (!isHarmony) {
it('Check PATCH', async () => {
await request(page, 'PATCH');
});
}
if (process.env.uniTestPlatformInfo.indexOf('web') === -1) {
it('Check OPTIONS', async () => {
await request(page, 'OPTIONS');
});
}
it('Check HEAD', async () => {
await request(page, 'HEAD');
});
it('Request with timeout null', async () => {
res = await page.callMethod('jest_timeout_null')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
});
it('Get Array', async () => {
res = await page.callMethod('jest_get_array')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
})
let shouldTestCookie = false
if (isAndroid && !isAppWebView) {
let version = process.env.uniTestPlatformInfo
version = parseInt(version.split(" ")[1])
shouldTestCookie = version > 9
}
if (isIOS && !isAppWebView) {
shouldTestCookie = true
}
if (shouldTestCookie) {
it('Check Set Cookie', async () => {
res = await page.callMethod('jest_set_cookie')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
});
it('Check Delete Cookie', async () => {
res = await page.callMethod('jest_delete_cookie')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
});
it('Check Set Cookie Expires', async () => {
await page.callMethod('jest_set_cookie_expires')
await page.waitFor(2000);
res = await page.data('jest_result_data');
console.log("request expires cookie data :", res);
res = await page.data('jest_result');
expect(res).toBe(true)
await page.setData({
jest_result: false,
jest_result_data: "",
data: null,
header: null
})
await page.waitFor(5000);
await page.callMethod('jest_cookie_request', false)
await page.waitFor(2000);
res = await page.data('jest_result_data');
console.log("verify request data :", res);
res = await page.data('jest_result');
expect(res).toBe(true)
});
}
it('Check Get With Data', async () => {
res = await page.callMethod('jest_get_with_data')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
})
it('Check Get With Generics', async () => {
res = await page.callMethod('jest_get_with_generics')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
})
let version = process.env.uniTestPlatformInfo
let split = version.split(" ")
version = parseInt(split[split.length - 1])
if (isIOS && version > 15 || isAndroid || isHarmony) {
it('Check Post In UTS Module', async () => {
res = await page.callMethod('jest_uts_module_invoked')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
})
}
it('Check Respone Json String', async () => {
res = await page.callMethod('jest_respone_json_string')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
})
if (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('android')) {
it('Check Respone With String Generics', async () => {
res = await page.callMethod('jest_respone_with_string_generics')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
})
}
if (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('android')) {
it('Check Respone string generics when status is 404', async () => {
res = await page.callMethod('jest_respone_with_404_and_string_generics')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
})
}
if (isAndroid || isIOS) {
it('send arraybuffer', async () => {
res = await page.callMethod('sendArrayBuffer', true)
await page.waitFor(5000);
res = await page.data('res');
expect(res).toEqual('请求结果 : 123,34,104,101,108,108,111,34,58,34,119,111,114,108,100,34,125')
})
}
if(isWeb) {
it('issue 19687', async () => {
await page.callMethod('jest_issue_19687')
await page.waitFor(2000);
res = await page.data('jest_result');
expect(res).toBe(true)
})
}
});