{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":6,"numPassedTests":55,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":6,"numTotalTests":55,"startTime":1753398301871,"success":false,"testResults":[{"numFailingTests":0,"numPassingTests":12,"numPendingTests":0,"numTodoTests":0,"perfStats":{"end":1753398316583,"runtime":14458,"slow":true,"start":1753398302125},"testFilePath":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/test/offer.test.ts","failureMessage":null,"testResults":[{"ancestorTitles":["offer"],"duration":2509,"failureMessages":[],"fullName":"offer should get a valid session","status":"passed","title":"should get a valid session"},{"ancestorTitles":["offer"],"duration":1163,"failureMessages":[],"fullName":"offer should POST an offer to a user","status":"passed","title":"should POST an offer to a user"},{"ancestorTitles":["offer"],"duration":197,"failureMessages":[],"fullName":"offer should GET an offer with signalid","status":"passed","title":"should GET an offer with signalid"},{"ancestorTitles":["offer"],"duration":456,"failureMessages":[],"fullName":"offer should GET an offer without signalid","status":"passed","title":"should GET an offer without signalid"},{"ancestorTitles":["offer"],"duration":195,"failureMessages":[],"fullName":"offer should return an empty object if database fails to find offer for GET method","status":"passed","title":"should return an empty object if database fails to find offer for GET method"},{"ancestorTitles":["offer"],"duration":106,"failureMessages":[],"fullName":"offer should return 400 error for POST method without a request body","status":"passed","title":"should return 400 error for POST method without a request body"},{"ancestorTitles":["offer"],"duration":102,"failureMessages":[],"fullName":"offer should return 400 error when missing required \"sdp\" property for POST method","status":"passed","title":"should return 400 error when missing required \"sdp\" property for POST method"},{"ancestorTitles":["offer"],"duration":101,"failureMessages":[],"fullName":"offer should return 400 error when missing required \"to\" property for POST method","status":"passed","title":"should return 400 error when missing required \"to\" property for POST method"},{"ancestorTitles":["offer"],"duration":102,"failureMessages":[],"fullName":"offer should return 400 error with invalid \"to\" value for POST method","status":"passed","title":"should return 400 error with invalid \"to\" value for POST method"},{"ancestorTitles":["offer"],"duration":145,"failureMessages":[],"fullName":"offer should return 400 error if signalid is invalid id for GET method","status":"passed","title":"should return 400 error if signalid is invalid id for GET method"},{"ancestorTitles":["offer"],"duration":99,"failureMessages":[],"fullName":"offer should return 400 error with an unknown method","status":"passed","title":"should return 400 error with an unknown method"},{"ancestorTitles":["offer"],"duration":97,"failureMessages":[],"fullName":"offer should return 403 error with missing authentication","status":"passed","title":"should return 403 error with missing authentication"}]},{"numFailingTests":0,"numPassingTests":11,"numPendingTests":0,"numTodoTests":0,"perfStats":{"end":1753398316968,"runtime":14872,"slow":true,"start":1753398302096},"testFilePath":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/test/expire.test.ts","failureMessage":null,"testResults":[{"ancestorTitles":["expire"],"duration":2647,"failureMessages":[],"fullName":"expire should get a valid session","status":"passed","title":"should get a valid session"},{"ancestorTitles":["expire"],"duration":1338,"failureMessages":[],"fullName":"expire should return nothing if there is no matching offer/answer in database","status":"passed","title":"should return nothing if there is no matching offer/answer in database"},{"ancestorTitles":["expire"],"duration":95,"failureMessages":[],"fullName":"expire should throw 400 error if no request body is included","status":"passed","title":"should throw 400 error if no request body is included"},{"ancestorTitles":["expire"],"duration":96,"failureMessages":[],"fullName":"expire should throw 400 error if missing one of the required fields in request body","status":"passed","title":"should throw 400 error if missing one of the required fields in request body"},{"ancestorTitles":["expire"],"duration":98,"failureMessages":[],"fullName":"expire should throw 400 error if request body has invalid source","status":"passed","title":"should throw 400 error if request body has invalid source"},{"ancestorTitles":["expire"],"duration":101,"failureMessages":[],"fullName":"expire should throw 400 error if request body has invalid destination","status":"passed","title":"should throw 400 error if request body has invalid destination"},{"ancestorTitles":["expire"],"duration":102,"failureMessages":[],"fullName":"expire should throw 400 error if type is neither offer nor answer","status":"passed","title":"should throw 400 error if type is neither offer nor answer"},{"ancestorTitles":["expire"],"duration":103,"failureMessages":[],"fullName":"expire should throw 403 error if requestor is not equal to source AND is not equal to destination","status":"passed","title":"should throw 403 error if requestor is not equal to source AND is not equal to destination"},{"ancestorTitles":["expire"],"duration":96,"failureMessages":[],"fullName":"expire should throw 403 error with missing authentication","status":"passed","title":"should throw 403 error with missing authentication"},{"ancestorTitles":["expire"],"duration":747,"failureMessages":[],"fullName":"expire should expire sdp","status":"passed","title":"should expire sdp"},{"ancestorTitles":["expire"],"duration":195,"failureMessages":[],"fullName":"expire should return nothing with already expired session","status":"passed","title":"should return nothing with already expired session"}]},{"numFailingTests":0,"numPassingTests":10,"numPendingTests":0,"numTodoTests":0,"perfStats":{"end":1753398321665,"runtime":5067,"slow":true,"start":1753398316598},"testFilePath":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/test/answer.test.ts","failureMessage":null,"testResults":[{"ancestorTitles":["answer"],"duration":1028,"failureMessages":[],"fullName":"answer should receive an offer","status":"passed","title":"should receive an offer"},{"ancestorTitles":["answer"],"duration":198,"failureMessages":[],"fullName":"answer should POST an answer to a user","status":"passed","title":"should POST an answer to a user"},{"ancestorTitles":["answer"],"duration":196,"failureMessages":[],"fullName":"answer should GET an answer from user with signalid","status":"passed","title":"should GET an answer from user with signalid"},{"ancestorTitles":["answer"],"duration":184,"failureMessages":[],"fullName":"answer should GET an answer from user without signalid","status":"passed","title":"should GET an answer from user without signalid"},{"ancestorTitles":["answer"],"duration":186,"failureMessages":[],"fullName":"answer should GET an empty object if database fails to find offer","status":"passed","title":"should GET an empty object if database fails to find offer"},{"ancestorTitles":["answer"],"duration":95,"failureMessages":[],"fullName":"answer should return 400 error for POST method without a request body","status":"passed","title":"should return 400 error for POST method without a request body"},{"ancestorTitles":["answer"],"duration":301,"failureMessages":[],"fullName":"answer should return 400 error with an unknown method","status":"passed","title":"should return 400 error with an unknown method"},{"ancestorTitles":["answer"],"duration":96,"failureMessages":[],"fullName":"answer should return 400 error when missing required \"sdp\" field for POST method","status":"passed","title":"should return 400 error when missing required \"sdp\" field for POST method"},{"ancestorTitles":["answer"],"duration":100,"failureMessages":[],"fullName":"answer should return 400 error when missing required \"to\" field for POST method","status":"passed","title":"should return 400 error when missing required \"to\" field for POST method"},{"ancestorTitles":["answer"],"duration":96,"failureMessages":[],"fullName":"answer should return 400 error with invalid \"to\" value for POST method","status":"passed","title":"should return 400 error with invalid \"to\" value for POST method"}]},{"numFailingTests":0,"numPassingTests":5,"numPendingTests":0,"numTodoTests":0,"perfStats":{"end":1753398321981,"runtime":4992,"slow":false,"start":1753398316989},"testFilePath":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/test/ice_servers.test.ts","failureMessage":null,"testResults":[{"ancestorTitles":["ice_servers"],"duration":1483,"failureMessages":[],"fullName":"ice_servers should get a valid session","status":"passed","title":"should get a valid session"},{"ancestorTitles":["ice_servers"],"duration":1637,"failureMessages":[],"fullName":"ice_servers should get ICE servers","status":"passed","title":"should get ICE servers"},{"ancestorTitles":["ice_servers"],"duration":94,"failureMessages":[],"fullName":"ice_servers should return a 403 error without a valid session","status":"passed","title":"should return a 403 error without a valid session"},{"ancestorTitles":["ice_servers"],"duration":372,"failureMessages":[],"fullName":"ice_servers should create turn credential with primary key","status":"passed","title":"should create turn credential with primary key"},{"ancestorTitles":["ice_servers"],"duration":399,"failureMessages":[],"fullName":"ice_servers should create turn credential with secondary key","status":"passed","title":"should create turn credential with secondary key"}]},{"numFailingTests":0,"numPassingTests":4,"numPendingTests":0,"numTodoTests":0,"perfStats":{"end":1753398324706,"runtime":3027,"slow":false,"start":1753398321679},"testFilePath":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/test/logout.test.ts","failureMessage":null,"testResults":[{"ancestorTitles":["logout"],"duration":1663,"failureMessages":[],"fullName":"logout should get a valid session","status":"passed","title":"should get a valid session"},{"ancestorTitles":["logout"],"duration":540,"failureMessages":[],"fullName":"logout should expire the session","status":"passed","title":"should expire the session"},{"ancestorTitles":["logout"],"duration":94,"failureMessages":[],"fullName":"logout should leave 200 status when logging out with already expired session","status":"passed","title":"should leave 200 status when logging out with already expired session"},{"ancestorTitles":["logout"],"duration":4,"failureMessages":[],"fullName":"logout should leave 200 status when logging out with invalid session","status":"passed","title":"should leave 200 status when logging out with invalid session"}]},{"numFailingTests":0,"numPassingTests":13,"numPendingTests":0,"numTodoTests":0,"perfStats":{"end":1753398333642,"runtime":31532,"slow":true,"start":1753398302110},"testFilePath":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/test/login.test.ts","failureMessage":null,"testResults":[{"ancestorTitles":["login"],"duration":2336,"failureMessages":[],"fullName":"login should get a valid session","status":"passed","title":"should get a valid session"},{"ancestorTitles":["login"],"duration":1746,"failureMessages":[],"fullName":"login should generate a valid token","status":"passed","title":"should generate a valid token"},{"ancestorTitles":["login"],"duration":1500,"failureMessages":[],"fullName":"login should log in successfully with valid token","status":"passed","title":"should log in successfully with valid token"},{"ancestorTitles":["login"],"duration":5899,"failureMessages":[],"fullName":"login should log in successfully with valid session cookie","status":"passed","title":"should log in successfully with valid session cookie"},{"ancestorTitles":["login"],"duration":153,"failureMessages":[],"fullName":"login should throw 401 \"Missing session cookie\" error when x-adapt-url is invalid","status":"passed","title":"should throw 401 \"Missing session cookie\" error when x-adapt-url is invalid"},{"ancestorTitles":["login"],"duration":233,"failureMessages":[],"fullName":"login should throw 400 error when no token is passed","status":"passed","title":"should throw 400 error when no token is passed"},{"ancestorTitles":["login"],"duration":227,"failureMessages":[],"fullName":"login should throw 400 error when token is invalid","status":"passed","title":"should throw 400 error when token is invalid"},{"ancestorTitles":["login"],"duration":230,"failureMessages":[],"fullName":"login should throw 400 error when authorization token does not have a valid base64 JSON header","status":"passed","title":"should throw 400 error when authorization token does not have a valid base64 JSON header"},{"ancestorTitles":["login"],"duration":231,"failureMessages":[],"fullName":"login should throw 400 error when authorization token is invalid","status":"passed","title":"should throw 400 error when authorization token is invalid"},{"ancestorTitles":["login"],"duration":973,"failureMessages":[],"fullName":"login should throw 403 error when payload token is invalid","status":"passed","title":"should throw 403 error when payload token is invalid"},{"ancestorTitles":["login"],"duration":889,"failureMessages":[],"fullName":"login should throw 403 error when secret token is invalid","status":"passed","title":"should throw 403 error when secret token is invalid"},{"ancestorTitles":["login"],"duration":6689,"failureMessages":[],"fullName":"login should login user with new cookie and new user info if user is different","status":"passed","title":"should login user with new cookie and new user info if user is different"},{"ancestorTitles":["login"],"duration":1100,"failureMessages":[],"fullName":"login should login user with just valid cookie","status":"passed","title":"should login user with just valid cookie"}]}],"config":{"bail":0,"changedFilesWithAncestor":false,"ci":true,"collectCoverage":true,"collectCoverageFrom":[],"coverageDirectory":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/coverage","coverageProvider":"babel","coverageReporters":["json","text","lcov","clover"],"detectLeaks":false,"detectOpenHandles":false,"errorOnDeprecated":false,"expand":false,"findRelatedTests":false,"forceExit":true,"json":false,"lastCommit":false,"listTests":false,"logHeapUsage":false,"maxConcurrency":5,"maxWorkers":3,"noStackTrace":false,"nonFlagArgs":[],"notify":false,"notifyMode":"failure-change","onlyChanged":false,"onlyFailures":false,"openHandlesTimeout":1000,"passWithNoTests":false,"projects":[],"reporters":[["default",{}],["/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/node_modules/jest-html-reporters/index.js",{"publicPath":"./coverage","filename":"index.html","pageTitle":"SIGNAL Report","inlineSource":true,"urlForTestFiles":"https://github.com/turnaroundfactor/adapt_webrtc_signal_server/blob/develop","hideIcon":true}]],"rootDir":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server","runTestsByPath":false,"seed":757063727,"skipFilter":false,"snapshotFormat":{"escapeString":false,"printBasicPrototype":false},"testFailureExitCode":1,"testPathPattern":"","testSequencer":"/home/runner/work/adapt_webrtc_signal_server/adapt_webrtc_signal_server/node_modules/@jest/test-sequencer/build/index.js","testTimeout":30000,"updateSnapshot":"none","useStderr":false,"verbose":true,"watch":false,"watchAll":false,"watchman":true,"workerThreads":false,"coverageLinkPath":"lcov-report/index.html"},"endTime":1753398334235,"_reporterOptions":{"publicPath":"./coverage","filename":"index.html","expand":false,"pageTitle":"SIGNAL Report","hideIcon":true,"testCommand":"","openReport":false,"failureMessageOnly":0,"enableMergeData":false,"dataMergeLevel":1,"inlineSource":true,"urlForTestFiles":"https://github.com/turnaroundfactor/adapt_webrtc_signal_server/blob/develop","darkTheme":false,"includeConsoleLog":false,"stripSkippedTest":false},"logInfoMapping":{},"attachInfos":{}}