@@ -222,15 +222,16 @@ test("addMiddleware: Add middleware with rapperCallback parameter", async (t) =>
222222 dependencies : "ponies"
223223 }
224224 } ) ;
225- const serveIndexModule = middlewareRepository . getMiddleware ( "serveIndex" ) ;
225+ const serveIndexMiddlewareInfo = middlewareRepository . getMiddleware ( "serveIndex" ) ;
226226
227227 const moduleStub = sinon . stub ( ) . returns ( "🍅" ) ;
228228 const wrapperCallbackStub = sinon . stub ( ) . returns ( moduleStub ) ;
229229 await middlewareManager . addMiddleware ( "serveIndex" , { // Add middleware to test for
230230 wrapperCallback : wrapperCallbackStub
231231 } ) ;
232232 t . deepEqual ( wrapperCallbackStub . callCount , 1 , "Wrapper callback got called once" ) ;
233- t . is ( wrapperCallbackStub . getCall ( 0 ) . args [ 0 ] , serveIndexModule , "Wrapper callback got called with correct module" ) ;
233+ t . deepEqual ( wrapperCallbackStub . getCall ( 0 ) . args [ 0 ] , serveIndexMiddlewareInfo ,
234+ "Wrapper callback got called with correct module" ) ;
234235 t . deepEqual ( moduleStub . callCount , 1 , "Wrapper callback got called once" ) ;
235236 t . deepEqual ( moduleStub . getCall ( 0 ) . args [ 0 ] . resources , {
236237 all : "I" ,
@@ -514,11 +515,20 @@ test("addCustomMiddleware: wrapperCallback", async (t) => {
514515
515516 const wrapperCallback = addMiddlewareStub . getCall ( 0 ) . args [ 1 ] . wrapperCallback ;
516517 const middlewareModuleStub = sinon . stub ( ) . returns ( "ok" ) ;
517- const middlewareWrapper = wrapperCallback ( middlewareModuleStub ) ;
518+ const middlewareModuleInfo = {
519+ middleware : middlewareModuleStub ,
520+ specVersion : "1.1"
521+ } ;
522+ const middlewareWrapper = wrapperCallback ( middlewareModuleInfo ) ;
523+ const middlewareUtil = {
524+ getInterface : sinon . stub ( ) . returns ( "interfacedMiddlewareUtil" )
525+ } ;
518526 const res = middlewareWrapper ( {
519- resources : "resources"
527+ resources : "resources" ,
528+ middlewareUtil
520529 } ) ;
521530 t . deepEqual ( res , "ok" , "Wrapper callback returned expected value" ) ;
531+ t . is ( middlewareUtil . getInterface . callCount , 0 , "middlewareUtil.getInterface has not been called" ) ;
522532 t . deepEqual ( middlewareModuleStub . callCount , 1 , "Middleware module got called once" ) ;
523533 t . deepEqual ( middlewareModuleStub . getCall ( 0 ) . args [ 0 ] , {
524534 resources : "resources" ,
@@ -529,3 +539,62 @@ test("addCustomMiddleware: wrapperCallback", async (t) => {
529539 }
530540 } , "Middleware module got called with correct arguments" ) ;
531541} ) ;
542+
543+ test ( "addCustomMiddleware: wrapperCallback provides middlewareUtil to custom middleware" , async ( t ) => {
544+ const project = {
545+ metadata : {
546+ name : "my project"
547+ } ,
548+ server : {
549+ customMiddleware : [ {
550+ name : "my custom middleware A" ,
551+ beforeMiddleware : "cors" ,
552+ configuration : {
553+ "🦊" : "🐰"
554+ }
555+ } ]
556+ }
557+ } ;
558+ const middlewareManager = new MiddlewareManager ( {
559+ tree : project ,
560+ resources : {
561+ all : "I" ,
562+ rootProject : "like" ,
563+ dependencies : "ponies"
564+ }
565+ } ) ;
566+ const addMiddlewareStub = sinon . stub ( middlewareManager , "addMiddleware" ) . resolves ( ) ;
567+ await middlewareManager . addCustomMiddleware ( ) ;
568+
569+ t . deepEqual ( addMiddlewareStub . callCount , 1 , "addMiddleware was called once" ) ;
570+
571+ const wrapperCallback = addMiddlewareStub . getCall ( 0 ) . args [ 1 ] . wrapperCallback ;
572+ const middlewareModuleStub = sinon . stub ( ) . returns ( "ok" ) ;
573+ const middlewareModuleInfo = {
574+ middleware : middlewareModuleStub ,
575+ specVersion : "2.0"
576+ } ;
577+ const middlewareWrapper = wrapperCallback ( middlewareModuleInfo ) ;
578+ const middlewareUtil = {
579+ getInterface : sinon . stub ( ) . returns ( "interfacedMiddlewareUtil" )
580+ } ;
581+ const res = middlewareWrapper ( {
582+ resources : "resources" ,
583+ middlewareUtil
584+ } ) ;
585+
586+ t . deepEqual ( res , "ok" , "Wrapper callback returned expected value" ) ;
587+ t . is ( middlewareUtil . getInterface . callCount , 1 , "middlewareUtil.getInterface got called once" ) ;
588+ t . deepEqual ( middlewareUtil . getInterface . getCall ( 0 ) . args [ 0 ] , "2.0" ,
589+ "middlewareUtil.getInterface got called correct arguments" ) ;
590+ t . deepEqual ( middlewareModuleStub . callCount , 1 , "Middleware module got called once" ) ;
591+ t . deepEqual ( middlewareModuleStub . getCall ( 0 ) . args [ 0 ] , {
592+ resources : "resources" ,
593+ options : {
594+ configuration : {
595+ "🦊" : "🐰"
596+ }
597+ } ,
598+ middlewareUtil : "interfacedMiddlewareUtil"
599+ } , "Middleware module got called with correct arguments" ) ;
600+ } ) ;
0 commit comments