add java
This commit is contained in:
parent
ebc738a248
commit
47756f7b23
|
|
@ -248,6 +248,32 @@ class CSharpCodeGen implements APIRequestCodegen {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class JavaCodeGen implements APIRequestCodegen {
|
||||||
|
generatePlaywrightRequestCall(request: har.Request, body: string | undefined): string {
|
||||||
|
const url = new URL(request.url);
|
||||||
|
const params = [`"${url.origin}${url.pathname}"`];
|
||||||
|
|
||||||
|
const options: string[] = [];
|
||||||
|
|
||||||
|
let method = request.method.toLowerCase();
|
||||||
|
if (!['delete', 'get', 'head', 'post', 'put', 'patch'].includes(method)) {
|
||||||
|
options.push(`setMethod("${method}")`);
|
||||||
|
method = 'fetch';
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [key, value] of url.searchParams)
|
||||||
|
options.push(`setQueryParam("${key}", "${value}")`);
|
||||||
|
if (body)
|
||||||
|
options.push(`setData("${body.replaceAll('"', '\\"')}")`);
|
||||||
|
for (const header of request.headers)
|
||||||
|
options.push(`setHeader("${header.name}", "${header.value}")`);
|
||||||
|
|
||||||
|
if (options.length > 0)
|
||||||
|
params.push(`RequestOptions.create()\n .${options.join('\n .')}\n`);
|
||||||
|
return `request.${method}(${params.join(', ')});`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function getAPIRequestCodeGen(language: Language): APIRequestCodegen {
|
export function getAPIRequestCodeGen(language: Language): APIRequestCodegen {
|
||||||
if (language === 'javascript')
|
if (language === 'javascript')
|
||||||
return new JSCodeGen();
|
return new JSCodeGen();
|
||||||
|
|
@ -255,5 +281,7 @@ export function getAPIRequestCodeGen(language: Language): APIRequestCodegen {
|
||||||
return new PythonCodeGen();
|
return new PythonCodeGen();
|
||||||
if (language === 'csharp')
|
if (language === 'csharp')
|
||||||
return new CSharpCodeGen();
|
return new CSharpCodeGen();
|
||||||
|
if (language === 'java')
|
||||||
|
return new JavaCodeGen();
|
||||||
throw new Error('Unsupported language: ' + language);
|
throw new Error('Unsupported language: ' + language);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -480,3 +480,113 @@ await request.PutAsync("http://example.com/foo", new() {
|
||||||
});`.trim());
|
});`.trim());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test.describe('java', () => {
|
||||||
|
const impl = getAPIRequestCodeGen('java');
|
||||||
|
|
||||||
|
test('generatePlaywrightRequestCall', () => {
|
||||||
|
expect(impl.generatePlaywrightRequestCall({
|
||||||
|
url: 'http://example.com/foo?bar=baz',
|
||||||
|
method: 'GET',
|
||||||
|
headers: [{ name: 'User-Agent', value: 'Mozilla/5.0' }, { name: 'Date', value: '2021-01-01' }],
|
||||||
|
httpVersion: '1.1',
|
||||||
|
cookies: [],
|
||||||
|
queryString: [],
|
||||||
|
headersSize: 0,
|
||||||
|
bodySize: 0,
|
||||||
|
comment: '',
|
||||||
|
}, 'foo')).toEqual(`
|
||||||
|
request.get("http://example.com/foo", RequestOptions.create()
|
||||||
|
.setQueryParam("bar", "baz")
|
||||||
|
.setData("foo")
|
||||||
|
.setHeader("User-Agent", "Mozilla/5.0")
|
||||||
|
.setHeader("Date", "2021-01-01")
|
||||||
|
);`.trim());
|
||||||
|
|
||||||
|
expect(impl.generatePlaywrightRequestCall({
|
||||||
|
url: 'http://example.com/foo?bar=baz',
|
||||||
|
method: 'OPTIONS',
|
||||||
|
headers: [],
|
||||||
|
httpVersion: '1.1',
|
||||||
|
cookies: [],
|
||||||
|
queryString: [],
|
||||||
|
headersSize: 0,
|
||||||
|
bodySize: 0,
|
||||||
|
comment: '',
|
||||||
|
}, undefined)).toEqual(`
|
||||||
|
request.fetch("http://example.com/foo", RequestOptions.create()
|
||||||
|
.setMethod("options")
|
||||||
|
.setQueryParam("bar", "baz")
|
||||||
|
);`.trim());
|
||||||
|
});
|
||||||
|
|
||||||
|
test('generatePlaywrightRequestCall with POST method and no body', () => {
|
||||||
|
expect(impl.generatePlaywrightRequestCall({
|
||||||
|
url: 'http://example.com/foo',
|
||||||
|
method: 'POST',
|
||||||
|
headers: [{ name: 'Content-Type', value: 'application/json' }],
|
||||||
|
httpVersion: '1.1',
|
||||||
|
cookies: [],
|
||||||
|
queryString: [],
|
||||||
|
headersSize: 0,
|
||||||
|
bodySize: 0,
|
||||||
|
comment: '',
|
||||||
|
}, undefined)).toEqual(`
|
||||||
|
request.post("http://example.com/foo", RequestOptions.create()
|
||||||
|
.setHeader("Content-Type", "application/json")
|
||||||
|
);`.trim());
|
||||||
|
});
|
||||||
|
|
||||||
|
test('generatePlaywrightRequestCall with PUT method and JSON body', () => {
|
||||||
|
expect(impl.generatePlaywrightRequestCall({
|
||||||
|
url: 'http://example.com/foo',
|
||||||
|
method: 'PUT',
|
||||||
|
headers: [{ name: 'Content-Type', value: 'application/json' }],
|
||||||
|
httpVersion: '1.1',
|
||||||
|
cookies: [],
|
||||||
|
queryString: [],
|
||||||
|
headersSize: 0,
|
||||||
|
bodySize: 0,
|
||||||
|
comment: '',
|
||||||
|
}, '{"key":"value"}')).toEqual(`
|
||||||
|
request.put("http://example.com/foo", RequestOptions.create()
|
||||||
|
.setData("{\\"key\\":\\"value\\"}")
|
||||||
|
.setHeader("Content-Type", "application/json")
|
||||||
|
);`.trim());
|
||||||
|
});
|
||||||
|
|
||||||
|
test('generatePlaywrightRequestCall with PATCH method and form data', () => {
|
||||||
|
expect(impl.generatePlaywrightRequestCall({
|
||||||
|
url: 'http://example.com/foo',
|
||||||
|
method: 'PATCH',
|
||||||
|
headers: [{ name: 'Content-Type', value: 'application/x-www-form-urlencoded' }],
|
||||||
|
httpVersion: '1.1',
|
||||||
|
cookies: [],
|
||||||
|
queryString: [],
|
||||||
|
headersSize: 0,
|
||||||
|
bodySize: 0,
|
||||||
|
comment: '',
|
||||||
|
}, 'key=value')).toEqual(`
|
||||||
|
request.patch("http://example.com/foo", RequestOptions.create()
|
||||||
|
.setData("key=value")
|
||||||
|
.setHeader("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
);`.trim());
|
||||||
|
});
|
||||||
|
|
||||||
|
test('generatePlaywrightRequestCall with DELETE method and custom header', () => {
|
||||||
|
expect(impl.generatePlaywrightRequestCall({
|
||||||
|
url: 'http://example.com/foo',
|
||||||
|
method: 'DELETE',
|
||||||
|
headers: [{ name: 'Authorization', value: 'Bearer token' }],
|
||||||
|
httpVersion: '1.1',
|
||||||
|
cookies: [],
|
||||||
|
queryString: [],
|
||||||
|
headersSize: 0,
|
||||||
|
bodySize: 0,
|
||||||
|
comment: '',
|
||||||
|
}, undefined)).toEqual(`
|
||||||
|
request.delete("http://example.com/foo", RequestOptions.create()
|
||||||
|
.setHeader("Authorization", "Bearer token")
|
||||||
|
);`.trim());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue