home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 October / maximum-cd-2009-10.iso / DiscContents / Firefox Setup 3.5.exe / nonlocalized / chrome / toolkit.jar / content / global / url-classifier / unittests.xul
Encoding:
Extensible Markup Language  |  2009-06-24  |  7.0 KB  |  189 lines

  1. <?xml version="1.0"?>
  2. <window id="PROT_unittest"
  3.         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 
  4.         onload="onProtUnittestLoad();"
  5.         title="prot unittests">
  6.  
  7. <script><![CDATA[
  8.   const Cc = Components.classes;
  9.   const Ci = Components.interfaces;
  10.  
  11.   function G_Debug(zone, s) {
  12.     var label = document.createElement('label');
  13.     var txt = "[" + zone + "] " + s;
  14.     label.appendChild(document.createTextNode(txt));
  15.  
  16.     document.documentElement.appendChild(label);
  17.   }
  18.   
  19.   function G_Assert(zone, cond, msg) {
  20.     if (!cond) {
  21.       G_Debug(zone, msg);
  22.       throw msg;
  23.     }
  24.   }
  25.  
  26.   function ProtectionTableTests() {
  27.     var z = "trtable UNITTEST";
  28.  
  29.     G_Debug(z, "Starting");  
  30.  
  31.     var url = "http://www.yahoo.com?foo=bar";
  32.     var url2 = "http://168.188.99.26/.secure/www.ebay.com/";
  33.     var urlTable = Cc['@mozilla.org/url-classifier/table;1?type=url']
  34.                      .createInstance(Ci.nsIUrlClassifierTable);
  35.     urlTable.insert(url, "1");
  36.     urlTable.insert(url2, "1");
  37.     G_Assert(z, urlTable.exists(url), "URL lookups broken");
  38.     G_Assert(z, !urlTable.exists("about:config"), "about:config breaks domlook");
  39.     G_Assert(z, urlTable.exists(url2), "URL lookups broken");
  40.     G_Assert(z, urlTable.exists("http://%31%36%38%2e%31%38%38%2e%39%39%2e%32%36/%2E%73%65%63%75%72%65/%77%77%77%2E%65%62%61%79%2E%63%6F%6D/") == true,
  41.              "URL Canonicalization broken");
  42.     G_Assert(z, urlTable.count == 2, 'urlTable: wrong size');
  43.  
  44.     var dom1 = "bar.com";
  45.     var dom2 = "amazon.co.uk";
  46.     var dom3 = "127.0.0.1";
  47.     var domainTable = Cc['@mozilla.org/url-classifier/table;1?type=domain']
  48.                         .createInstance(Ci.nsIUrlClassifierTable);
  49.     domainTable.insert(dom1, "1");
  50.     domainTable.insert(dom2, "1");
  51.     domainTable.insert(dom3, "1");
  52.     G_Assert(z, domainTable.exists("http://www.bar.com/?zaz=asdf#url"),
  53.              "Domain lookups broken (single dot)");
  54.     G_Assert(z, domainTable.exists("http://www.amazon.co.uk/?z=af#url"),
  55.              "Domain lookups broken (two dots)");
  56.     G_Assert(z, domainTable.exists("http://127.0.0.1/?z=af#url"),
  57.              "Domain lookups broken (IP)");
  58.     G_Assert(z, domainTable.count == 3, 'domainTable: wrong size');
  59.  
  60.     var site1 = "google.com/safebrowsing/";
  61.     var site2 = "www.foo.bar/";
  62.     var site3 = "127.0.0.1/";
  63.     var siteTable = Cc['@mozilla.org/url-classifier/table;1?type=site']
  64.                       .createInstance(Ci.nsIUrlClassifierTable);
  65.     siteTable.insert(site1, "1");
  66.     siteTable.insert(site2, "1");
  67.     siteTable.insert(site3, "1");
  68.     G_Assert(z, siteTable.exists("http://www.google.com/safebrowsing/1.php"),
  69.              "Site lookups broken - reducing");
  70.     G_Assert(z, siteTable.exists("http://www.foo.bar/some/random/path"),
  71.              "Site lookups broken - fqdn");
  72.     G_Assert(z, siteTable.exists("http://127.0.0.1/something?hello=1"),
  73.              "Site lookups broken - IP");
  74.     G_Assert(z, !siteTable.exists("http://www.google.com/search/"),
  75.              "Site lookups broken - overreaching");
  76.     G_Assert(z, siteTable.count == 3, 'siteTable: wrong size');
  77.  
  78.     var url1 = "http://poseidon.marinet.gr/~eleni/eBay/index.php";
  79.     var domainHash = "01844755C8143C4579BB28DD59C23747";
  80.     var enchashTable = Cc['@mozilla.org/url-classifier/table;1?type=enchash']
  81.                          .createInstance(Ci.nsIUrlClassifierTable);
  82.     enchashTable.insert(domainHash, "bGtEQWJuMl9FA3Kl5RiXMpgFU8nDJl9J0hXjUck9+"
  83.                                     + "mMUQwAN6llf0gJeY5DIPPc2f+a8MSBFJN17ANGJ"
  84.                                     + "Zl5oZVsQfSW4i12rlScsx4tweZAE");
  85.     G_Assert(z, enchashTable.exists(url1), 'enchash lookup failed');
  86.     G_Assert(z, !enchashTable.exists(url1 + '/foo'),
  87.              "enchash lookup broken - overreaching");
  88.     G_Assert(z, enchashTable.count == 1, 'enchashTable: wrong size');
  89.  
  90.     // TODO: test replace
  91.     G_Debug(z, "PASSED");
  92.   }
  93.   
  94.   function ProtectionListManagerTests() {
  95.     var z = "listmanager UNITTEST";
  96.     G_Debug(z, "Starting");
  97.  
  98.     // test lookup and register
  99.     var listManagerInst = Cc["@mozilla.org/url-classifier/listmanager;1"]
  100.                             .createInstance(Ci.nsIUrlListManager);
  101.     var listName = 'foo-bar-url';
  102.     listManagerInst.registerTable(listName, false);
  103.     listManagerInst.safeInsert(listName, 'test', '1');
  104.     G_Assert(z, listManagerInst.safeExists(listName, 'test'),
  105.                 'insert/exist failed');
  106.  
  107.     // test serialization
  108.     var baseName = (new Date().getTime()) + ".tmp";
  109.     var tempDir = Cc["@mozilla.org/file/directory_service;1"]
  110.                   .getService(Ci.nsIProperties)
  111.                   .get("TmpD", Ci.nsILocalFile);
  112.     tempDir.append(baseName);
  113.     tempDir.createUnique(tempDir.DIRECTORY_TYPE, 0744);
  114.  
  115.     var listManager = Cc["@mozilla.org/url-classifier/listmanager;1"]
  116.                         .getService(Ci.nsIUrlListManager);
  117.     listManager.setAppDir(tempDir);
  118.     
  119.     var data = "";
  120.  
  121.     var set1Name = "test1-foo-domain";
  122.     data += "[" + set1Name + " 1.2]\n";
  123.     var set1 = {};
  124.     for (var i = 0; i < 10; i++) {
  125.       set1["http://" + i + ".com"] = 1;
  126.       data += "+" + i + ".com\t1\n";
  127.     }
  128.  
  129.     data += "\n";
  130.     var set2Name = "test2-foo-domain";
  131.     // TODO must have blank line
  132.     data += "\n[" + set2Name + " 1.7]\n";
  133.     var set2 = {};
  134.     for (var i = 0; i < 5; i++) {
  135.       set2["http://" + i + ".com"] = 1;
  136.       data += "+" + i + ".com\t1\n";
  137.     }
  138.  
  139.     function deserialized(tablesKnown, tablesData) {
  140.       listManager.wrappedJSObject.dataReady(tablesKnown, tablesData);
  141.  
  142.       var file = tempDir.clone();
  143.       file.append(set1Name + ".sst");
  144.       G_Assert(z, file.exists() && file.isFile() && file.isReadable(), 
  145.                "Failed to write out: " + file.path);
  146.       
  147.       file = tempDir.clone();
  148.       file.append(set2Name + ".sst");
  149.       G_Assert(z, file.exists() && file.isFile() && file.isReadable(), 
  150.                "Failed to write out: " + file.path);
  151.       
  152.       // now try to read them back from disk
  153.       listManager = Cc["@mozilla.org/url-classifier/listmanager;1"]
  154.                        .createInstance(Ci.nsIUrlListManager);
  155.       listManager.setAppDir(tempDir);
  156.       var tables = [ set1Name, set2Name ];
  157.       listManager.enableUpdate(set1Name);
  158.       listManager.enableUpdate(set2Name);
  159.       listManager.wrappedJSObject.readDataFiles();
  160.       
  161.       // assert that the values match
  162.       for (var prop in set1) {
  163.         G_Assert(z, 
  164.                  listManager.wrappedJSObject.tablesData[set1Name].exists(prop), 
  165.                  "Couldn't find member " + prop + "of set1 from disk.");
  166.       }
  167.       
  168.       for (var prop in set2) {
  169.         G_Assert(z,
  170.                  listManager.wrappedJSObject.tablesData[set2Name].exists(prop), 
  171.                  "Couldn't find member " + prop + "of set2 from disk.");
  172.       }
  173.  
  174.       tempDir.remove(true);
  175.       
  176.       G_Debug(z, "PASSED");
  177.     };
  178.  
  179.     // Use the unwrapped object for the unittest
  180.     listManager.wrappedJSObject.deserialize_(data, deserialized);
  181.   }
  182.  
  183.   function onProtUnittestLoad() {
  184.     ProtectionTableTests();
  185.     ProtectionListManagerTests();
  186.   }
  187. ]]></script>
  188. </window>
  189.