mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 03:51:07 +08:00
TESTS: Use Pretender in test mode for more flexible server responses
This commit is contained in:
52
test/javascripts/helpers/create-pretender.js.es6
Normal file
52
test/javascripts/helpers/create-pretender.js.es6
Normal file
@ -0,0 +1,52 @@
|
||||
/* global console */
|
||||
|
||||
function parsePostData(query) {
|
||||
var result = {};
|
||||
query.split("&").forEach(function(part) {
|
||||
var item = part.split("=");
|
||||
result[item[0]] = decodeURIComponent(item[1]);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
function json(code, obj) {
|
||||
if (typeof code === "object") {
|
||||
obj = code;
|
||||
code = 200;
|
||||
}
|
||||
return [code, {"Content-Type": "application/json"}, JSON.stringify(obj)];
|
||||
}
|
||||
|
||||
export default function() {
|
||||
var server = new Pretender(function() {
|
||||
this.post('/session', function(request) {
|
||||
var data = parsePostData(request.requestBody);
|
||||
|
||||
if (data.password === 'correct') {
|
||||
return json({username: 'eviltrout'});
|
||||
}
|
||||
return json(400, {error: 'invalid login'});
|
||||
});
|
||||
|
||||
this.get('/users/hp.json', function() {
|
||||
return json({"value":"32faff1b1ef1ac3","challenge":"61a3de0ccf086fb9604b76e884d75801"});
|
||||
});
|
||||
|
||||
this.get('/users/check_username', function(request) {
|
||||
if (request.queryParams.username === 'taken') {
|
||||
return json({available: false, suggestion: 'nottaken'});
|
||||
}
|
||||
return json({available: true});
|
||||
});
|
||||
|
||||
this.post('/users', function(request) {
|
||||
return json({success: true});
|
||||
});
|
||||
});
|
||||
|
||||
server.unhandledRequest = function(verb, path) {
|
||||
console.error('Unhandled request in test environment: ' + path + ' (' + verb + ')');
|
||||
};
|
||||
|
||||
return server;
|
||||
}
|
Reference in New Issue
Block a user