From b2bd0517fb310129acad3568b844e5c06b2dc2d0 Mon Sep 17 00:00:00 2001
From: Thomas Rientjes <synzvato@protonmail.com>
Date: Fri, 4 Dec 2015 05:14:53 +0100
Subject: [PATCH] Write tests for CDN mappings

---
 test/test-main.js             |  12 -
 test/test-request-analyzer.js | 511 ++++++++++++++++++++++++++++++++++
 2 files changed, 511 insertions(+), 12 deletions(-)
 delete mode 100644 test/test-main.js
 create mode 100644 test/test-request-analyzer.js

diff --git a/test/test-main.js b/test/test-main.js
deleted file mode 100644
index 147f98a..0000000
--- a/test/test-main.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var main = require("./main");
-
-exports["test main"] = function(assert) {
-  assert.pass("Unit test running!");
-};
-
-exports["test main async"] = function(assert, done) {
-  assert.pass("async Unit test running!");
-  done();
-};
-
-require("sdk/test").run(exports);
diff --git a/test/test-request-analyzer.js b/test/test-request-analyzer.js
new file mode 100644
index 0000000..5e97583
--- /dev/null
+++ b/test/test-request-analyzer.js
@@ -0,0 +1,511 @@
+var requestAnalyzer = require("../lib/request-analyzer");
+
+var localPaths = {
+    angular: 'resources/angularjs/1.2.19/angular.min.js.dec',
+    backbone: [
+        'resources/backbone.js/0.9.2/backbone-min.js.dec',
+        'resources/backbone.js/1.1.2/backbone-min.js.dec'
+    ],
+    dojo: 'resources/dojo/1.8.3/dojo/dojo.js.dec',
+    ember: [
+        'resources/ember.js/1.1.0/ember.min.js.dec',
+        'resources/ember.js/2.1.0/ember.min.js.dec'
+    ],
+    extCore: 'resources/ext-core/3.1.0/ext-core.js.dec',
+    jQuery: [
+        'resources/jquery/1.10.2/jquery.min.js.dec',
+        'resources/jquery/1.11.1/jquery.min.js.dec'
+    ],
+    jQueryUI: 'resources/jqueryui/1.10.2/jquery-ui.min.js.dec',
+    modernizr: 'resources/modernizr/2.6.2/modernizr.min.js.dec',
+    mootools: 'resources/mootools/1.4.5/mootools-yui-compressed.js.dec',
+    prototypeJS: 'resources/prototype/1.6.1.0/prototype.js.dec',
+    scriptaculous: 'resources/scriptaculous/1.9.0/scriptaculous.js.dec',
+    swfobject: 'resources/swfobject/2.2/swfobject.js.dec',
+    underscore: [
+        'resources/underscore.js/1.3.3/underscore-min.js.dec',
+        'resources/underscore.js/1.4.4/underscore-min.js.dec',
+        'resources/underscore.js/1.6.0/underscore-min.js.dec'
+    ],
+    webfont: [
+        'resources/webfont/1.0.19/webfont.js.dec',
+        'resources/webfont/1.5.18/webfont.js.dec'
+    ]
+};
+
+/**
+ * Generic Tests
+ */
+
+exports['test regular resource'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/jquery/2.1.4/jquery.js');
+    assert.equal(target.path, 'resources/jquery/2.1.4/jquery.min.js.dec', 'Target found for regular resource.');
+};
+
+exports['test minified resource'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('code.jquery.com', '/jquery-2.1.4.min.js');
+    assert.equal(target.path, 'resources/jquery/2.1.4/jquery.min.js.dec', 'Target found for minified resource.');
+};
+
+exports['test resource shorthand'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/jquery/1/jquery.js');
+    assert.equal(target.path, 'resources/jquery/1.11.1/jquery.min.js.dec', 'Target found for resource shorthand.');
+};
+
+exports['test precision of mapping expression'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('code.jquery.com', '/jquery-module-1.2.1.js');
+    assert.equal(target, false, 'Resource was not mistaken for similar one.');
+};
+
+exports['test ignoring jquery-ui stylesheet'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/jqueryui/1.0.0/jquery-ui.css');
+    assert.equal(target, false, 'jQuery UI\'s stylesheet was ignored.');
+};
+
+exports['test dojo uncompressed library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/dojo/1.8.3/dojo/dojo.uncompressed.js');
+    assert.equal(target.path, localPaths.dojo, 'Target was determined.');
+};
+
+exports['test ext-core debug library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/ext-core/3.1.0/ext-core-debug.js');
+    assert.equal(target.path, localPaths.extCore, 'Target was determined.');
+};
+
+exports['test webfont debug library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/webfont/1.0.19/webfont_debug.js');
+    assert.equal(target.path, localPaths.webfont[0], 'Target was determined.');
+};
+
+/**
+ * Google Hosted Libraries
+ */
+
+exports['test angular on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/angularjs/1.2.19/angular.min.js');
+    assert.equal(target.path, localPaths.angular, 'Target was determined.');
+};
+
+exports['test dojo on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/dojo/1.8.3/dojo/dojo.js');
+    assert.equal(target.path, localPaths.dojo, 'Target was determined.');
+};
+
+exports['test ext-core on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/ext-core/3.1.0/ext-core.js');
+    assert.equal(target.path, localPaths.extCore, 'Target was determined.');
+};
+
+exports['test jquery on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/jquery/1.11.1/jquery.min.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test jquery-ui on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js');
+    assert.equal(target.path, localPaths.jQueryUI, 'Target was determined.');
+};
+
+exports['test mootools on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js');
+    assert.equal(target.path, localPaths.mootools, 'Target was determined.');
+};
+
+exports['test prototype on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/prototype/1.6.1.0/prototype.js');
+    assert.equal(target.path, localPaths.prototypeJS, 'Target was determined.');
+};
+
+exports['test scriptaculous on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/scriptaculous/1.9.0/scriptaculous.js');
+    assert.equal(target.path, localPaths.scriptaculous, 'Target was determined.');
+};
+
+exports['test swfobject on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/swfobject/2.2/swfobject.js');
+    assert.equal(target.path, localPaths.swfobject, 'Target was determined.');
+};
+
+exports['test webfont on google hosted libraries'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.googleapis.com', '/ajax/libs/webfont/1.5.18/webfont.js');
+    assert.equal(target.path, localPaths.webfont[1], 'Target was determined.');
+};
+
+/**
+ * Microsoft Ajax CDN
+ */
+
+exports['test jquery on microsoft ajax cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.aspnetcdn.com', '/ajax/jQuery/jquery-1.11.1.min.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test modernizr on microsoft ajax cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.aspnetcdn.com', '/ajax/modernizr/modernizr-2.6.2.js');
+    assert.equal(target.path, localPaths.modernizr, 'Target was determined.');
+};
+
+exports['test jquery on old microsoft ajax cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.microsoft.com', '/ajax/jQuery/jquery-1.11.1.min.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test modernizr on old microsoft ajax cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('ajax.microsoft.com', '/ajax/modernizr/modernizr-2.6.2.js');
+    assert.equal(target.path, localPaths.modernizr, 'Target was determined.');
+};
+
+/**
+ * CDNJS (Cloudflare)
+ */
+
+exports['test angular on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/angular.js/1.2.19/angular.min.js');
+    assert.equal(target.path, localPaths.angular, 'Target was determined.');
+};
+
+exports['test backbone on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/backbone.js/0.9.2/backbone-min.js');
+    assert.equal(target.path, localPaths.backbone[0], 'Target was determined.');
+};
+
+exports['test dojo on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/dojo/1.8.3/dojo.js');
+    assert.equal(target.path, localPaths.dojo, 'Target was determined.');
+};
+
+exports['test ember on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/ember.js/2.1.0/ember.min.js');
+    assert.equal(target.path, localPaths.ember[1], 'Target was determined.');
+};
+
+exports['test ext-core on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/ext-core/3.1.0/ext-core.min.js');
+    assert.equal(target.path, localPaths.extCore, 'Target was determined.');
+};
+
+exports['test jquery on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/jquery/1.11.1/jquery.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test jquery-ui on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js');
+    assert.equal(target.path, localPaths.jQueryUI, 'Target was determined.');
+};
+
+exports['test modernizr on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/modernizr/2.6.2/modernizr.min.js');
+    assert.equal(target.path, localPaths.modernizr, 'Target was determined.');
+};
+
+exports['test mootools on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/mootools/1.4.5/mootools-core-full-nocompat.js');
+    assert.equal(target.path, localPaths.mootools, 'Target was determined.');
+};
+
+exports['test scriptaculous on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/scriptaculous/1.9.0/scriptaculous.min.js');
+    assert.equal(target.path, localPaths.scriptaculous, 'Target was determined.');
+};
+
+exports['test swfobject on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/swfobject/2.2/swfobject.js');
+    assert.equal(target.path, localPaths.swfobject, 'Target was determined.');
+};
+
+exports['test underscore on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/underscore.js/1.6.0/underscore-min.js');
+    assert.equal(target.path, localPaths.underscore[2], 'Target was determined.');
+};
+
+exports['test webfont on cdnjs'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdnjs.cloudflare.com', '/ajax/libs/webfont/1.5.18/webfontloader.js');
+    assert.equal(target.path, localPaths.webfont[1], 'Target was determined.');
+};
+
+/**
+ * jQuery CDN (MaxCDN)
+ */
+
+exports['test jquery on jquery cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('code.jquery.com', '/jquery-1.11.1.min.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test jquery-ui on jquery cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('code.jquery.com', '/ui/1.10.2/jquery-ui.min.js');
+    assert.equal(target.path, localPaths.jQueryUI, 'Target was determined.');
+};
+
+/**
+ * jsDelivr (MaxCDN)
+ */
+
+exports['test angular on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/angularjs/1.2.19/angular.min.js');
+    assert.equal(target.path, localPaths.angular, 'Target was determined.');
+};
+
+exports['test backbone on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/backbonejs/1.1.2/backbone-min.js');
+    assert.equal(target.path, localPaths.backbone[1], 'Target was determined.');
+};
+
+exports['test dojo on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/dojo/1.8.3/dojo.js');
+    assert.equal(target.path, localPaths.dojo, 'Target was determined.');
+};
+
+exports['test ember on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/emberjs/2.1.0/ember.min.js');
+    assert.equal(target.path, localPaths.ember[1], 'Target was determined.');
+};
+
+exports['test jquery on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/jquery/1.11.1/jquery.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test jquery-ui on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/jquery.ui/1.10.2/jquery-ui.min.js');
+    assert.equal(target.path, localPaths.jQueryUI, 'Target was determined.');
+};
+
+exports['test mootools on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/mootools/1.4.5/mootools-core-nocompat.min.js');
+    assert.equal(target.path, localPaths.mootools, 'Target was determined.');
+};
+
+exports['test swfobject on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/swfobject/2.2/swfobject.js');
+    assert.equal(target.path, localPaths.swfobject, 'Target was determined.');
+};
+
+exports['test underscore on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/underscorejs/1.6.0/underscore-min.js');
+    assert.equal(target.path, localPaths.underscore[2], 'Target was determined.');
+};
+
+exports['test webfont on jsdelivr'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('cdn.jsdelivr.net', '/webfontloader/1.5.18/webfontloader.js');
+    assert.equal(target.path, localPaths.webfont[1], 'Target was determined.');
+};
+
+/**
+ * Yandex CDN
+ */
+
+exports['test angular on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/angularjs/1.2.19/angular.min.js');
+    assert.equal(target.path, localPaths.angular, 'Target was determined.');
+};
+
+exports['test backbone on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/backbone/1.1.2/backbone-min.js');
+    assert.equal(target.path, localPaths.backbone[1], 'Target was determined.');
+};
+
+exports['test dojo on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/dojo/1.8.3/dojo/dojo.js');
+    assert.equal(target.path, localPaths.dojo, 'Target was determined.');
+};
+
+exports['test ext-core on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/ext-core/3.1.0/ext-core.min.js');
+    assert.equal(target.path, localPaths.extCore, 'Target was determined.');
+};
+
+exports['test jquery on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/jquery/1.11.1/jquery.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test jquery-ui on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/jquery-ui/1.10.2/jquery-ui.min.js');
+    assert.equal(target.path, localPaths.jQueryUI, 'Target was determined.');
+};
+
+exports['test modernizr on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/modernizr/2.6.2/modernizr.min.js');
+    assert.equal(target.path, localPaths.modernizr, 'Target was determined.');
+};
+
+exports['test prototype on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/prototype/1.6.1.0/prototype.min.js');
+    assert.equal(target.path, localPaths.prototypeJS, 'Target was determined.');
+};
+
+exports['test scriptaculous on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/scriptaculous/1.9.0/scriptaculous.js');
+    assert.equal(target.path, localPaths.scriptaculous, 'Target was determined.');
+};
+
+exports['test swfobject on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/swfobject/2.2/swfobject.min.js');
+    assert.equal(target.path, localPaths.swfobject, 'Target was determined.');
+};
+
+exports['test underscore on yandex cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('yandex.st', '/underscore/1.6.0/underscore-min.js');
+    assert.equal(target.path, localPaths.underscore[2], 'Target was determined.');
+};
+
+/**
+ * Baidu CDN
+ */
+
+exports['test backbone on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/backbone/0.9.2/backbone-min.js');
+    assert.equal(target.path, localPaths.backbone[0], 'Target was determined.');
+};
+
+exports['test dojo on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/dojo/1.8.3/dojo.js');
+    assert.equal(target.path, localPaths.dojo, 'Target was determined.');
+};
+
+exports['test ext-core on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/ext-core/3.1.0/ext-core.js');
+    assert.equal(target.path, localPaths.extCore, 'Target was determined.');
+};
+
+exports['test jquery on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/jquery/1.11.1/jquery.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test jquery-ui on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/jqueryui/1.10.2/jquery-ui.min.js');
+    assert.equal(target.path, localPaths.jQueryUI, 'Target was determined.');
+};
+
+exports['test mootools on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/mootools/1.4.5/mootools-yui-compressed.js');
+    assert.equal(target.path, localPaths.mootools, 'Target was determined.');
+};
+
+exports['test prototype on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/prototype/1.6.1.0/prototype.js');
+    assert.equal(target.path, localPaths.prototypeJS, 'Target was determined.');
+};
+
+exports['test scriptaculous on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/scriptaculous/1.9.0/scriptaculous.js');
+    assert.equal(target.path, localPaths.scriptaculous, 'Target was determined.');
+};
+
+exports['test swfobject on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/swfobject/2.2/swfobject.js');
+    assert.equal(target.path, localPaths.swfobject, 'Target was determined.');
+};
+
+exports['test underscore on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/underscore/1.3.3/underscore-min.js');
+    assert.equal(target.path, localPaths.underscore[0], 'Target was determined.');
+};
+
+exports['test webfont on baidu cdn'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('libs.baidu.com', '/webfont/1.0.19/webfont.js');
+    assert.equal(target.path, localPaths.webfont[0], 'Target was determined.');
+};
+
+/**
+ * Sina Public Resources
+ */
+
+exports['test angular on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/angular.js/angular-1.2.19/angular.min.js');
+    assert.equal(target.path, localPaths.angular, 'Target was determined.');
+};
+
+exports['test backbone on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/backbone/0.9.2/backbone.min.js');
+    assert.equal(target.path, localPaths.backbone[0], 'Target was determined.');
+};
+
+exports['test dojo on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/dojo/1.8.3/dojo.js');
+    assert.equal(target.path, localPaths.dojo, 'Target was determined.');
+};
+
+exports['test ext-core on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/ext-core/3.1.0/ext-core.js');
+    assert.equal(target.path, localPaths.extCore, 'Target was determined.');
+};
+
+exports['test jquery on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/jquery/1.11.1/jquery.js');
+    assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
+};
+
+exports['test jquery-ui on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/jquery-ui/1.10.2/jquery-ui.min.js');
+    assert.equal(target.path, localPaths.jQueryUI, 'Target was determined.');
+};
+
+exports['test mootools on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/mootools/1.4.5/mootools.min.js');
+    assert.equal(target.path, localPaths.mootools, 'Target was determined.');
+};
+
+exports['test prototype on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/prototype/1.6.1.0/prototype.min.js');
+    assert.equal(target.path, localPaths.prototypeJS, 'Target was determined.');
+};
+
+exports['test scriptaculous on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/scriptaculous/1.9.0/scriptaculous.min.js');
+    assert.equal(target.path, localPaths.scriptaculous, 'Target was determined.');
+};
+
+exports['test swfobject on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/swfobject/2.2/swfobject.js');
+    assert.equal(target.path, localPaths.swfobject, 'Target was determined.');
+};
+
+exports['test underscore on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/underscore/1.4.4/underscore-min.js');
+    assert.equal(target.path, localPaths.underscore[1], 'Target was determined.');
+};
+
+exports['test webfont on sina public resources'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/webfont/1.0.19/webfont.js');
+    assert.equal(target.path, localPaths.webfont[0], 'Target was determined.');
+};
+
+/**
+ * UpYun Library
+ */
+
+exports['test dojo on upyun library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('upcdn.b0.upaiyun.com', '/libs/dojo/dojo-1.8.3.min.js');
+    assert.equal(target.path, localPaths.dojo, 'Target was determined.');
+};
+
+exports['test ember on upyun library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('upcdn.b0.upaiyun.com', '/libs/emberjs/emberjs-1.1.0.min.js');
+    assert.equal(target.path, localPaths.ember[0], 'Target was determined.');
+};
+
+exports['test jquery on upyun library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('upcdn.b0.upaiyun.com', '/libs/jquery/jquery-1.10.2.min.js');
+    assert.equal(target.path, localPaths.jQuery[0], 'Target was determined.');
+};
+
+exports['test jquery-ui on upyun library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('upcdn.b0.upaiyun.com', '/libs/jqueryui/jquery.ui-1.10.2.min.js');
+    assert.equal(target.path, localPaths.jQueryUI, 'Target was determined.');
+};
+
+exports['test modernizr on upyun library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('upcdn.b0.upaiyun.com', '/libs/modernizr/modernizr-2.6.2.min.js');
+    assert.equal(target.path, localPaths.modernizr, 'Target was determined.');
+};
+
+exports['test mootools on upyun library'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('upcdn.b0.upaiyun.com', '/libs/mootoolscore/mootools.core-1.4.5.min.js');
+    assert.equal(target.path, localPaths.mootools, 'Target was determined.');
+};
+
+require("sdk/test").run(exports);
-- 
GitLab