Revised jsonp unit tests and added a test for when the jsonp option is set to false.

This commit is contained in:
jaubourg 2011-01-16 05:27:16 +01:00
parent 158fa822de
commit 0e93b2e24c

View file

@ -1114,286 +1114,249 @@ test("jQuery.getScript(String, Function) - no callback", function() {
}); });
}); });
test("jQuery.ajax() - JSONP, Local", function() { jQuery.each( [ "Same Domain", "Cross Domain" ] , function( crossDomain , label ) {
expect(14);
var count = 0; test("jQuery.ajax() - JSONP, " + label, function() {
function plus(){ if ( ++count == 14 ) start(); } expect(16);
stop(); var count = 0;
function plus(){ if ( ++count == 16 ) start(); }
jQuery.ajax({ stop();
url: "data/jsonp.php",
dataType: "jsonp",
success: function(data){
ok( data.data, "JSON results returned (GET, no callback)" );
plus();
},
error: function(data){
ok( false, "Ajax error JSON (GET, no callback)" );
plus();
}
});
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php?callback=?", url: "data/jsonp.php",
dataType: "jsonp", dataType: "jsonp",
success: function(data){ crossDomain: crossDomain,
ok( data.data, "JSON results returned (GET, url callback)" ); success: function(data){
plus(); ok( data.data, "JSON results returned (GET, no callback)" );
}, plus();
error: function(data){ },
ok( false, "Ajax error JSON (GET, url callback)" ); error: function(data){
plus(); ok( false, "Ajax error JSON (GET, no callback)" );
} plus();
}); }
});
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php", url: "data/jsonp.php?callback=?",
dataType: "jsonp", dataType: "jsonp",
data: "callback=?", crossDomain: crossDomain,
success: function(data){ success: function(data){
ok( data.data, "JSON results returned (GET, data callback)" ); ok( data.data, "JSON results returned (GET, url callback)" );
plus(); plus();
}, },
error: function(data){ error: function(data){
ok( false, "Ajax error JSON (GET, data callback)" ); ok( false, "Ajax error JSON (GET, url callback)" );
plus(); plus();
} }
}); });
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php?callback=??", url: "data/jsonp.php",
dataType: "jsonp", dataType: "jsonp",
success: function(data){ crossDomain: crossDomain,
ok( data.data, "JSON results returned (GET, url context-free callback)" ); data: "callback=?",
plus(); success: function(data){
}, ok( data.data, "JSON results returned (GET, data callback)" );
error: function(data){ plus();
ok( false, "Ajax error JSON (GET, url context-free callback)" ); },
plus(); error: function(data){
} ok( false, "Ajax error JSON (GET, data callback)" );
}); plus();
}
});
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php", url: "data/jsonp.php?callback=??",
dataType: "jsonp", dataType: "jsonp",
data: "callback=??", crossDomain: crossDomain,
success: function(data){ success: function(data){
ok( data.data, "JSON results returned (GET, data context-free callback)" ); ok( data.data, "JSON results returned (GET, url context-free callback)" );
plus(); plus();
}, },
error: function(data){ error: function(data){
ok( false, "Ajax error JSON (GET, data context-free callback)" ); ok( false, "Ajax error JSON (GET, url context-free callback)" );
plus(); plus();
} }
}); });
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php/??", url: "data/jsonp.php",
dataType: "jsonp", dataType: "jsonp",
success: function(data){ crossDomain: crossDomain,
ok( data.data, "JSON results returned (GET, REST-like)" ); data: "callback=??",
plus(); success: function(data){
}, ok( data.data, "JSON results returned (GET, data context-free callback)" );
error: function(data){ plus();
ok( false, "Ajax error JSON (GET, REST-like)" ); },
plus(); error: function(data){
} ok( false, "Ajax error JSON (GET, data context-free callback)" );
}); plus();
}
});
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php/???json=1", url: "data/jsonp.php/??",
dataType: "jsonp", dataType: "jsonp",
success: function(data){ crossDomain: crossDomain,
strictEqual( jQuery.type(data), "array", "JSON results returned (GET, REST-like with param)" ); success: function(data){
plus(); ok( data.data, "JSON results returned (GET, REST-like)" );
}, plus();
error: function(data){ },
ok( false, "Ajax error JSON (GET, REST-like with param)" ); error: function(data){
plus(); ok( false, "Ajax error JSON (GET, REST-like)" );
} plus();
}); }
});
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php", url: "data/jsonp.php/???json=1",
dataType: "jsonp", dataType: "jsonp",
data: { crossDomain: crossDomain,
callback: "?" success: function(data){
}, strictEqual( jQuery.type(data), "array", "JSON results returned (GET, REST-like with param)" );
success: function(data){ plus();
ok( data.data, "JSON results returned (GET, processed data callback)" ); },
plus(); error: function(data){
}, ok( false, "Ajax error JSON (GET, REST-like with param)" );
error: function(data){ plus();
ok( false, "Ajax error JSON (GET, processed data callback)" ); }
plus(); });
}
});
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php", url: "data/jsonp.php",
dataType: "jsonp", dataType: "jsonp",
jsonp: "callback", crossDomain: crossDomain,
success: function(data){ data: {
ok( data.data, "JSON results returned (GET, data obj callback)" ); callback: "?"
plus(); },
}, success: function(data){
error: function(data){ ok( data.data, "JSON results returned (GET, processed data callback)" );
ok( false, "Ajax error JSON (GET, data obj callback)" ); plus();
plus(); },
} error: function(data){
}); ok( false, "Ajax error JSON (GET, processed data callback)" );
plus();
}
});
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php", url: "data/jsonp.php",
dataType: "jsonp", dataType: "jsonp",
jsonpCallback: "jsonpResults", crossDomain: crossDomain,
success: function(data){ jsonp: "callback",
ok( data.data, "JSON results returned (GET, custom callback name)" ); success: function(data){
plus(); ok( data.data, "JSON results returned (GET, data obj callback)" );
}, plus();
error: function(data){ },
ok( false, "Ajax error JSON (GET, custom callback name)" ); error: function(data){
plus(); ok( false, "Ajax error JSON (GET, data obj callback)" );
} plus();
}); }
});
jQuery.ajax({ window.jsonpResults = function(data) {
type: "POST", ok( data.data, "JSON results returned (GET, custom callback function)" );
url: "data/jsonp.php", window.jsonpResults = undefined;
dataType: "jsonp",
success: function(data){
ok( data.data, "JSON results returned (POST, no callback)" );
plus(); plus();
}, };
error: function(data){
ok( false, "Ajax error JSON (GET, data obj callback)" );
plus();
}
});
jQuery.ajax({ jQuery.ajax({
type: "POST", url: "data/jsonp.php",
url: "data/jsonp.php", dataType: "jsonp",
data: "callback=?", crossDomain: crossDomain,
dataType: "jsonp", jsonpCallback: "jsonpResults",
success: function(data){ success: function(data){
ok( data.data, "JSON results returned (POST, data callback)" ); ok( data.data, "JSON results returned (GET, custom callback name)" );
plus(); plus();
}, },
error: function(data){ error: function(data){
ok( false, "Ajax error JSON (POST, data callback)" ); ok( false, "Ajax error JSON (GET, custom callback name)" );
plus(); plus();
} }
}); });
jQuery.ajax({ jQuery.ajax({
type: "POST", type: "POST",
url: "data/jsonp.php", url: "data/jsonp.php",
jsonp: "callback", dataType: "jsonp",
dataType: "jsonp", crossDomain: crossDomain,
success: function(data){ success: function(data){
ok( data.data, "JSON results returned (POST, data obj callback)" ); ok( data.data, "JSON results returned (POST, no callback)" );
plus(); plus();
}, },
error: function(data){ error: function(data){
ok( false, "Ajax error JSON (POST, data obj callback)" ); ok( false, "Ajax error JSON (GET, data obj callback)" );
plus(); plus();
} }
}); });
//#7578 jQuery.ajax({
jQuery.ajax({ type: "POST",
url: "data/jsonp.php", url: "data/jsonp.php",
dataType: "jsonp", data: "callback=?",
beforeSend: function(){ dataType: "jsonp",
strictEqual( this.cache, false, "cache must be false on JSON request" ); crossDomain: crossDomain,
plus(); success: function(data){
return false; ok( data.data, "JSON results returned (POST, data callback)" );
} plus();
}); },
}); error: function(data){
ok( false, "Ajax error JSON (POST, data callback)" );
plus();
}
});
test("jQuery.ajax() - JSONP - Custom JSONP Callback", function() { jQuery.ajax({
expect(1); type: "POST",
stop(); url: "data/jsonp.php",
jsonp: "callback",
dataType: "jsonp",
crossDomain: crossDomain,
success: function(data){
ok( data.data, "JSON results returned (POST, data obj callback)" );
plus();
},
error: function(data){
ok( false, "Ajax error JSON (POST, data obj callback)" );
plus();
}
});
window.jsonpResults = function(data) { //#7578
ok( data.data, "JSON results returned (GET, custom callback function)" ); jQuery.ajax({
window.jsonpResults = undefined; url: "data/jsonp.php",
start(); dataType: "jsonp",
}; crossDomain: crossDomain,
beforeSend: function(){
strictEqual( this.cache, false, "cache must be false on JSON request" );
plus();
return false;
}
});
jQuery.ajax({ jQuery.ajax({
url: "data/jsonp.php", url: "data/jsonp.php?callback=XXX",
dataType: "jsonp", dataType: "jsonp",
jsonpCallback: "jsonpResults" jsonp: false,
}); jsonpCallback: "XXX",
}); crossDomain: crossDomain,
beforeSend: function() {
console.log( this.url );
},
success: function(data){
console.log(data);
ok( data.data, "JSON results returned (GET, custom callback name with no url manipulation)" );
plus();
},
error: function(data){
console.log(data);
ok( false, "Ajax error JSON (GET, custom callback name with no url manipulation)" );
plus();
}
});
test("jQuery.ajax() - JSONP, Remote", function() {
expect(4);
var count = 0;
function plus(){ if ( ++count == 4 ) start(); }
var base = window.location.href.replace(/[^\/]*$/, "");
stop();
jQuery.ajax({
url: base + "data/jsonp.php",
dataType: "jsonp",
success: function(data){
ok( data.data, "JSON results returned (GET, no callback)" );
plus();
},
error: function(data){
ok( false, "Ajax error JSON (GET, no callback)" );
plus();
}
});
jQuery.ajax({
url: base + "data/jsonp.php?callback=?",
dataType: "jsonp",
success: function(data){
ok( data.data, "JSON results returned (GET, url callback)" );
plus();
},
error: function(data){
ok( false, "Ajax error JSON (GET, url callback)" );
plus();
}
});
jQuery.ajax({
url: base + "data/jsonp.php",
dataType: "jsonp",
data: "callback=?",
success: function(data){
ok( data.data, "JSON results returned (GET, data callback)" );
plus();
},
error: function(data){
ok( false, "Ajax error JSON (GET, data callback)" );
plus();
}
});
jQuery.ajax({
url: base + "data/jsonp.php",
dataType: "jsonp",
jsonp: "callback",
success: function(data){
ok( data.data, "JSON results returned (GET, data obj callback)" );
plus();
},
error: function(data){
ok( false, "Ajax error JSON (GET, data obj callback)" );
plus();
}
}); });
}); });