• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mozilla / blurts-server / 0e06dc91-6af9-418e-9636-e8b2e1851108

pending completion
0e06dc91-6af9-418e-9636-e8b2e1851108

push

circleci

Vincent
Allow scanning for exposures without logging in

282 of 1653 branches covered (17.06%)

Branch coverage included in aggregate %.

107 of 107 new or added lines in 9 files covered. (100.0%)

959 of 4482 relevant lines covered (21.4%)

3.57 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/views/partials/exposure-scan.js
1
/* This Source Code Form is subject to the terms of the Mozilla Public
2
 * License, v. 2.0. If a copy of the MPL was not distributed with this
3
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4

5
import { getMessage } from '../../utils/fluent.js'
6

7
/**
8
 * @typedef {object} PartialParameters
9
 * @property {string} csrfToken
10
 */
11

12
/**
13
 * @type {ViewPartial<PartialParameters>}
14
 */
15
export const exposureScan = data => `
×
16
  <template id="data" data-csrf-token="${data.csrfToken}"></template>
17
  <div id="exposure-scan-loading">
18
    ${getMessage('exposure-landing-result-loading')}
19
  </div>
20
  <div hidden id="exposure-scan-error" aria-live="polite">
21
    ${getMessage('exposure-landing-result-error')}
22
  </div>
23
  <template id="breach-template">
24
    <li class="exposure-scan-breach">
25
      <h3>
26
        ${/* The company logo and name will be added client-side, after running the scan */''}
27
        <span class="exposure-scan-breach-company-logo"></span>
28
        <span class="exposure-scan-breach-company-name"></span>
29
      </h3>
30
      <div class="exposure-scan-breach-main">
31
        <dl>
32
          <div class="exposure-scan-breach-added">
33
            <dt>${getMessage('exposure-landing-result-card-added')}</dt>
34
            ${/* The added date will be added client-side, after running the scan */''}
35
            <dd></dd>
36
          </div>
37
          <div class="exposure-scan-breach-data">
38
            <dt>${getMessage('exposure-landing-result-card-data')}</dt>
39
            ${/* The breached data will be added client-side, after running the scan */''}
40
            <dd></dd>
41
          </div>
42
        </dl>
43
      </div>
44
    </li>
45
  </template>
46
  <div hidden id="exposure-scan-results-overflow" class="exposure-scan-results" aria-live="polite">
47
    <header class="exposure-scan-hero">
48
      <div class="exposure-scan-hero-content">
49
        <p>${getMessage('exposure-landing-result-overflow-hero-lead')}</p>
50
        <a href='/user/breaches' data-cta-id='exposure-landing-result-overflow-cta-hero' class='button primary'>${getMessage('exposure-landing-result-overflow-hero-cta-label')}</a>
51
      </div>
52
      <img alt="" src="/images/exposure-scan-hero.svg" />
53
    </header>
54
    <ul class="exposure-scan-breaches">
55
    </ul>
56
    <footer class="exposure-scan-footer">
57
      <a href='/user/breaches' data-cta-id='exposure-landing-result-overflow-cta-footer' class='button primary'>${getMessage('exposure-landing-result-overflow-footer-cta-label')}</a>
58
      <p class="hibp-attribution">
59
        ${getMessage('exposure-landing-result-footer-attribution').replace('<hibp-link>', '<a href="https://haveibeenpwned.com/" target="_blank">').replace('</hibp-link>', '</a>')}
60
      </p>
61
    </footer>
62
  </div>
63
  <div hidden id="exposure-scan-results-some" class="exposure-scan-results" aria-live="polite">
64
    <header class="exposure-scan-hero">
65
      <div class="exposure-scan-hero-content">
66
        <p>${getMessage('exposure-landing-result-some-hero-lead')}</p>
67
        <a href='/user/breaches' data-cta-id='exposure-landing-result-some-cta-hero' class='button primary'>${getMessage('exposure-landing-result-some-hero-cta-label')}</a>
68
      </div>
69
      <img alt="" src="/images/exposure-scan-hero.svg" />
70
    </header>
71
    <ul class="exposure-scan-breaches">
72
    </ul>
73
    <footer class="exposure-scan-footer">
74
      <a href='/user/breaches' data-cta-id='exposure-landing-result-some-cta-footer' class='button primary'>${getMessage('exposure-landing-result-some-footer-cta-label')}</a>
75
      <p class="hibp-attribution">
76
        ${getMessage('exposure-landing-result-footer-attribution').replace('<hibp-link>', '<a href="https://haveibeenpwned.com/" target="_blank">').replace('</hibp-link>', '</a>')}
77
      </p>
78
    </footer>
79
  </div>
80
  <div hidden id="exposure-scan-results-none" class="exposure-scan-results" aria-live="polite">
81
    <header class="exposure-scan-hero">
82
      <div class="exposure-scan-hero-content">
83
        <p>${getMessage('exposure-landing-result-none-hero-lead')}</p>
84
        <a href='/user/breaches' data-cta-id='exposure-landing-result-none-cta-hero' class='button primary'>${getMessage('exposure-landing-result-none-hero-cta-label')}</a>
85
      </div>
86
      <img alt="" src="/images/exposure-scan-hero.svg" />
87
    </header>
88
    <div class="exposure-scan-breaches">
89
      <div class="exposure-scan-breach">
90
        <img alt="" src="/images/breaches-none.svg" />
91
        ${getMessage('exposure-landing-result-card-nothing')}
92
      </div>
93
    </div>
94
    <footer class="exposure-scan-footer">
95
      <a href='/user/breaches' data-cta-id='exposure-landing-result-none-cta-footer' class='button primary'>${getMessage('exposure-landing-result-none-footer-cta-label')}</a>
96
      <p class="hibp-attribution">
97
        ${getMessage('exposure-landing-result-footer-attribution').replace('<hibp-link>', '<a href="https://haveibeenpwned.com/" target="_blank">').replace('</hibp-link>', '</a>')}
98
      </p>
99
    </footer>
100
  </div>
101
`
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc