debian-mirror-gitlab/snowplow-javascript-tracker/tests/nonfunctional/proxies.js

142 lines
5.1 KiB
JavaScript

/*
* JavaScript tracker for Snowplow: tests/nonfunctional/proxies.js
*
* Significant portions copyright 2010 Anthon Pang. Remainder copyright
* 2012-2014 Snowplow Analytics Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Anthon Pang nor Snowplow Analytics Ltd nor the
* names of their contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
define([
"intern!object",
"intern/chai!assert",
"intern/dojo/node!../../src/js/lib/proxies"
], function(registerSuite, assert, proxies) {
this.document = {
links: [{href: "http://www.example.com/"}],
body: {
children: [{
children: [{
children: [{
children: [{
children: [{
children: [{
innerHTML: 'You have reached the cached page for'
}]
}]
}]
}]
}]
}]
}
};
registerSuite({
"name": "Proxies test",
"Host name is not a special case": function() {
var
initialLocationArray = ["normalhostname", "href", "http://referrer.com"],
fixedupLocationArray = proxies.fixupUrl.apply(null, initialLocationArray),
expectedLocationArray = fixedupLocationArray,
i;
for (i = 0; i < 3; i++) {
assert.strictEqual(fixedupLocationArray[i], expectedLocationArray[i], 'Except in special cases, fixupUrl changes nothing');
}
},
"Host name = 'translate.googleusercontent.com'": function() {
var
initialLocationArray = [
"translate.googleusercontent.com",
"http://translate.googleusercontent.com/translate?hl=en&sl=fr&u=http:www.francais.fr/path",
""],
fixedupLocationArray = proxies.fixupUrl.apply(null, initialLocationArray),
expectedLocationArray = [
"www.francais.fr",
"http:www.francais.fr/path",
"http://translate.googleusercontent.com/translate?hl=en&sl=fr&u=http:www.francais.fr/path"],
i;
for (i = 0; i < 3; i++) {
assert.strictEqual(fixedupLocationArray[i], expectedLocationArray[i], 'Get the URL for the untranslated page from the querystring and make the translated page the referrer');
}
},
"Host name = 'ccj.bingj.com'": function() {
var
initialLocationArray = [
"cc.bingj.com",
"http://cc.bingj.com/cache.aspx?q=example.com&d=4870936571937837&mkt=en-GB&setlang=en-GB&w=QyOPD1fo3C2nC9sXMLmUUs81Jt78MYIp",
"http://referrer.com"],
fixedupLocationArray = proxies.fixupUrl.apply(null, initialLocationArray),
expectedLocationArray = [ "www.example.com", "http://www.example.com/", "http://referrer.com" ],
i;
for (i = 0; i < 3; i++) {
assert.strictEqual(fixedupLocationArray[i], expectedLocationArray[i], 'On a page cached by Bing, get the original URL from the first link');
}
},
"Host name = 'webcache.googleusercontent.com'": function() {
var
initialLocationArray = [
"webcache.googleusercontent.com",
"http://webcache.googleusercontent.com/search?q=cache:http://example.com/#fragment",
"http://referrer.com"],
fixedupLocationArray = proxies.fixupUrl.apply(null, initialLocationArray),
expectedLocationArray = [ "www.example.com", "http://www.example.com/", "http://referrer.com" ],
i;
for (i = 0; i < 3; i++) {
assert.strictEqual(fixedupLocationArray[i], expectedLocationArray[i], 'On a page cached by Google, get the original URL from the first link');
}
},
"Host name is an IP address": function() {
var
initialLocationArray = [
"98.139.21.31",
"http://98.139.21.31/search/srpcache",
"http://referrer.com"],
fixedupLocationArray = proxies.fixupUrl.apply(null, initialLocationArray),
expectedLocationArray = [ "www.example.com", "http://www.example.com/", "http://referrer.com" ],
i;
for (i = 0; i < 3; i++) {
assert.strictEqual(fixedupLocationArray[i], expectedLocationArray[i], 'On a page cached by Yahoo, get the original URL from the first link');
}
}
})
});