98 lines
3.9 KiB
HTML
98 lines
3.9 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/protocol-test.js"></script>
|
|
<script>
|
|
function test()
|
|
{
|
|
let suite = ProtocolTest.createAsyncSuite("Protocol.ArgumentModeErrors");
|
|
|
|
let errorCodes = {
|
|
ParseError: -32700,
|
|
InvalidRequest: -32600,
|
|
MethodNotFound: -32601,
|
|
InvalidParams: -32602,
|
|
InternalError: -32603,
|
|
ServerError: -32000,
|
|
};
|
|
|
|
function addErrorResponseTestCase(args)
|
|
{
|
|
let {name, description, message, expectedError} = args;
|
|
|
|
suite.addTestCase({
|
|
name,
|
|
description,
|
|
test(resolve, reject) {
|
|
let stringifiedMessage = (typeof message !== "string") ? JSON.stringify(message) : message;
|
|
ProtocolTest.log("Sending message: " + stringifiedMessage);
|
|
InspectorProtocol.awaitMessage(message)
|
|
.then(function resolved(response) {
|
|
ProtocolTest.log("FAIL: the backend should send a protocol error when receiving an invalid message.");
|
|
reject();
|
|
}, function rejected(response) {
|
|
ProtocolTest.log("PASS: the backend should send a protocol error when receiving an invalid message.");
|
|
ProtocolTest.expectThat(response.code === errorCodes[expectedError], `the reported error should be "${expectedError}" (${errorCodes[expectedError]})`);
|
|
ProtocolTest.log("Actual error code: " + response.code);
|
|
ProtocolTest.log("Actual error message: " + response.message);
|
|
if (response.data)
|
|
ProtocolTest.log("Actual error data: " + JSON.stringify(response.data));
|
|
|
|
resolve();
|
|
})
|
|
.catch(reject);
|
|
}
|
|
});
|
|
}
|
|
|
|
addErrorResponseTestCase({
|
|
name: "ParametersNotAnObject",
|
|
description: "The backend should return an error if a message has a non-object 'params'.",
|
|
message: {id: 123, method: "Runtime.evaluate", params: "junk"},
|
|
expectedError: "InvalidParams"
|
|
});
|
|
|
|
addErrorResponseTestCase({
|
|
name: "MissingRequiredParameter",
|
|
description: "The backend should return an error if a message is missing a required parameter.",
|
|
message: {id: 123, method: "Runtime.evaluate", params: {stuff: 123}},
|
|
expectedError: "InvalidParams"
|
|
});
|
|
|
|
addErrorResponseTestCase({
|
|
name: "RequiredParameterWrongType",
|
|
description: "The backend should return an error if a message has a required parameter with wrong type.",
|
|
message: {id: 123, method: "Runtime.evaluate", params: {expression: []}},
|
|
expectedError: "InvalidParams"
|
|
});
|
|
|
|
addErrorResponseTestCase({
|
|
name: "OptionalParameterWrongType",
|
|
description: "The backend should return an error if a message has an optional parameter with wrong type.",
|
|
message: {id: 123, method: "Runtime.evaluate", params: {expression: "42", includeCommandLineAPI: 123}},
|
|
expectedError: "InvalidParams"
|
|
});
|
|
|
|
addErrorResponseTestCase({
|
|
name: "TestErrorCodeForSyncServerError",
|
|
description: "The backend should return a server error with the correct error code.",
|
|
message: {id: 123, method: "Runtime.getProperties", params: {objectId: "thisisNotAnId"}},
|
|
expectedError: "ServerError"
|
|
});
|
|
|
|
addErrorResponseTestCase({
|
|
name: "TestErrorCodeForAsyncServerError",
|
|
description: "The backend should return a server error with the correct error code.",
|
|
message: {id: 123, method: "Runtime.awaitPromise", params: {promiseObjectId: "thisisNotAnId"}},
|
|
expectedError: "ServerError"
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Testing the inspector backend's error handling when sending messages with wrong parameters.</p>
|
|
</body>
|
|
</html>
|