Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7506)

Unified Diff: chrome/test/data/webui/certificate_viewer_dialog_test.js

Issue 7861024: Adds testing infrastructure to web_ui_browsertest to support testing HtmlDialogs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move class implementation to test/data dir and use continueTest for async tests. Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webui/certificate_viewer_dialog_test.js
diff --git a/chrome/test/data/webui/certificate_viewer_dialog_test.js b/chrome/test/data/webui/certificate_viewer_dialog_test.js
new file mode 100644
index 0000000000000000000000000000000000000000..fd6df5dccf8174f36b4f7f21414af8344b2616f7
--- /dev/null
+++ b/chrome/test/data/webui/certificate_viewer_dialog_test.js
@@ -0,0 +1,117 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * Test fixture for generated tests.
+ * @extends {testing.Test}
+ */
+function CertificateViewerUITest() {};
+
+CertificateViewerUITest.prototype = {
+ __proto__: testing.Test.prototype,
+
+ /**
+ * Define the C++ fixture class and include it.
+ * @type {?string}
+ * @override
+ */
+ typedefCppFixture: 'CertificateViewerUITest',
+};
+
+/**
+ * Test fixture for asynchronous tests.
+ * @extends {CertificateViewerUITest}
+ */
+function CertificateViewerUITestAsync() {};
+
+CertificateViewerUITestAsync.prototype = {
+ __proto__: CertificateViewerUITest.prototype,
+
+ /** @inheritDoc */
+ isAsync: true,
+};
+
+// Include the bulk of c++ code.
+GEN('#include "chrome/test/data/webui/certificate_viewer_ui_test-inl.h"');
+GEN('');
+
+// Constructors and destructors must be provided in .cc to prevent clang errors.
+GEN('CertificateViewerUITest::CertificateViewerUITest() {}');
+GEN('CertificateViewerUITest::~CertificateViewerUITest() {}');
+
+/**
+ * Tests that the dialog opened to the correct URL.
+ */
+TEST_F('CertificateViewerUITest', 'testDialogURL',
+ function() {
+ assertEquals(chrome.expectedUrl, window.location.href);
+});
+
+/**
+ * Tests for the correct common name in the test certificate.
+ */
+TEST_F('CertificateViewerUITest', 'testCN',
+ function() {
+ assertEquals('www.google.com', $('issued-cn').textContent);
+});
+
+/**
+ * Test the details pane of the certificate viewer. This verifies that a
+ * certificate in the chain can be selected to view the fields. And that fields
+ * can be selected to view their values.
+ */
+TEST_F('CertificateViewerUITestAsync', 'testDetails',
+ function() {
+ var certHierarchy = $('hierarchy');
+ var certFields = $('cert-fields');
+ var certFieldVal = $('cert-field-value');
+
+ this.continueTest(WhenTestDone.DEFAULT, function() {
+ // There must be at least one certificate in the hierarchy.
+ assertLT(0, certHierarchy.childNodes.length);
+ // No certificate fields should be currently loaded.
+ assertEquals(0, certFields.childNodes.length);
+
+ // Select the first certificate on the chain and ensure the details show up.
+ // Override the receive certificate function to catch when fields are
+ // loaded.
+ var getCertificateFields = cert_viewer.getCertificateFields;
+ cert_viewer.getCertificateFields = this.continueTest(WhenTestDone.ALWAYS,
+ function(certFieldDetails) {
+ getCertificateFields(certFieldDetails);
+ cert_viewer.getCertificateFields = getCertificateFields;
+ assertLT(0, certFields.childNodes.length);
+
+ // Test that a field can be selected to see the details for that field.
+ var item = getElementWithValue(certFields);
+ assertNotEquals(null, item);
+ certFields.selectedItem = item;
+ assertEquals(item.detail.payload.val, certFieldVal.textContent);
+
+ // Test that selecting an item without a value empties the field.
+ certFields.selectedItem = certFields.childNodes[0];
+ assertEquals('', certFieldVal.textContent);
+ });
+ certHierarchy.selectedItem = certHierarchy.childNodes[0];
+ })();
+});
+
+////////////////////////////////////////////////////////////////////////////////
+// Support functions
+
+/**
+ * Find the first tree item (in the certificate fields tree) with a value.
+ * @param {!Element} tree Certificate fields subtree to search.
+ * @return {?Element} The first found element with a value, null if not found.
+ */
+function getElementWithValue(tree) {
+ for (var i = 0; i < tree.childNodes.length; i++) {
+ var element = tree.childNodes[i];
+ if (element.detail && element.detail.payload && element.detail.payload.val)
+ return element;
+ if (element = getElementWithValue(element))
+ return element;
+ }
+ return null;
+}

Powered by Google App Engine
This is Rietveld 408576698