|
| 1 | +require("commonjs-utils/settings").admins = ["user"];// must do this first |
| 2 | +var MockRequest = require("jack/mock").MockRequest, |
| 3 | + mock = new MockRequest(require("pintura").app), |
| 4 | + assert = require("assert"), |
| 5 | + TestStore = require("perstore/stores").DefaultStore(); |
| 6 | + var config = require("pintura").config; |
| 7 | + var parse = require("commonjs-utils/json-ext").parse; |
| 8 | +TestStore.setPath("TestStore"); |
| 9 | + |
| 10 | + |
| 11 | +var emptyApp = function(){ |
| 12 | + return { |
| 13 | + headers:{}, |
| 14 | + status:200, |
| 15 | + body:[] |
| 16 | + } |
| 17 | +}; |
| 18 | +var lowerAppMock = new MockRequest(require("jsgi/context").SetContext({}, |
| 19 | + // We detect if the request could have been forged from another site |
| 20 | + require("jsgi/csrf").CSRFDetect(emptyApp))); |
| 21 | + // Support handling various cross-site request mechanisms like JSONP, window.name, CS-XHR |
| 22 | +var lowerApp2Mock = new MockRequest(require("jsgi/xsite").CrossSite( |
| 23 | + // Handle header emulation through query parameters (useful for cross-site and links) |
| 24 | + require("jsgi/http-params").HttpParams(emptyApp))); |
| 25 | + // Handle HEAD requests |
| 26 | +var lowerApp3Mock = new MockRequest(require("jsgi/head").Head( |
| 27 | + // Add some useful headers |
| 28 | + require("jsgi/pintura-headers").PinturaHeaders(config.serverName, |
| 29 | + // Handle conditional requests |
| 30 | + require("jsgi/conditional").Conditional(true,emptyApp |
| 31 | + )))); |
| 32 | +var middleAppMock = new MockRequest(require("jsgi/media").Serialize(config.mediaSelector, |
| 33 | + // Handle errors that are thrown, converting to appropriate status codes |
| 34 | + require("jsgi/error").ErrorHandler( |
| 35 | + // Handle transactions |
| 36 | + require("perstore/jsgi/transactional").Transactional( |
| 37 | + // Handle sessions |
| 38 | + require("jsgi/session").Session({}, |
| 39 | + // Do authentication |
| 40 | + require("jsgi/auth").Authentication(config.security, emptyApp)))))); |
| 41 | +var upperAppMock = new MockRequest(require("jsgi/media").Deserialize(config.mediaSelector, |
| 42 | + // Non-REST custom handlers |
| 43 | + require('jsgi/routes').Routes(config.customRoutes, |
| 44 | + // Add and retrieve metadata from objects |
| 45 | + exports.directApp = require("jsgi/metadata").Metadata( |
| 46 | + // Final REST handler |
| 47 | + require("jsgi/rest-store").RestStore(config))))); |
| 48 | +var emptyMock = new MockRequest(emptyApp); |
| 49 | +config.getDataModel = function(){ |
| 50 | + return { |
| 51 | + TestStore: TestStore |
| 52 | + }; |
| 53 | +}; |
| 54 | +exports.testUpperApp = function(){ |
| 55 | + var body = upperAppMock.GET("/TestStore/", { |
| 56 | + }).body; |
| 57 | + assert.equal(body.length, 45); |
| 58 | +}; |
| 59 | +exports.testMiddleAppWithAuth = function(){ |
| 60 | + var body = middleAppMock.GET("/TestStore/", { |
| 61 | + headers:{ |
| 62 | + authorization: "user:pass" |
| 63 | + } |
| 64 | + }).body; |
| 65 | + assert.equal(body.length, 2); |
| 66 | +}; |
| 67 | +exports.testMiddleApp = function(){ |
| 68 | + var body = middleAppMock.GET("/TestStore/", { |
| 69 | + }).body; |
| 70 | + assert.equal(body.length, 2); |
| 71 | +}; |
| 72 | +exports.testLowerApp = function(){ |
| 73 | + var body = lowerAppMock.GET("/TestStore/", { |
| 74 | + }).body; |
| 75 | + assert.equal(body.length, 0); |
| 76 | +}; |
| 77 | +exports.testLowerApp2 = function(){ |
| 78 | + var body = lowerApp2Mock.GET("/TestStore/", { |
| 79 | + }).body; |
| 80 | + assert.equal(body.length, 0); |
| 81 | +}; |
| 82 | +exports.testLowerApp3 = function(){ |
| 83 | + var body = lowerApp3Mock.GET("/TestStore/", { |
| 84 | + }).body; |
| 85 | + assert.equal(body.length, 0); |
| 86 | +}; |
| 87 | +exports.testEmpty = function(){ |
| 88 | + var body = emptyMock.GET("/TestStore/", { |
| 89 | + headers:{ |
| 90 | + authorization: "user:pass" |
| 91 | + } |
| 92 | + }).body; |
| 93 | + assert.equal(body.length, 0); |
| 94 | +}; |
| 95 | + |
| 96 | +if (require.main === module) |
| 97 | + require("patr/runner").run(exports); |
| 98 | + |
0 commit comments