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

mozilla / blurts-server / #13066

pending completion
#13066

push

circleci

Vinnl
<a href="https://github.com/mozilla/blurts-server/commit/<a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d">7a9d21547">&lt;a href=&quot;https://github.com/mozilla/blurts-server/commit/</a><a class="double-link" href="https://github.com/mozilla/blurts-server/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/mozilla/blurts-server/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/mozilla/blurts-server/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/mozilla/blurts-server/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d">7a9d21547</a><a href="https://github.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d">&lt;a href=&quot;https://github.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d&quot;&gt;&amp;quot;&amp;gt;&amp;amp;lt;a href=&amp;amp;quot;https://github.com/mozilla/blurts-server/commit/&amp;lt;/a&amp;gt;&amp;lt;a class=&amp;quot;double-link&amp;quot; href=&amp;quot;https://github.com/mozilla/blurts-server/commit/&amp;amp;lt;a class=&amp;amp;quot;double-link&amp;amp;quot; href=&amp;amp;quot;https://git&amp;quot;&amp;gt;&amp;amp;lt;a class=&amp;lt;/a&amp;gt;hub.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d&amp;quot;&amp;gt;7a9d21547&amp;lt;/a&amp;gt;&amp;lt;a href=&amp;quot;https://github.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d&amp;quot;&amp;gt;&amp;amp;lt;a href=&amp;amp;quot;https://github.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d&amp;amp;quot;&amp;amp;gt;&amp;amp;amp;quot;&amp;amp;amp;gt;Revert &amp;amp;amp;amp;quot;fixup! Add a bunch of initial type annotatio&amp;lt;/a&amp;</a>gt;ns&amp;amp;quot;

This reverts commit &amp;lt;/a&amp;gt;&amp;lt;a class=&amp;quot;double-link&amp;quot; href=&amp;qu... (continued)

282 of 1621 branches covered (17.4%)

Branch coverage included in aggregate %.

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

959 of 4334 relevant lines covered (22.13%)

1.84 hits per line

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

0.0
/controllers/breach-details.js
1
'use strict'
2

3
const HIBP = require('../hibp')
×
4
const DB = require('../db/DB')
×
5
const { changePWLinks } = require('../lib/changePWLinks')
×
6
const { getAllEmailsAndBreaches } = require('./user')
×
7

8
async function getBreachDetail (req, res) {
9
  const allBreaches = req.app.locals.breaches
×
10
  const breachName = req.params.breachName
×
11
  const featuredBreach = HIBP.getBreachByName(allBreaches, breachName)
×
12

13
  if (!featuredBreach) {
×
14
    return res.redirect('/')
×
15
  }
16

17
  const affectedEmails = []
×
18

19
  if (req.session && req.session.user) {
×
20
    const user = await DB.getSubscriberById(req.session.user.id)
×
21
    req.session.user = user
×
22

23
    const allEmailsAndBreaches = await getAllEmailsAndBreaches(req.session.user, allBreaches)
×
24
    for (const verifiedEmail of allEmailsAndBreaches.verifiedEmails) {
×
25
      for (const breach of verifiedEmail.breaches) {
×
26
        if (breach.Name === breachName) {
×
27
          affectedEmails.push({
×
28
            emailAddress: verifiedEmail.email,
29
            recencyIndex: breach.recencyIndex,
30
            isResolved: breach.IsResolved
31
          })
32
        }
33
      }
34
    }
35
  }
36

37
  const changePWLink = getChangePWLink(featuredBreach)
×
38
  res.render('breach-detail', {
×
39
    title: req.fluentFormat('home-title'),
40
    featuredBreach,
41
    changePWLink,
42
    affectedEmails
43
  })
44
}
45

46
function getChangePWLink (breach) {
47
  if (!breach.DataClasses.includes('passwords')) {
×
48
    return ''
×
49
  }
50

51
  if (changePWLinks.hasOwnProperty(breach.Name)) {
×
52
    return changePWLinks[breach.Name]
×
53
  }
54

55
  if (breach.Domain) {
×
56
    return 'https://www.' + breach.Domain
×
57
  }
58

59
  return ''
×
60
}
61

62
module.exports = {
×
63
  getBreachDetail
64
}
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