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

mozilla / blurts-server / 38c7cf16-2c2d-496d-bcd2-ad5d0d7c2f30

pending completion
38c7cf16-2c2d-496d-bcd2-ad5d0d7c2f30

push

circleci

Vincent
Add letter-based fallback favicons

282 of 1389 branches covered (20.3%)

Branch coverage included in aggregate %.

6 of 6 new or added lines in 1 file covered. (100.0%)

959 of 3848 relevant lines covered (24.92%)

4.14 hits per line

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

0.0
/src/app-constants.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
// TODO: these vars were copy/pasted from the old app-constants.js and should be cleaned up
6
import * as dotenv from 'dotenv'
7

8
dotenv.config({ path: '../.env' })
×
9

10
const requiredEnvVars = [
×
11
  'ADMINS',
12
  'BREACH_RESOLUTION_ENABLED',
13
  'COOKIE_SECRET',
14
  'CSRF_SECRET',
15
  'DATABASE_URL',
16
  'DELETE_UNVERIFIED_SUBSCRIBERS_TIMER',
17
  'EMAIL_FROM',
18
  'EXPERIMENT_ACTIVE',
19
  'FX_REMOTE_SETTINGS_WRITER_PASS',
20
  'FX_REMOTE_SETTINGS_WRITER_SERVER',
21
  'FX_REMOTE_SETTINGS_WRITER_USER',
22
  'FXA_ENABLED',
23
  'FXA_SETTINGS_URL',
24
  'HIBP_API_ROOT',
25
  'HIBP_KANON_API_ROOT',
26
  'HIBP_KANON_API_TOKEN',
27
  'HIBP_NOTIFY_TOKEN',
28
  'HIBP_RELOAD_BREACHES_TIMER',
29
  'HIBP_THROTTLE_DELAY',
30
  'HIBP_THROTTLE_MAX_TRIES',
31
  'LOGOS_ORIGIN',
32
  'MAX_NUM_ADDRESSES',
33
  'MOZLOG_FMT',
34
  'MOZLOG_LEVEL',
35
  'NODE_ENV',
36
  'OAUTH_AUTHORIZATION_URI',
37
  'OAUTH_CLIENT_ID',
38
  'OAUTH_CLIENT_SECRET',
39
  'OAUTH_PROFILE_URI',
40
  'OAUTH_TOKEN_URI',
41
  'PAGE_TOKEN_TIMER',
42
  'PRODUCT_PROMOS_ENABLED',
43
  'REDIS_URL',
44
  'SENTRY_DSN',
45
  'SERVER_URL',
46
  'SES_CONFIG_SET',
47
  'SES_NOTIFICATION_LOG_ONLY',
48
  'SESSION_DURATION_HOURS',
49
  'SMTP_URL',
50
  'SUPPORTED_LOCALES'
51
]
52

53
const optionalEnvVars = [
×
54
  'EDUCATION_VIDEO_URL_RELAY',
55
  'EMAIL_TEST_RECIPIENT',
56
  'GA4_MEASUREMENT_ID',
57
  'GEOIP_GEOLITE2_CITY_FILENAME',
58
  'GEOIP_GEOLITE2_COUNTRY_FILENAME',
59
  'GEOIP_GEOLITE2_PATH',
60
  'LIVE_RELOAD',
61
  'PORT',
62
  'RECRUITMENT_BANNER_LINK',
63
  'RECRUITMENT_BANNER_TEXT',
64
  'SENTRY_DSN_LEGACY',
65
  'VPN_PROMO_BLOCKED_LOCALES'
66
]
67

68
const AppConstants = { }
×
69

70
if (!process.env.SERVER_URL && process.env.NODE_ENV === 'heroku') {
×
71
  process.env.SERVER_URL = `https://${process.env.HEROKU_APP_NAME}.herokuapp.com`
×
72
}
73

74
for (const v of requiredEnvVars) {
×
75
  if (process.env[v] === undefined) {
×
76
    throw new Error(`Required environment variable was not set: ${v}`)
×
77
  }
78
  AppConstants[v] = process.env[v]
×
79
}
80

81
optionalEnvVars.forEach(key => {
×
82
  if (key in process.env) AppConstants[key] = process.env[key]
×
83
})
84

85
export default Object.freeze(AppConstants)
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