summaryrefslogtreecommitdiffstats
path: root/security/manager/ssl/tests/unit/test_sss_eviction.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /security/manager/ssl/tests/unit/test_sss_eviction.js
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'security/manager/ssl/tests/unit/test_sss_eviction.js')
-rw-r--r--security/manager/ssl/tests/unit/test_sss_eviction.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/security/manager/ssl/tests/unit/test_sss_eviction.js b/security/manager/ssl/tests/unit/test_sss_eviction.js
new file mode 100644
index 0000000000..6e1e70075f
--- /dev/null
+++ b/security/manager/ssl/tests/unit/test_sss_eviction.js
@@ -0,0 +1,41 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+// The purpose of this test is to check that a frequently visited site
+// will not be evicted over an infrequently visited site.
+function run_test() {
+ let stateFile = do_get_profile();
+ stateFile.append(SSS_STATE_FILE_NAME);
+ // Assuming we're working with a clean slate, the file shouldn't exist
+ // until we create it.
+ ok(!stateFile.exists());
+ let outputStream = FileUtils.openFileOutputStream(stateFile);
+ let now = new Date().getTime();
+ let key = "frequentlyused.example.com";
+ let value = `${now + 100000},1,0`;
+ append_line_to_data_storage_file(outputStream, 4, 1000, key, value);
+ outputStream.close();
+ let siteSecurityService = Cc["@mozilla.org/ssservice;1"].getService(
+ Ci.nsISiteSecurityService
+ );
+ notEqual(siteSecurityService, null);
+ // isSecureURI blocks until the backing data is read.
+ ok(
+ siteSecurityService.isSecureURI(
+ Services.io.newURI("https://frequentlyused.example.com")
+ )
+ );
+ // The storage limit is currently 2048, so this should cause evictions.
+ for (let i = 0; i < 3000; i++) {
+ let uri = Services.io.newURI("http://bad" + i + ".example.com");
+ siteSecurityService.processHeader(uri, "max-age=1000");
+ }
+ // The frequently used entry should not be evicted.
+ ok(
+ siteSecurityService.isSecureURI(
+ Services.io.newURI("https://frequentlyused.example.com")
+ )
+ );
+}