1- import { printPath , setupST , startST , stopST , killAllST , cleanST , resetAll } from "../utils" ;
1+ import { resetAll } from "../utils" ;
22import {
33 apiOverrideFactory ,
44 functionOverrideFactory ,
@@ -19,10 +19,6 @@ import SuperTokens from "../../lib/build/supertokens";
1919import { PluginRouteHandler , UserContext } from "../../lib/build/types" ;
2020import { DummyRequest , DummyResponse } from "./misc" ;
2121import { 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
2723function 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