From 445d663d39a6643ead5c95424adfd42bee8f5b1c Mon Sep 17 00:00:00 2001
From: Thomas Rientjes <synzvato@protonmail.com>
Date: Tue, 5 Apr 2016 18:00:43 +0200
Subject: [PATCH] Resolve #61 by writing mapping exceptions

---
 lib/mappings.js               |  2 ++
 lib/request-analyzer.js       |  2 +-
 test/test-request-analyzer.js | 15 +++++++++++++++
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/lib/mappings.js b/lib/mappings.js
index 7ff31ad..3dd1172 100644
--- a/lib/mappings.js
+++ b/lib/mappings.js
@@ -83,6 +83,7 @@ var mappings = {
     // Microsoft Ajax CDN
     'ajax.aspnetcdn.com': {
         '/ajax/': {
+            'jQuery/jquery-{version}.': resources.jQuery,
             'jquery/jquery-{version}.': resources.jQuery,
             'modernizr/modernizr-{version}.': resources.modernizr
         }
@@ -90,6 +91,7 @@ var mappings = {
     // Microsoft Ajax CDN [Deprecated]
     'ajax.microsoft.com': {
         '/ajax/': {
+            'jQuery/jquery-{version}.': resources.jQuery,
             'jquery/jquery-{version}.': resources.jQuery,
             'modernizr/modernizr-{version}.': resources.modernizr
         }
diff --git a/lib/request-analyzer.js b/lib/request-analyzer.js
index 30ce6aa..feef4c2 100644
--- a/lib/request-analyzer.js
+++ b/lib/request-analyzer.js
@@ -130,7 +130,7 @@ function _findLocalTarget(resourceMappings, basePath, channelPath) {
 
     var resourcePath, versionNumber, resourcePattern;
 
-    resourcePath = channelPath.replace(basePath, '').toLowerCase();
+    resourcePath = channelPath.replace(basePath, '');
 
     versionNumber = resourcePath.match(VERSION_EXPRESSION);
     resourcePattern = resourcePath.replace(versionNumber, VERSION_PLACEHOLDER);
diff --git a/test/test-request-analyzer.js b/test/test-request-analyzer.js
index aaf9e46..82e1fc1 100644
--- a/test/test-request-analyzer.js
+++ b/test/test-request-analyzer.js
@@ -128,6 +128,11 @@ exports['test webfont debug library'] = function (assert) {
     assert.equal(target.path, localPaths.webfont[0], 'Target was determined.');
 };
 
+exports['test case sensitivity rules'] = function (assert) {
+    var target = requestAnalyzer.getLocalTarget('lib.sinaapp.com', '/js/WebFont/1.0.19/webfont_debug.js');
+    assert.equal(target, false, 'Case sensitivity rules were properly enforced.');
+};
+
 // Google Hosted Libraries
 
 exports['test angular on google hosted libraries'] = function (assert) {
@@ -187,6 +192,11 @@ exports['test jquery on microsoft ajax cdn'] = function (assert) {
     assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
 };
 
+exports['test lowercase jquery notation 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.');
@@ -197,6 +207,11 @@ exports['test jquery on old microsoft ajax cdn'] = function (assert) {
     assert.equal(target.path, localPaths.jQuery[1], 'Target was determined.');
 };
 
+exports['test lowercase jquery notation 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.');
-- 
GitLab