Skip to content

Commit 80176d9

Browse files
committed
update: change test params to objects
1 parent 06f4e06 commit 80176d9

File tree

1 file changed

+144
-118
lines changed

1 file changed

+144
-118
lines changed

test/plugins/plugins.test.ts

Lines changed: 144 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { printPath, setupST, startST, stopST, killAllST, cleanST, resetAll } from "../utils";
1+
import { resetAll } from "../utils";
22
import {
33
apiOverrideFactory,
44
functionOverrideFactory,
@@ -19,10 +19,6 @@ import SuperTokens from "../../lib/build/supertokens";
1919
import { PluginRouteHandler, UserContext } from "../../lib/build/types";
2020
import { DummyRequest, DummyResponse } from "./misc";
2121
import { PostSuperTokensInitCallbacks } from "../../lib/ts/postSuperTokensInitCallbacks";
22-
// let STExpress = require("../..");
23-
// let assert = require("assert");
24-
// let { ProcessState } = require("../../lib/build/processState");
25-
// let PluginTestRecipe = require("./plugins").default;
2622

2723
function recipeFactory({ overrideFunctions, overrideApis }: { overrideFunctions: boolean; overrideApis: boolean }) {
2824
return PluginTestRecipe.init({
@@ -44,96 +40,113 @@ const partialSupertokensConfig = {
4440
},
4541
};
4642

47-
describe("Plugin Tests", () => {
43+
describe("Plugins", () => {
4844
beforeEach(() => {
4945
resetAll();
5046
PluginTestRecipe.reset();
5147
PostSuperTokensInitCallbacks.postInitCallbacks = [];
5248
});
5349

5450
describe("Overrides", () => {
55-
const overrideTestParams: [
56-
boolean,
57-
boolean,
58-
{ identifier: string; overrideFunctions: boolean; overrideApis: boolean }[],
59-
string[],
60-
string[]
61-
][] = [
62-
// [fnOverride, apiOverride, plugins, expectedFnStack, expectedApiStack]
51+
const overrideTestParams: {
52+
overrideFunctions: boolean;
53+
overrideApis: boolean;
54+
pluginFactortyConfigs: { identifier: string; overrideFunctions: boolean; overrideApis: boolean }[];
55+
expectedFunctionOrder: string[];
56+
expectedApiOrder: string[];
57+
}[] = [
6358
// No plugins
64-
[false, false, [], ["original"], ["original"]],
65-
[true, false, [], ["override", "original"], ["original"]],
66-
[false, true, [], ["original"], ["override", "original"]],
59+
{
60+
overrideFunctions: false,
61+
overrideApis: false,
62+
pluginFactortyConfigs: [],
63+
expectedFunctionOrder: ["original"],
64+
expectedApiOrder: ["original"],
65+
},
66+
{
67+
overrideFunctions: true,
68+
overrideApis: false,
69+
pluginFactortyConfigs: [],
70+
expectedFunctionOrder: ["override", "original"],
71+
expectedApiOrder: ["original"],
72+
},
73+
{
74+
overrideFunctions: false,
75+
overrideApis: true,
76+
pluginFactortyConfigs: [],
77+
expectedFunctionOrder: ["original"],
78+
expectedApiOrder: ["override", "original"],
79+
},
6780
// Single plugin with overrides
68-
[
69-
true,
70-
false,
71-
[{ identifier: "plugin1", overrideFunctions: true, overrideApis: false }],
72-
["override", "plugin1", "original"],
73-
["original"],
74-
],
75-
[
76-
true,
77-
false,
78-
[{ identifier: "plugin1", overrideFunctions: false, overrideApis: true }],
79-
["override", "original"],
80-
["plugin1", "original"],
81-
],
82-
[
83-
false,
84-
true,
85-
[{ identifier: "plugin1", overrideFunctions: true, overrideApis: false }],
86-
["plugin1", "original"],
87-
["override", "original"],
88-
],
89-
[
90-
false,
91-
true,
92-
[{ identifier: "plugin1", overrideFunctions: false, overrideApis: true }],
93-
["original"],
94-
["override", "plugin1", "original"],
95-
],
81+
{
82+
overrideFunctions: true,
83+
overrideApis: false,
84+
pluginFactortyConfigs: [{ identifier: "plugin1", overrideFunctions: true, overrideApis: false }],
85+
expectedFunctionOrder: ["override", "plugin1", "original"],
86+
expectedApiOrder: ["original"],
87+
},
88+
{
89+
overrideFunctions: true,
90+
overrideApis: false,
91+
pluginFactortyConfigs: [{ identifier: "plugin1", overrideFunctions: false, overrideApis: true }],
92+
expectedFunctionOrder: ["override", "original"],
93+
expectedApiOrder: ["plugin1", "original"],
94+
},
95+
{
96+
overrideFunctions: false,
97+
overrideApis: true,
98+
pluginFactortyConfigs: [{ identifier: "plugin1", overrideFunctions: true, overrideApis: false }],
99+
expectedFunctionOrder: ["plugin1", "original"],
100+
expectedApiOrder: ["override", "original"],
101+
},
102+
{
103+
overrideFunctions: false,
104+
overrideApis: true,
105+
pluginFactortyConfigs: [{ identifier: "plugin1", overrideFunctions: false, overrideApis: true }],
106+
expectedFunctionOrder: ["original"],
107+
expectedApiOrder: ["override", "plugin1", "original"],
108+
},
96109
// Multiple plugins with overrides
97-
[
98-
true,
99-
false,
100-
[
110+
{
111+
overrideFunctions: true,
112+
overrideApis: false,
113+
pluginFactortyConfigs: [
101114
{ identifier: "plugin1", overrideFunctions: true, overrideApis: false },
102115
{ identifier: "plugin2", overrideFunctions: true, overrideApis: false },
103116
],
104-
["override", "plugin2", "plugin1", "original"],
105-
["original"],
106-
],
107-
[
108-
false,
109-
true,
110-
[
117+
expectedFunctionOrder: ["override", "plugin2", "plugin1", "original"],
118+
expectedApiOrder: ["original"],
119+
},
120+
{
121+
overrideFunctions: false,
122+
overrideApis: true,
123+
pluginFactortyConfigs: [
111124
{ identifier: "plugin1", overrideFunctions: false, overrideApis: true },
112125
{ identifier: "plugin2", overrideFunctions: false, overrideApis: true },
113126
],
114-
["original"],
115-
["override", "plugin2", "plugin1", "original"],
116-
],
127+
expectedFunctionOrder: ["original"],
128+
expectedApiOrder: ["override", "plugin2", "plugin1", "original"],
129+
},
117130
// Multiple plugins, all overrides
118-
[
119-
true,
120-
true,
121-
[
131+
{
132+
overrideFunctions: true,
133+
overrideApis: true,
134+
pluginFactortyConfigs: [
122135
{ identifier: "plugin1", overrideFunctions: true, overrideApis: true },
123136
{ identifier: "plugin2", overrideFunctions: true, overrideApis: true },
124137
],
125-
["override", "plugin2", "plugin1", "original"],
126-
["override", "plugin2", "plugin1", "original"],
127-
],
138+
expectedFunctionOrder: ["override", "plugin2", "plugin1", "original"],
139+
expectedApiOrder: ["override", "plugin2", "plugin1", "original"],
140+
},
128141
];
129142

130143
overrideTestParams.forEach(
131-
([fnOverride, apiOverride, pluginFactortyConfigs, expectedFnStack, expectedApiStack]) => {
144+
({ overrideFunctions, overrideApis, pluginFactortyConfigs, expectedFunctionOrder, expectedApiOrder }) => {
132145
const plugins = pluginFactortyConfigs.map((pfc) => pluginFactory(pfc));
133146

134147
const testNameList = [
135-
`fnOverride=${fnOverride}`,
136-
`apiOverride=${apiOverride}`,
148+
`fnOverride=${overrideFunctions}`,
149+
`apiOverride=${overrideApis}`,
137150
`plugins=[${plugins.map((p) => p.id).join(",")}]`,
138151
...pluginFactortyConfigs.map((pfc) => {
139152
const overrideList: string[] = [];
@@ -151,7 +164,9 @@ describe("Plugin Tests", () => {
151164
it(testName, () => {
152165
STExpress.init({
153166
...partialSupertokensConfig,
154-
recipeList: [recipeFactory({ overrideFunctions: fnOverride, overrideApis: apiOverride })],
167+
recipeList: [
168+
recipeFactory({ overrideFunctions: overrideFunctions, overrideApis: overrideApis }),
169+
],
155170
experimental: {
156171
plugins,
157172
},
@@ -161,8 +176,8 @@ describe("Plugin Tests", () => {
161176
const recipeOutput = recipe.recipeInterfaceImpl.signIn("msg", []);
162177
const apiOutput = recipe.apiImpl.signInPOST("msg", []);
163178

164-
assert.deepEqual(recipeOutput.stack, expectedFnStack);
165-
assert.deepEqual(apiOutput.stack, expectedApiStack);
179+
assert.deepEqual(recipeOutput.stack, expectedFunctionOrder);
180+
assert.deepEqual(apiOutput.stack, expectedApiOrder);
166181
assert.deepEqual(recipeOutput.message, "msg");
167182
assert.deepEqual(apiOutput.message, "msg");
168183
});
@@ -171,54 +186,65 @@ describe("Plugin Tests", () => {
171186
});
172187

173188
describe("Dependencies and Init", () => {
174-
// [Plugins, Function Order, API Order, Init Order, Test Name]
175-
const dependencyTestParams: [SuperTokensPlugin[], string[], string[], string[], string][] = [
176-
[[Plugin1, Plugin1], ["plugin1", "original"], ["original"], ["plugin1"], "1,1 => 1"],
177-
[
178-
[Plugin1, Plugin2],
179-
["plugin2", "plugin1", "original"],
180-
["original"],
181-
["plugin1", "plugin2"],
182-
"1,2 => 2,1",
183-
],
184-
[
185-
[Plugin3Dep1],
186-
["plugin3dep1", "plugin1", "original"],
187-
["original"],
188-
["plugin1", "plugin3dep1"],
189-
"3->1 => 3,1",
190-
],
191-
[
192-
[Plugin3Dep2_1],
193-
["plugin3dep2_1", "plugin1", "plugin2", "original"],
194-
["original"],
195-
["plugin2", "plugin1", "plugin3dep2_1"],
196-
"3->(2,1) => 3,2,1",
197-
],
198-
[
199-
[Plugin3Dep1, Plugin4Dep2],
200-
["plugin4dep2", "plugin2", "plugin3dep1", "plugin1", "original"],
201-
["original"],
202-
["plugin1", "plugin3dep1", "plugin2", "plugin4dep2"],
203-
"3->1,4->2 => 4,2,3,1",
204-
],
205-
[
206-
[Plugin4Dep3__2_1],
207-
["plugin4dep3__2_1", "plugin3dep2_1", "plugin1", "plugin2", "original"],
208-
["original"],
209-
["plugin2", "plugin1", "plugin3dep2_1", "plugin4dep3__2_1"],
210-
"4->3->(2,1) => 4,3,1,2",
211-
],
212-
[
213-
[Plugin3Dep1, Plugin4Dep1],
214-
["plugin4dep1", "plugin3dep1", "plugin1", "original"],
215-
["original"],
216-
["plugin1", "plugin3dep1", "plugin4dep1"],
217-
"3->1,4->1 => 4,3,1",
218-
],
189+
const dependencyTestParams: {
190+
plugins: SuperTokensPlugin[];
191+
expectedFnOrder: string[];
192+
expectedApiOrder: string[];
193+
expectedInitOrder: string[];
194+
testName: string;
195+
}[] = [
196+
{
197+
plugins: [Plugin1, Plugin1],
198+
expectedFnOrder: ["plugin1", "original"],
199+
expectedApiOrder: ["original"],
200+
expectedInitOrder: ["plugin1"],
201+
testName: "1,1 => 1",
202+
},
203+
{
204+
plugins: [Plugin1, Plugin2],
205+
expectedFnOrder: ["plugin2", "plugin1", "original"],
206+
expectedApiOrder: ["original"],
207+
expectedInitOrder: ["plugin1", "plugin2"],
208+
testName: "1,2 => 2,1",
209+
},
210+
{
211+
plugins: [Plugin3Dep1],
212+
expectedFnOrder: ["plugin3dep1", "plugin1", "original"],
213+
expectedApiOrder: ["original"],
214+
expectedInitOrder: ["plugin1", "plugin3dep1"],
215+
testName: "3->1 => 3,1",
216+
},
217+
{
218+
plugins: [Plugin3Dep2_1],
219+
expectedFnOrder: ["plugin3dep2_1", "plugin1", "plugin2", "original"],
220+
expectedApiOrder: ["original"],
221+
expectedInitOrder: ["plugin2", "plugin1", "plugin3dep2_1"],
222+
testName: "3->(2,1) => 3,2,1",
223+
},
224+
{
225+
plugins: [Plugin3Dep1, Plugin4Dep2],
226+
expectedFnOrder: ["plugin4dep2", "plugin2", "plugin3dep1", "plugin1", "original"],
227+
expectedApiOrder: ["original"],
228+
expectedInitOrder: ["plugin1", "plugin3dep1", "plugin2", "plugin4dep2"],
229+
testName: "3->1,4->2 => 4,2,3,1",
230+
},
231+
{
232+
plugins: [Plugin4Dep3__2_1],
233+
expectedFnOrder: ["plugin4dep3__2_1", "plugin3dep2_1", "plugin1", "plugin2", "original"],
234+
expectedApiOrder: ["original"],
235+
expectedInitOrder: ["plugin2", "plugin1", "plugin3dep2_1", "plugin4dep3__2_1"],
236+
testName: "4->3->(2,1) => 4,3,1,2",
237+
},
238+
{
239+
plugins: [Plugin3Dep1, Plugin4Dep1],
240+
expectedFnOrder: ["plugin4dep1", "plugin3dep1", "plugin1", "original"],
241+
expectedApiOrder: ["original"],
242+
expectedInitOrder: ["plugin1", "plugin3dep1", "plugin4dep1"],
243+
testName: "3->1,4->1 => 4,3,1",
244+
},
219245
];
220246

221-
dependencyTestParams.forEach(([plugins, expectedFnOrder, expectedApiOrder, expectedInitOrder, testName]) => {
247+
dependencyTestParams.forEach(({ plugins, expectedFnOrder, expectedApiOrder, expectedInitOrder, testName }) => {
222248
it(testName, () => {
223249
STExpress.init({
224250
...partialSupertokensConfig,

0 commit comments

Comments
 (0)