f659f13d619daf68f78e85c84c5926f56bfe1439Dav GlassYUI.add('requests-tests', function(Y) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass var suite = new Y.Test.Suite('IO Requests Suite');
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass suite.add(new Y.Test.Case({
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass name: 'HTTP GET',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass 'testGET': function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass var t = this;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.handler = function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.areSame(200, t.status);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
0a7df5b558190d35dd32d49c8ccdb9dadc7d0529Dav Glass Y.io(Y.IO.URLS.get, {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass on: { success: function(i, o, a) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.status = o.status;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.resume(t.handler);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass });
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.wait(null, 1000);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass },
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass 'testGETWithData': function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass var t = this, cb;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.handler = function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.areSame('hello=world&foo=bar', t.response);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass cb = {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass on: { success: function(id, o, a) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.response = o.responseText;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.resume(t.handler);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
0a7df5b558190d35dd32d49c8ccdb9dadc7d0529Dav Glass Y.io(Y.IO.URLS.get + '?hello=world&foo=bar', cb);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.wait(null, 1000);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }));
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass suite.add(new Y.Test.Case({
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass name: 'HTTP DELETE',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass 'testDELETEWithData': function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass var t = this, cb;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.handler = function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.areSame('hello=world&foo=bar', t.response);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass cb = {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass method: 'DELETE',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass on: { success: function(id, o, a) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.response = o.responseText;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.resume(t.handler);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
0a7df5b558190d35dd32d49c8ccdb9dadc7d0529Dav Glass Y.io(Y.IO.URLS.delete + '?hello=world&foo=bar', cb);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.wait(null, 1000);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }));
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass suite.add(new Y.Test.Case({
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass name: 'HTTP HEAD',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass 'testHEAD': function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass var t = this;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.handler = function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass if (t.headers) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass // IE, Safari, Opera all return HTTP response headers
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.isString(t.headers);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass else {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass // Firefox 3 does not return anything except an HTTP
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass // status of 0.
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.areSame(0, t.status);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
0a7df5b558190d35dd32d49c8ccdb9dadc7d0529Dav Glass Y.io(Y.IO.URLS.get, {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass method: 'HEAD',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass on: { complete: function(i, o, a) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.status = o.status;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.headers = o.getAllResponseHeaders();
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.resume(t.handler);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass });
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.wait(null, 1000);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }));
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass // This test fails in Opera.
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass suite.add(new Y.Test.Case({
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass name: 'HTTP OPTIONS',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass 'testOPTIONS': function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass var t = this;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.handler = function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass if (t.headers) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.areSame(200, t.status);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.isString(t.headers);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
0a7df5b558190d35dd32d49c8ccdb9dadc7d0529Dav Glass Y.io(Y.IO.URLS.get, {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass method: 'OPTIONS',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass on: { complete: function(i, o, a) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.status = o.status;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.headers = o.getAllResponseHeaders();
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.resume(t.handler);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass });
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.wait(null, 1000);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }));
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass suite.add(new Y.Test.Case({
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass name: "HTTP POST",
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass 'testPOST': function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass var t = this;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.handler = function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.areSame('world&bar', t.response, 'POST message and response do not match.');
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
0a7df5b558190d35dd32d49c8ccdb9dadc7d0529Dav Glass Y.io(Y.IO.URLS.post, {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass method: 'POST',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass data: 'hello=world&foo=bar',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass on: { success: function(i, o, a) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.response = o.responseText;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.resume(t.handler);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass });
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.wait(null, 1000);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass },
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass 'testPOSTWithNoData': function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass var t = this;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.handler = function() {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.areSame(200, t.status);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Assert.areSame(0, t.response, 'POST message and response do not match.');
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass };
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
0a7df5b558190d35dd32d49c8ccdb9dadc7d0529Dav Glass Y.io(Y.IO.URLS.post, {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass method: 'POST',
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass on: { success: function(i, o, a) {
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.response =+ o.responseText;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.status = o.status;
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass t.resume(t.handler);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass });
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass this.wait(null, 1000);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass }));
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass Y.Test.Runner.add(suite);
f659f13d619daf68f78e85c84c5926f56bfe1439Dav Glass});