chromium/third_party/blink/web_tests/http/tests/devtools/security/security-explanation-ordering.js

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import {TestRunner} from 'test_runner';
import {SecurityTestRunner} from 'security_test_runner';

import * as SDK from 'devtools/core/sdk/sdk.js';
import * as Security from 'devtools/panels/security/security.js';

(async function() {
  TestRunner.addResult(`Tests that info explanations are placed after regular explanations.\n`);
  await TestRunner.showPanel('security');

  const pageVisibleSecurityState = new Security.SecurityModel.PageVisibleSecurityState(
    Protocol.Security.SecurityState.Secure,
    {
      protocol: 'TLS 1.0',
      keyExchange: 'RSA',
      keyExchangeGroup: null,
      cipher: 'AES_128_CBC',
      mac: 'HMAC-SHA1',
      certificate: ['BASE64CERTIFICATE'],
      subjectName: 'testexample.com',
      issuer: 'Issuer',
      // set valid time frame to avoid certificate expiring soon message
      validFrom: new Date(Date.now()).setHours(-100),
      validTo: new Date(Date.now()).setHours(100),
      certifcateHasWeakSignature: false,
      certificateHasSha1SignaturePresent: false,
      modernSSL: false,
      obsoleteSslProtocol: false,
      obsoleteSslKeyExchange: false,
      obsoleteSslCipher: false,
      obsoleteSslSignature: false,
    },
    null,
    ['pkp-bypassed']
  );

  TestRunner.mainTarget.model(Security.SecurityModel.SecurityModel)
      .dispatchEventToListeners(
        Security.SecurityModel.Events.VisibleSecurityStateChanged,
        pageVisibleSecurityState);

  var request = SDK.NetworkRequest.NetworkRequest.create(
      0, 'http://foo.test', 'https://foo.test', 0, 0, null);
  SecurityTestRunner.dispatchRequestFinished(request);

  var explanations =
      Security.SecurityPanel.SecurityPanel.instance().mainView.contentElement.getElementsByClassName('security-explanation');
  for (var i = 0; i < explanations.length; i++)
    TestRunner.dumpDeepInnerHTML(explanations[i]);
  TestRunner.completeTest();
})();