-
Notifications
You must be signed in to change notification settings - Fork 81
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: convert to typescript and use Jest (#188)
* chore(tests): Convert to typescript and use Jest * chore(lint): Run prettier * fix: Add missing closing bracket * chore(lint): Run Prettier * refactor(tests): Replace some tap with jest equivalents - Replace `t.ok()` with `expect().toBeTruthy()` - Replace `t.plan()` with `expect.assertions()` * chore(package): Add types for simple-mock * fix(typescript): Make sure to use the simple-mock types * chore(tests): Migrate integration tests to TypeScript + Jest * chore(tests): Finish most of the Jest transition * fix(typescript): Fix some type errors * fix(tests): Some more fixes * fix(tests): Get tests to run * fix(tests): Fix some jest errors Jest expects functions in the `expect()` function when using the `.toThrow()` property * fix(tests): Fix some type errors * refactor: Remove un-needed argument * fix(tests): Fix various problems in the tests Fix some types Replace some remaining tap functions Ignore some TypeScript type errors, they are there on purpose to test if the function throws an error * test(integration/middlewares): fix mocks to make tests pass * test(middleware): add check to assure the number of assertions expected to run are executed * test(middlewares): fix typing of unit test for middlewares * ♻️ refactor(jest): use toHaveBeenCalled instead of toHaveBeenCalledTimes(1) * 🚨 test(event-handler-test): add missing done() callback to make async test to wait until all expect * tests: Set node environment in Jest config * test(server-test): mock errorHandler using jest.fn() (#198) * tests: Fix tests after #190 - Pull in the relevant types package for `@sinonjs/fake-timers` - Convert those tests from tap to Jest - Add some Typescript types to those tests * fix(typescript): Fix some type errors in the tests * test(types): add missing types to variables and paramters on event-handler-test (#212) * Fix sign test type compilation error (#213) * test(server-test): fix typescript errors (#214) * test(middleware-test): add test coverage for middleware when there is a timeout (#215) * Revert 2b7c0bb and instead add a ts-ignore statement Adds back the existing error message that was removed * build(aggregate-error): upgrade version to support Custom Errors (#233) * test(sign-test): restore 100% coverage for sign-test (#234) * fix(sign): make sign() parameters non-optional (#237) Co-authored-by: Oscar Dominguez <dominguez.celada@gmail.com>
- Loading branch information
Showing
26 changed files
with
13,216 additions
and
9,865 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
import { EventEmitter } from "events"; | ||
import { Buffer } from "buffer"; | ||
import { createMiddleware } from "../../src/middleware"; | ||
|
||
enum RequestMethodType { | ||
POST = "POST", | ||
GET = "GET", | ||
} | ||
|
||
type RequestMock = EventEmitter & { | ||
method: RequestMethodType; | ||
headers: { [key: string]: string }; | ||
url: string; | ||
}; | ||
|
||
const headers = { | ||
"x-github-delivery": "123e4567-e89b-12d3-a456-426655440000", | ||
"x-github-event": "push", | ||
"x-hub-signature": "sha1=f4d795e69b5d03c139cc6ea991ad3e5762d13e2f", | ||
}; | ||
|
||
test("Invalid payload", (done) => { | ||
const requestMock: RequestMock = Object.assign(new EventEmitter(), { | ||
method: RequestMethodType.POST, | ||
headers, | ||
url: "/", | ||
setEncoding: function (encoding: string) {}, | ||
}); | ||
|
||
const responseMock = { | ||
end: jest.fn(), | ||
statusCode: 0, | ||
}; | ||
|
||
const middleware = createMiddleware({ secret: "mysecret" }); | ||
middleware(requestMock, responseMock).then(() => { | ||
expect(responseMock.statusCode).toBe(400); | ||
expect(responseMock.end).toHaveBeenCalledWith( | ||
expect.stringContaining("SyntaxError: Invalid JSON") | ||
); | ||
done(); | ||
}); | ||
|
||
requestMock.emit("data", Buffer.from("foo")); | ||
requestMock.emit("end"); | ||
expect.assertions(2); | ||
}); | ||
|
||
test("request error", (done) => { | ||
const requestMock: RequestMock = Object.assign(new EventEmitter(), { | ||
method: RequestMethodType.POST, | ||
headers, | ||
url: "/", | ||
setEncoding: function (encoding: string) {}, | ||
}); | ||
|
||
const responseMock = { | ||
end: jest.fn(), | ||
statusCode: 0, | ||
}; | ||
|
||
const middleware = createMiddleware({ secret: "mysecret" }); | ||
middleware(requestMock, responseMock).then(() => { | ||
expect(responseMock.statusCode).toBe(500); | ||
expect(responseMock.end).toHaveBeenCalledWith( | ||
expect.stringContaining("Error: oops") | ||
); | ||
done(); | ||
}); | ||
|
||
const error = new Error("oops"); | ||
requestMock.emit("error", error); | ||
expect.assertions(2); | ||
}); |
Oops, something went wrong.