docker-mailserver/test
Brennan Kinney 57aeb6db2a
refactor: CLI commands for database management (#2654)
See the associated PR for more detailed commentary on specific changes.

### Commands refactored:
- User (**All:** add / list / update / del + _dovecot-master variants_)
- Quota (**All:** set / del)
- Virtual Alias (**All:** add / list /del)
- Relay (**All:** add-relayhost / add-sasl / exclude-domain)

### Overall changes involve:
- **Fairly common structure:**
  - `_main` method at the top provides an overview of logical steps:
    - After all methods are declared beneath it (_and imported from the new `helpers/database/db.sh`_), the `_main` is called at the bottom of the file.
    - `delmailuser` additionally processes option support for `-y` prior to calling `_main`.
  - `__usage` is now consistent with each of these commands, along with the `help` command.
  - Most logic delegated to new helper scripts. Some duplicate content remains on the basis that it's low-risk to maintenance and avoids less hassle to jump between files to check a single line, usually this is arg validation.
  - Error handling should be more consistent, along with var names (_no more `USER`/`EMAIL`/`FULL_EMAIL` to refer to the same expected value_).
- **Three new management scripts** (in `helpers/database/manage/`) using a common structure for managing changes to their respective "Database" config file.
  - `postfix-accounts.sh` unified not only add and update commands, but also all the dovecot-master versions, a single password call for all 4 of them, with a 5th consumer of the password prompt from the relay command `addsaslpassword`.
  - These scripts delegate actual writes to `helpers/database/db.sh` which provides a common API to support the changes made.
     - This is more verbose/complex vs the current inline operations each command currently has, as it provides generic support instead of slightly different variations being maintained, along with handling some edge cases that existed and would lead to bugs (notably substring matches).
     - Centralizing changes here seems wiser than scattered about. I've tried to make it easy to grok, hopefully it's not worse than the current situation.
     - List operations were kept in their respective commands, `db.sh` is only really managing writes. I didn't see a nice way for removing the code duplication for list commands as the duplication was fairly minimal, especially for `listalias` and `listdovecotmasteruser` which were quite simple in their differences in the loop body.
     - `listmailuser` and `delmailuser` also retain methods exclusive to respective commands, I wasn't sure if there was any benefit to move those, but they were refactored.
2022-07-29 12:10:23 +12:00
..
bats@54e965fa9d Revert "check-for-changes: performance improvements + wait for settle (#2104)" 2021-08-28 19:16:34 -04:00
config firewall: replace iptables with nftables (#2505) 2022-04-05 15:13:59 +02:00
docker-openldap formatting files according to standard (#1619) 2020-09-24 14:54:21 +02:00
linting Remove unnecessary quotes from command substitutions (#2561) 2022-05-05 10:28:38 +02:00
test-files tests(chore): Adjust supported FQDNs in test certs + add wildcard and acme.json configs (#2284) 2021-11-03 20:25:25 +00:00
test_helper tests: Fix typo in common.bash (#2665) 2022-06-28 13:36:57 +02:00
default_relay_host.bats chore: Remove redundant capability SYS_PTRACE (#2624) 2022-06-07 01:20:13 +12:00
dovecot_inet_protocol.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
helper-functions.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_changedetector.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_disabled_clamav_spamassassin.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_dnsbl.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_fail2ban.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_fetchmail.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_fetchmail_parallel.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_hostname.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_lmtp_ip.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_pop3.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_postfix_inet.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_postscreen.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_privacy.bats chore: Remove redundant capability SYS_PTRACE (#2624) 2022-06-07 01:20:13 +12:00
mail_quotas_disabled.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_smtponly.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_spam_bounced.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_spam_junk_folder.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_special_use_folders.bats chore: Remove redundant capability SYS_PTRACE (#2624) 2022-06-07 01:20:13 +12:00
mail_ssl_letsencrypt.bats fix: typo in changedetector ready message (#2663) 2022-06-28 11:02:43 +02:00
mail_ssl_manual.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_time.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_tls_dhparams.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_undef_spam_subject.bats chore: Remove redundant capability SYS_PTRACE (#2624) 2022-06-07 01:20:13 +12:00
mail_with_imap.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_with_ldap.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_with_mdbox.bats chore: Remove redundant capability SYS_PTRACE (#2624) 2022-06-07 01:20:13 +12:00
mail_with_postgrey.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_with_postgrey_disabled_by_default.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
mail_with_relays.bats chore: Remove redundant capability SYS_PTRACE (#2624) 2022-06-07 01:20:13 +12:00
mail_with_sdbox.bats chore: Remove redundant capability SYS_PTRACE (#2624) 2022-06-07 01:20:13 +12:00
no_container.bats setup.sh: docker_container first, then fall back to docker_image (#2134) 2021-09-06 10:13:12 +00:00
open_dkim.bats chore: Remove redundant capability SYS_PTRACE (#2624) 2022-06-07 01:20:13 +12:00
permit_docker.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
security_tls_cipherlists.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
sedfile.bats tests(fix): Adjust for local testing conditions (#2606) 2022-05-30 12:53:30 +12:00
setup-cli.bats tests: Extract setup.sh cases to their own test file (#2629) 2022-06-07 22:07:09 +00:00
test_helper.bats chore(housekeeping): Create helpers/change-detection.sh (#2610) 2022-06-05 11:59:54 +12:00
tests.bats refactor: CLI commands for database management (#2654) 2022-07-29 12:10:23 +12:00