chatwoot/spec/factories
João Santos 202403873d
feat: Ability to specify the authentication type for imap server (#12306)
# Pull Request Template

## Description

This PR adds IMAP authentication mechanism selection to Chatwoot's email
inbox configuration. Users can now choose between 'plain', 'login', and
'cram-md5' authentication methods when configuring IMAP settings,
providing flexibility for different email providers that require
specific authentication types.

https://github.com/chatwoot/chatwoot/issues/8867

The implementation includes:
- Frontend dropdown with numeric keys (1, 2, 3) matching SMTP auth style
- Backend API validation for allowed authentication mechanisms
- Consistent 'cram-md5' format throughout the codebase
- Updated IMAP service to handle different auth types properly

This feature maintains consistency with existing SMTP authentication
options and follows the established UI/UX patterns in the application.

## Type of change

Please delete options that are not relevant.

- [x] New feature (non-breaking change which adds functionality)
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] Breaking change (fix or feature that would cause existing
functionality not to work as expected)
- [ ] This change requires a documentation update

## How Has This Been Tested?

### Manual Testing:
- Tested in Docker environment
- Verified IMAP auth dropdown appears in inbox settings
- Confirmed all three auth mechanisms (plain, login, cram-md5) can be
selected and saved
- Tested API validation by attempting to save invalid auth mechanisms

### Automated Testing:
- Updated existing IMAP service tests to use consistent lowercase values
- Updated API controller tests for authentication parameter handling
- All tests pass locally with the new changes

### Test Configuration:
- Tested with both new and existing inbox configurations

## Checklist:

- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my code
- [x] I have commented on my code, particularly in hard-to-understand
areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [x] Any dependent changes have been merged and published in downstream
modules

## Additional Notes

- This feature is backward compatible and doesn't break existing IMAP
configurations
- The 'cram-md5' format is used consistently throughout (UI, API,
storage, services)
- Net::IMAP compatibility is maintained by converting to 'CRAM-MD5'
internally
- Follows the same pattern established by SMTP authentication
configuration

---------

Co-authored-by: João Santos <joao.santos@madigital.eu>
Co-authored-by: Sony Mathew <sony@chatwoot.com>
2026-05-08 16:40:15 +05:30
..
bot_message chore: Handle attachments in Whatsapp Channel (#3299) 2021-11-11 13:03:48 +05:30
captain feat(ee): Captain custom http tools (#12584) 2025-10-06 07:53:15 -07:00
channel feat: Ability to specify the authentication type for imap server (#12306) 2026-05-08 16:40:15 +05:30
facebook_message feat: extending lock to single conversation to meta inbox (#9104) 2024-04-03 21:33:23 +05:30
instagram feat: Add support for shared post and story attachment types in Instagram messages (#12997) 2025-12-04 05:20:47 +05:30
instagram_message feat: Add Instagram Channel (#2955) 2021-10-05 14:35:32 +05:30
integrations feat(dialogflow): make language_code configurable instead of hardcoded (#13221) 2026-03-25 21:30:17 -07:00
twitter chore: upgrade ruby to 3.1.3 (#5555) 2023-01-24 23:55:07 +05:30
account_saml_settings.rb feat: add saml model & controller [CW-2958] (#12289) 2025-09-03 13:30:42 -07:00
account_users.rb Chore: Enable Users to create multiple accounts (#440) 2020-03-07 12:18:16 +05:30
accounts.rb chore: Use feature_flags attribute instead of settings_flags (#6820) 2023-04-04 09:56:58 -07:00
agent_bot_inboxes.rb Feature: Introduce bots (#545) 2020-03-06 01:43:12 +05:30
agent_bots.rb feat: Add backend APIs for the bot metrics (#9031) 2024-03-01 08:20:20 -08:00
agent_capacity_policies.rb feat: Add agent capacity controllers (#12200) 2025-08-26 19:12:58 -07:00
applied_slas.rb feat: Add sidekiq jobs to monitor applied SLAs (#8828) 2024-02-07 21:44:56 +04:00
articles.rb fix: Update specs, add background response job implementation for copilot threads (#11600) 2025-05-27 14:10:27 -06:00
assignment_policies.rb feat: Add assignment policies controllers with jbuilder views (#12199) 2025-08-18 19:15:21 -07:00
automation_rules.rb chore: Refactor Automation Specs (#6796) 2023-03-30 21:02:52 +05:30
calls.rb feat(voice): Wire Twilio voice flow through unified call model (#14091) 2026-04-30 11:25:39 +04:00
campaigns.rb feat: WhatsApp campaigns (#11910) 2025-07-16 09:04:02 +05:30
canned_responses.rb Chore: Added tests for canned_responses (#477) 2020-02-08 11:58:40 +05:30
categories.rb fix: Update specs, add background response job implementation for copilot threads (#11600) 2025-05-27 14:10:27 -06:00
clearbit_response.rb feat: account onboarding with clearbit (#8857) 2024-02-12 23:21:42 +05:30
companies.rb feat: Add company model and API with tests (#12548) 2025-10-08 07:53:43 -07:00
contact_inbox.rb fix: "wa_source_id" function return value (#5451) 2022-09-29 10:34:55 -07:00
contacts.rb feat: Update API for contact avatar (#4719) 2022-07-12 10:03:16 +02:00
conversation_participants.rb chore: Add controllers for conversation participants (#6462) 2023-02-15 16:33:31 -08:00
conversations.rb feat: Add the ability to un-assign teams using automation (#9668) 2024-06-26 12:40:36 -07:00
csat_survey_responses.rb feat: Add CSAT response APIs (#2503) 2021-06-29 20:59:41 +05:30
custom_attribute_definitions.rb feat: Add APIs for custom attribute definitions (#2689) 2021-07-23 17:04:33 +05:30
custom_filters.rb feat: Add APIs to create custom views on the dashboard (#2498) 2021-06-29 19:29:57 +05:30
custom_roles.rb chore: Fix flaky permissions test (#10074) 2024-09-04 16:13:29 -07:00
dashboard_app.rb feat: Allow users to create dashboard apps to give agents more context (#4761) 2022-06-01 11:13:10 +05:30
data_import.rb feat: Add bulk imports API for contacts (#1724) 2021-02-03 19:24:51 +05:30
email_template.rb feat: Customisable Email Templates (#1095) 2020-08-06 15:21:06 +05:30
folders.rb feat: Portal endpoint (#4633) 2022-05-16 13:59:59 +05:30
inbox_assignment_policies.rb feat: Add assignment policies controllers with jbuilder views (#12199) 2025-08-18 19:15:21 -07:00
inbox_capacity_limits.rb feat: Add agent capacity controllers (#12200) 2025-08-26 19:12:58 -07:00
inbox_members.rb chore: Ability to Disable Gravatars (#5027) 2022-07-21 19:27:12 +02:00
inboxes.rb chore: Update the behavior of Captain resolutions (#10794) 2025-02-03 16:25:08 +05:30
installation_config.rb feat: installation config in super admin console (#1641) 2021-01-15 13:21:53 +05:30
labels.rb Feature: Improve label experience (#975) 2020-06-25 21:04:03 +05:30
macros.rb feat: Macros CRUD api (#5047) 2022-07-19 17:37:00 +05:30
mentions.rb Feat: custom sort (#4864) 2022-06-22 11:04:42 +05:30
messages.rb feat: Differentiate bot and user in the summary (#12801) 2025-11-05 11:42:21 -08:00
notes.rb chore: Add contact note model (#2462) 2021-06-21 15:16:26 +05:30
notification_subscriptions.rb fix: Add catch for additional webpush errors (#9662) 2024-06-21 14:58:36 -07:00
notifications.rb fix: Inbox view Read/Snoozed display filters (#8907) 2024-02-17 13:59:25 +05:30
platform_apps_permissibles.rb feat: Add Platform APIs (#1456) 2021-01-14 20:35:22 +05:30
platform_apps.rb feat: Add Platform APIs (#1456) 2021-01-14 20:35:22 +05:30
portals.rb feat: Portal endpoint (#4633) 2022-05-16 13:59:59 +05:30
related_categories.rb feat: Category API to handle linked categories and parent-sub categories (#4879) 2022-06-28 11:23:20 +05:30
reporting_event_rollups.rb feat(rollup): add models and write path [1/3] (#13796) 2026-03-19 13:12:36 +05:30
reporting_events.rb feat: allow querying reporting events via the API (#12832) 2025-11-13 12:46:55 +05:30
sla_events.rb feat: add sla events table (#9126) 2024-03-20 11:59:37 +05:30
sla_policies.rb feat: sla 1 - refactor sla_policies model and add applied_sla model (#8602) 2024-01-23 23:48:02 +05:30
super_admins.rb feat: Unify user and super admin credentials (#3830) 2022-01-25 16:58:49 -08:00
team_members.rb feat: Team APIs (#1654) 2021-01-17 23:56:56 +05:30
teams.rb feat: Add new APIs for live reports with team filter (#10994) 2025-02-27 16:11:04 -08:00
users.rb feat: Ability to update avatars from super admin (#7264) 2023-06-09 15:32:24 +05:30
webhooks.rb feat(webhooks): add name to webhook (#12641) 2025-11-13 13:28:15 +05:30
working_hours.rb feat: Business hours 2020-11-01 00:14:33 +05:30