( error: Error | MongoError, expected: ExpectedError, entities: EntitiesMap )
| 775 | } |
| 776 | |
| 777 | export function expectErrorCheck( |
| 778 | error: Error | MongoError, |
| 779 | expected: ExpectedError, |
| 780 | entities: EntitiesMap |
| 781 | ): void { |
| 782 | const expectMessage = `\n\nOriginal Error Stack:\n${error.stack}\n\n`; |
| 783 | |
| 784 | if (!isMongoCryptError(error)) { |
| 785 | expect(error, expectMessage).to.be.instanceOf(MongoError); |
| 786 | } |
| 787 | |
| 788 | if (expected.isClientError === false) { |
| 789 | expect(error).to.be.instanceOf(MongoServerError); |
| 790 | } else if (expected.isClientError === true) { |
| 791 | if (error instanceof MongoBulkWriteError) { |
| 792 | // TODO(NODE-6281): do not throw MongoServerErrors from bulk write if the error is a client-side error |
| 793 | expect(error.errorResponse).not.to.be.instanceOf(MongoServerError); |
| 794 | } else { |
| 795 | expect(error).not.to.be.instanceOf(MongoServerError); |
| 796 | } |
| 797 | } |
| 798 | |
| 799 | if (expected.isTimeoutError === false) { |
| 800 | expect(error).to.not.be.instanceof(MongoOperationTimeoutError); |
| 801 | } else if (expected.isTimeoutError === true) { |
| 802 | if ('errorResponse' in error) { |
| 803 | expect(error.errorResponse).to.be.instanceof(MongoOperationTimeoutError); |
| 804 | } else { |
| 805 | expect(error).to.be.instanceof(MongoOperationTimeoutError); |
| 806 | } |
| 807 | } |
| 808 | |
| 809 | if (expected.errorContains != null) { |
| 810 | expect(error.message.toLowerCase(), expectMessage.toLowerCase()).to.include( |
| 811 | expected.errorContains.toLowerCase() |
| 812 | ); |
| 813 | } |
| 814 | |
| 815 | if (expected.errorCode != null) { |
| 816 | if (error instanceof MongoClientBulkWriteError) { |
| 817 | expect(error.cause).to.have.property('code', expected.errorCode); |
| 818 | } else { |
| 819 | expect(error, expectMessage).to.have.property('code', expected.errorCode); |
| 820 | } |
| 821 | } |
| 822 | |
| 823 | if (expected.errorCodeName != null) { |
| 824 | expect(error, expectMessage).to.have.property('codeName', expected.errorCodeName); |
| 825 | } |
| 826 | |
| 827 | if (expected.errorLabelsContain != null) { |
| 828 | let mongoError = error as MongoError; |
| 829 | if (error instanceof MongoClientBulkWriteError) { |
| 830 | mongoError = error.cause as MongoError; |
| 831 | } |
| 832 | for (const errorLabel of expected.errorLabelsContain) { |
| 833 | expect( |
| 834 | mongoError.hasErrorLabel(errorLabel), |
no test coverage detected