mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
Fix SDK Tests (#7469)
* POST instead of PATCH for invite accept test * Replace Jest JSDOM environment Using `jest-environment-jsdom-global` didn't seem to bring any used advantages over the default `jest-environment-node` * remove mockdate, use modern jest fake timers * update package lock Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com> Co-authored-by: Jay Cammarano <67079013+jaycammarano@users.noreply.github.com>
This commit is contained in:
338
package-lock.json
generated
338
package-lock.json
generated
@@ -33954,12 +33954,6 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/mockdate": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/mockdate/-/mockdate-3.0.5.tgz",
|
||||
"integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/modify-values": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
|
||||
@@ -58824,8 +58818,7 @@
|
||||
"argon2": "0.28.2",
|
||||
"dotenv": "10.0.0",
|
||||
"jest": "27.0.6",
|
||||
"jest-environment-jsdom-global": "2.0.4",
|
||||
"mockdate": "3.0.5",
|
||||
"jest-environment-jsdom": "^27.0.6",
|
||||
"nock": "13.1.1",
|
||||
"npm-run-all": "4.1.5",
|
||||
"rimraf": "3.0.2",
|
||||
@@ -58839,178 +58832,6 @@
|
||||
"typescript": "4.3.5"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/@jest/environment": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
|
||||
"integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jest/fake-timers": "^26.6.2",
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "^26.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.14.2"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/@jest/fake-timers": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
|
||||
"integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jest/types": "^26.6.2",
|
||||
"@sinonjs/fake-timers": "^6.0.1",
|
||||
"@types/node": "*",
|
||||
"jest-message-util": "^26.6.2",
|
||||
"jest-mock": "^26.6.2",
|
||||
"jest-util": "^26.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.14.2"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/@jest/types": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
|
||||
"integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/istanbul-lib-coverage": "^2.0.0",
|
||||
"@types/istanbul-reports": "^3.0.0",
|
||||
"@types/node": "*",
|
||||
"@types/yargs": "^15.0.0",
|
||||
"chalk": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.14.2"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/@sinonjs/fake-timers": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
|
||||
"integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@sinonjs/commons": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/@types/yargs": {
|
||||
"version": "15.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
|
||||
"integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/yargs-parser": "*"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/ci-info": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
|
||||
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
|
||||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"packages/sdk/node_modules/is-ci": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
|
||||
"integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"ci-info": "^2.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"is-ci": "bin.js"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/jest-environment-jsdom": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
|
||||
"integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jest/environment": "^26.6.2",
|
||||
"@jest/fake-timers": "^26.6.2",
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "^26.6.2",
|
||||
"jest-util": "^26.6.2",
|
||||
"jsdom": "^16.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.14.2"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/jest-environment-jsdom-global": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-jsdom-global/-/jest-environment-jsdom-global-2.0.4.tgz",
|
||||
"integrity": "sha512-1vB8q+PrszXW4Pf7Zgp3eQ4oNVbA7GY6+jmrg1qi6RtYRWDJ60/xdkhjqAbQpX8BRyvqQJYQi66LXER5YNeHXg==",
|
||||
"dev": true,
|
||||
"peerDependencies": {
|
||||
"jest-environment-jsdom": "22.x || 23.x || 24.x || 25.x || 26.x"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/jest-message-util": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
|
||||
"integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/stack-utils": "^2.0.0",
|
||||
"chalk": "^4.0.0",
|
||||
"graceful-fs": "^4.2.4",
|
||||
"micromatch": "^4.0.2",
|
||||
"pretty-format": "^26.6.2",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.14.2"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/jest-mock": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
|
||||
"integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.14.2"
|
||||
}
|
||||
},
|
||||
"packages/sdk/node_modules/jest-util": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
|
||||
"integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.0.0",
|
||||
"graceful-fs": "^4.2.4",
|
||||
"is-ci": "^2.0.0",
|
||||
"micromatch": "^4.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.14.2"
|
||||
}
|
||||
},
|
||||
"packages/shared": {
|
||||
"name": "@directus/shared",
|
||||
"version": "9.0.0-rc.90",
|
||||
@@ -64101,8 +63922,7 @@
|
||||
"axios": "^0.21.1",
|
||||
"dotenv": "10.0.0",
|
||||
"jest": "27.0.6",
|
||||
"jest-environment-jsdom-global": "2.0.4",
|
||||
"mockdate": "3.0.5",
|
||||
"jest-environment-jsdom": "^27.0.6",
|
||||
"nock": "13.1.1",
|
||||
"npm-run-all": "4.1.5",
|
||||
"rimraf": "3.0.2",
|
||||
@@ -64114,154 +63934,6 @@
|
||||
"ts-jest": "27.0.4",
|
||||
"ts-node": "10.2.1",
|
||||
"typescript": "4.3.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jest/environment": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
|
||||
"integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@jest/fake-timers": "^26.6.2",
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "^26.6.2"
|
||||
}
|
||||
},
|
||||
"@jest/fake-timers": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
|
||||
"integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@jest/types": "^26.6.2",
|
||||
"@sinonjs/fake-timers": "^6.0.1",
|
||||
"@types/node": "*",
|
||||
"jest-message-util": "^26.6.2",
|
||||
"jest-mock": "^26.6.2",
|
||||
"jest-util": "^26.6.2"
|
||||
}
|
||||
},
|
||||
"@jest/types": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
|
||||
"integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@types/istanbul-lib-coverage": "^2.0.0",
|
||||
"@types/istanbul-reports": "^3.0.0",
|
||||
"@types/node": "*",
|
||||
"@types/yargs": "^15.0.0",
|
||||
"chalk": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"@sinonjs/fake-timers": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
|
||||
"integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@sinonjs/commons": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"@types/yargs": {
|
||||
"version": "15.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
|
||||
"integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@types/yargs-parser": "*"
|
||||
}
|
||||
},
|
||||
"ci-info": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
|
||||
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
|
||||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"is-ci": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
|
||||
"integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"ci-info": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"jest-environment-jsdom": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
|
||||
"integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@jest/environment": "^26.6.2",
|
||||
"@jest/fake-timers": "^26.6.2",
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*",
|
||||
"jest-mock": "^26.6.2",
|
||||
"jest-util": "^26.6.2",
|
||||
"jsdom": "^16.4.0"
|
||||
}
|
||||
},
|
||||
"jest-environment-jsdom-global": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/jest-environment-jsdom-global/-/jest-environment-jsdom-global-2.0.4.tgz",
|
||||
"integrity": "sha512-1vB8q+PrszXW4Pf7Zgp3eQ4oNVbA7GY6+jmrg1qi6RtYRWDJ60/xdkhjqAbQpX8BRyvqQJYQi66LXER5YNeHXg==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"jest-message-util": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
|
||||
"integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/stack-utils": "^2.0.0",
|
||||
"chalk": "^4.0.0",
|
||||
"graceful-fs": "^4.2.4",
|
||||
"micromatch": "^4.0.2",
|
||||
"pretty-format": "^26.6.2",
|
||||
"slash": "^3.0.0",
|
||||
"stack-utils": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"jest-mock": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
|
||||
"integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"jest-util": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
|
||||
"integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.0.0",
|
||||
"graceful-fs": "^4.2.4",
|
||||
"is-ci": "^2.0.0",
|
||||
"micromatch": "^4.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@directus/sdk-js": {
|
||||
@@ -89082,12 +88754,6 @@
|
||||
"mkdirp": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"mockdate": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/mockdate/-/mockdate-3.0.5.tgz",
|
||||
"integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==",
|
||||
"dev": true
|
||||
},
|
||||
"modify-values": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
|
||||
|
||||
@@ -53,8 +53,7 @@
|
||||
"argon2": "0.28.2",
|
||||
"dotenv": "10.0.0",
|
||||
"jest": "27.0.6",
|
||||
"jest-environment-jsdom-global": "2.0.4",
|
||||
"mockdate": "3.0.5",
|
||||
"jest-environment-jsdom": "^27.0.6",
|
||||
"nock": "13.1.1",
|
||||
"npm-run-all": "4.1.5",
|
||||
"rimraf": "3.0.2",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @jest-environment jest-environment-jsdom-global
|
||||
* @jest-environment jsdom
|
||||
*/
|
||||
|
||||
import { Auth, AxiosTransport, Directus, MemoryStorage } from '../../src';
|
||||
@@ -73,7 +73,8 @@ describe('auth (browser)', function () {
|
||||
|
||||
await timers(async ({ tick, flush }) => {
|
||||
const sdk = new Directus(url);
|
||||
await sdk.auth.login(
|
||||
|
||||
const loginPromise = sdk.auth.login(
|
||||
{
|
||||
email: 'wolfulus@gmail.com',
|
||||
password: 'password',
|
||||
@@ -88,12 +89,16 @@ describe('auth (browser)', function () {
|
||||
|
||||
await tick(2000);
|
||||
|
||||
await loginPromise;
|
||||
|
||||
expect(scope.pendingMocks().length).toBe(1);
|
||||
expect(sdk.auth.expiring).toBe(false);
|
||||
|
||||
await tick(500);
|
||||
expect(sdk.storage.auth_token).toBe('access_token');
|
||||
expect(sdk.storage.auth_expires).toBe(107000);
|
||||
await tick(5000);
|
||||
|
||||
expect(scope.pendingMocks().length).toBe(1);
|
||||
await flush();
|
||||
expect(sdk.auth.expiring).toBe(true);
|
||||
|
||||
await new Promise((resolve) => {
|
||||
@@ -102,9 +107,10 @@ describe('auth (browser)', function () {
|
||||
});
|
||||
});
|
||||
|
||||
expect(sdk.storage.auth_expires).toBe(107500);
|
||||
|
||||
expect(sdk.storage.auth_expires).toBe(112000);
|
||||
expect(scope.pendingMocks().length).toBe(0);
|
||||
expect(sdk.storage.auth_token).toBe('new_access_token');
|
||||
expect(sdk.auth.expiring).toBe(false);
|
||||
}, 100000);
|
||||
});
|
||||
|
||||
|
||||
@@ -58,9 +58,12 @@ describe('auth (node)', function () {
|
||||
},
|
||||
});
|
||||
|
||||
expect(scope.pendingMocks().length).toBe(2);
|
||||
|
||||
await timers(async ({ tick, flush }) => {
|
||||
const sdk = new Directus(url);
|
||||
await sdk.auth.login(
|
||||
|
||||
const loginPromise = sdk.auth.login(
|
||||
{
|
||||
email: 'wolfulus@gmail.com',
|
||||
password: 'password',
|
||||
@@ -75,12 +78,16 @@ describe('auth (node)', function () {
|
||||
|
||||
await tick(2000);
|
||||
|
||||
await loginPromise;
|
||||
|
||||
expect(scope.pendingMocks().length).toBe(1);
|
||||
expect(sdk.auth.expiring).toBe(false);
|
||||
|
||||
await tick(500);
|
||||
expect(sdk.storage.auth_token).toBe('some_node_access_token');
|
||||
expect(sdk.storage.auth_expires).toBe(107000);
|
||||
await tick(5000);
|
||||
|
||||
expect(scope.pendingMocks().length).toBe(1);
|
||||
await flush();
|
||||
expect(sdk.auth.expiring).toBe(true);
|
||||
|
||||
await new Promise((resolve) => {
|
||||
@@ -89,12 +96,11 @@ describe('auth (node)', function () {
|
||||
});
|
||||
});
|
||||
|
||||
expect(sdk.storage.auth_expires).toBe(107500);
|
||||
|
||||
expect(sdk.storage.auth_expires).toBe(112000);
|
||||
expect(scope.pendingMocks().length).toBe(0);
|
||||
expect(sdk.storage.auth_token).toBe('a_new_node_access_token');
|
||||
expect(sdk.auth.expiring).toBe(false);
|
||||
}, 100000);
|
||||
|
||||
expect(scope.pendingMocks().length).toBe(0);
|
||||
});
|
||||
|
||||
test(`logout sends a refresh token in body`, async (url, nock) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @jest-environment jest-environment-jsdom-global
|
||||
* @jest-environment jsdom
|
||||
*/
|
||||
|
||||
import { Directus, LocalStorage } from '../../src/base';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @jest-environment jest-environment-jsdom-global
|
||||
* @jest-environment jsdom
|
||||
*/
|
||||
|
||||
import { LocalStorage } from '../../../src/base/storage';
|
||||
|
||||
@@ -22,7 +22,7 @@ describe('invites', function () {
|
||||
|
||||
test(`accept`, async (url, nock) => {
|
||||
const scope = nock()
|
||||
.patch('/users/invite/accept', {
|
||||
.post('/users/invite/accept', {
|
||||
token: 'token',
|
||||
password: 'password1234',
|
||||
})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import md from 'mockdate';
|
||||
import nock, { back, BackMode } from 'nock';
|
||||
import { setImmediate, setTimeout, clearImmediate } from 'timers';
|
||||
|
||||
export const URL = process.env.TEST_URL || 'http://localhost';
|
||||
export const MODE = process.env.TEST_MODE || 'dryrun';
|
||||
@@ -27,6 +27,10 @@ export function test(name: string, test: Test, settings?: TestSettings): void {
|
||||
await test(settings?.url || URL, scope);
|
||||
}
|
||||
|
||||
// `clearImmediate` doesn't exist in the jsdom environment and nock throws ReferenceError
|
||||
if (global.clearImmediate !== typeof 'function') {
|
||||
global.clearImmediate = clearImmediate;
|
||||
}
|
||||
nock.abortPendingRequests();
|
||||
nock.cleanAll();
|
||||
});
|
||||
@@ -42,40 +46,41 @@ export async function timers(
|
||||
initial: number = Date.now()
|
||||
): Promise<void> {
|
||||
const originals = {
|
||||
setTimeout: global.setTimeout,
|
||||
setImmediate: global.setImmediate,
|
||||
setTimeout: setTimeout,
|
||||
setImmediate: setImmediate,
|
||||
};
|
||||
|
||||
md.set(new Date(initial));
|
||||
jest.useFakeTimers();
|
||||
jest.setSystemTime(new Date(initial));
|
||||
|
||||
let travel = 0;
|
||||
|
||||
try {
|
||||
jest.useFakeTimers();
|
||||
const tick = async (ms: number) => {
|
||||
travel += ms;
|
||||
md.set(initial + travel);
|
||||
await Promise.resolve().then(() => jest.advanceTimersByTime(ms));
|
||||
};
|
||||
const skip = async (func: () => Promise<void>, date = false) => {
|
||||
if (date) {
|
||||
md.reset();
|
||||
}
|
||||
jest.useRealTimers();
|
||||
try {
|
||||
await func();
|
||||
} finally {
|
||||
if (date) {
|
||||
md.set(initial + travel);
|
||||
jest.setSystemTime(initial + travel);
|
||||
}
|
||||
jest.useFakeTimers();
|
||||
}
|
||||
};
|
||||
const flush = () => new Promise<void>((resolve) => originals.setImmediate(resolve));
|
||||
const flush = () =>
|
||||
new Promise<void>((resolve) => {
|
||||
jest.runAllTicks();
|
||||
|
||||
originals.setImmediate(resolve);
|
||||
});
|
||||
const sleep = (ms: number) =>
|
||||
new Promise<void>((resolve) => {
|
||||
travel += ms;
|
||||
md.set(initial + travel);
|
||||
jest.advanceTimersByTime(travel);
|
||||
originals.setTimeout(resolve, ms);
|
||||
});
|
||||
|
||||
@@ -86,7 +91,6 @@ export async function timers(
|
||||
sleep,
|
||||
});
|
||||
} finally {
|
||||
md.reset();
|
||||
jest.clearAllTimers();
|
||||
jest.useRealTimers();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user