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

kobotoolbox / kpi / 24654785901
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: dev-1494-execution-and-polling-for-bulk-actions
DEFAULT BRANCH: master
Ran 20 Apr 2026 07:52AM UTC
Jobs 10
Files 910
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

20 Apr 2026 07:48AM UTC coverage: 82.169% (-0.04%) from 82.208%
24654785901

push

github

web-flow
feat(mfa): enable MFA unconditionally for all users DEV-1799 (#6939)

### 📣 Summary
This PR removes the `MfaAvailableToUser` whitelist model and all
subscription-based restrictions tied to Multi-Factor Authentication. MFA
is now universally available to all KoboToolbox users, governed only by
the global `MFA_ENABLED` configuration.

### 📖 Description
Historically, MFA was gated behind paid subscriptions or a specific
per-user whitelist (`MfaAvailableToUser`). As part of our push to make
security features available to everyone, this PR completely removes
those restrictions.

This PR:
- Deletes the `MfaAvailableToUser` model and its corresponding Django
Admin interface.
- Removes the subscription-check logic from
`MfaAdapter.is_mfa_enabled()`.
- Simplifies `permissions.py` to allow MFA access based solely on the
global `config.MFA_ENABLED` setting.
- Cleans up `environment.py` and related API endpoints that previously
exposed the whitelist status to the frontend.
- Refactors unit tests in `test_login.py`, `test_mfa_login.py`, and
`test_api_environment.py` to remove whitelist/subscription matrices and
verify universal access.

7780 of 11967 branches covered (65.01%)

0 of 4 new or added lines in 2 files covered. (0.0%)

6 existing lines in 2 files now uncovered.

29576 of 35994 relevant lines covered (82.17%)

5.79 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
0.0
0.0% kobo/apps/accounts/mfa/adapter.py
1
80.0
10.77% kobo/apps/accounts/mfa/permissions.py

Coverage Regressions

Lines Coverage ∆ File
5
0.0
-45.45% kobo/apps/accounts/utils.py
1
41.18
-0.4% kpi/views/environment.py
Jobs
ID Job ID Ran Files Coverage
1 24654785901.1 20 Apr 2026 07:52AM UTC 906
52.76
2 24654785901.2 20 Apr 2026 07:53AM UTC 906
54.29
3 24654785901.3 20 Apr 2026 07:54AM UTC 908
53.98
4 24654785901.4 20 Apr 2026 07:54AM UTC 908
55.54
5 24654785901.5 20 Apr 2026 07:55AM UTC 908
66.0
6 24654785901.6 20 Apr 2026 07:55AM UTC 906
52.98
7 24654785901.7 20 Apr 2026 07:55AM UTC 906
60.31
8 24654785901.8 20 Apr 2026 07:56AM UTC 908
54.32
9 24654785901.9 20 Apr 2026 07:57AM UTC 908
61.44
10 24654785901.10 20 Apr 2026 07:57AM UTC 910
68.24
Source Files on build 24654785901
  • Tree
  • List 910
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 95fc09d9 on github
  • Prev Build on release/2.026.12 (#24652083072)
  • Next Build on release/2.026.12 (#24671455478)
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

© 2026 Coveralls, Inc