141 lines
5.1 KiB
JavaScript
141 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');
|
|
}
|
|
}
|
|
})
|
|
});
|