define([ '../util', 'intern/dojo/node!querystring' ], function (util, qs) { function xml() { return { status: 200, headers: { 'Content-Type': 'text/xml' }, body: [ '\n', '\n', '\n', 'FOO\n', 'BAR\n', 'BAZ\n', 'BAT\n', '\n', 'bar){ /* whatever */ }\n', '}\n', '}\n', ']]>\n', 'something else\n', '' ] }; } function html(data) { return { status: 200, headers: { 'Content-Type': 'text/html' }, body: [ '', '', '', data, '', '' ] }; } function textarea(data) { return ''; } return function (request) { var promise = new util.Promise(function (resolve) { function respond(data) { if (request.query.type === 'html') { data = '

SUCCESSFUL HTML response

'; } else { if (request.query.type === 'json') { data = JSON.stringify({ method: request.method, query: request.query, payload: data }); } else if (request.query.type === 'javascript') { data = 'window.iframeTestingFunction = function(){ return 42; };'; } else if (request.query.text) { data = request.query.text; } else { data = 'iframe succeeded'; } data = textarea(data); } resolve(html(data)); } if (request.query.type === 'xml') { resolve(xml()); return; } if (request.data) { request.data.then(respond); return; } if (request.method !== 'GET') { request.body.join().then(function (data) { data = qs.parse(data); respond(data); }); return; } respond(); }); var milliseconds = request.query.delay; if (milliseconds) { milliseconds = parseInt(milliseconds, 10); promise = util.delay(promise, milliseconds); } return promise; }; });