Просмотр исходного кода

Added email dkim tests (#2601)

* Added email dkim tests

* Fixes error when removing email dkim records and prevent removal of custom dkim selectors

Fixes #2602
Zollner Robert 3 лет назад
Родитель
Сommit
abbb22dcda
3 измененных файлов с 47 добавлено и 4 удалено
  1. 1 1
      bin/v-delete-mail-domain
  2. 3 3
      bin/v-delete-mail-domain-dkim
  3. 43 0
      test/test.bats

+ 1 - 1
bin/v-delete-mail-domain

@@ -60,7 +60,7 @@ fi
 
 
 # Deleting dkim dns record
 # Deleting dkim dns record
 if [ "$DKIM" = 'yes' ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
 if [ "$DKIM" = 'yes' ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
-    dkim_records=$($BIN/v-list-dns-records "$user" "$domain" plain | awk '{print $1,$2}' | grep -w '_domainkey' | cut -f 1 -d ' ')
+    dkim_records=$($BIN/v-list-dns-records "$user" "$domain" | grep -E "\s(mail\._domainkey|_domainkey)\s" | cut -f 1 -d ' ')
     for id in $dkim_records; do
     for id in $dkim_records; do
         $BIN/v-delete-dns-record "$user" "$domain" "$id" '' 'yes'
         $BIN/v-delete-dns-record "$user" "$domain" "$id" '' 'yes'
     done
     done

+ 3 - 3
bin/v-delete-mail-domain-dkim

@@ -52,8 +52,8 @@ fi
 
 
 # Deleting dns record
 # Deleting dns record
 if [ -n "$DNS_SYSTEM" ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
 if [ -n "$DNS_SYSTEM" ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
-    records=$($BIN/v-list-dns-records "$user" "$domain" plain)
-    dkim_records=$(echo "$records" |grep -w '_domainkey' | cut -f 1 -d ' ')
+    records=$($BIN/v-list-dns-records "$user" "$domain")
+    dkim_records=$(echo "$records" |grep -E "\s(mail\._domainkey|_domainkey)\s" | cut -f 1 -d ' ')
     for id in $dkim_records; do
     for id in $dkim_records; do
         $BIN/v-delete-dns-record "$user" "$domain" "$id" 'yes'
         $BIN/v-delete-dns-record "$user" "$domain" "$id" 'yes'
     done
     done
@@ -63,7 +63,7 @@ fi
 #                       Hestia                             #
 #                       Hestia                             #
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
-# Updatoing config
+# Updating config
 update_object_value 'mail' 'DOMAIN' "$domain" '$DKIM' 'no'
 update_object_value 'mail' 'DOMAIN' "$domain" '$DKIM' 'no'
 decrease_user_value "$user" '$U_MAIL_DKIM'
 decrease_user_value "$user" '$U_MAIL_DKIM'
 
 

+ 43 - 0
test/test.bats

@@ -1468,6 +1468,49 @@ function check_ip_not_banned(){
     refute_output
     refute_output
 }
 }
 
 
+@test "MAIL: Delete DKIM" {
+    run v-delete-mail-domain-dkim $user $domain
+    assert_success
+    refute_output
+
+    run grep "RECORD='_domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
+    assert_failure
+    refute_output
+
+    run grep "RECORD='mail._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
+    assert_failure
+    refute_output
+}
+
+@test "MAIL: Add DKIM" {
+    run v-add-mail-domain-dkim $user $domain
+    assert_success
+    refute_output
+
+    run grep "RECORD='_domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
+    assert_success
+    assert_output --partial "RECORD='_domainkey' TYPE='TXT'"
+
+    run grep "RECORD='mail._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
+    assert_success
+    assert_output  --partial "RECORD='mail._domainkey' TYPE='TXT'"
+}
+
+@test "MAIL: Delete DKIM but preserve custom dkim records" {
+    run v-add-dns-record $user $domain 'k2._domainkey' 'TXT' 'v=DKIM1; k=rsa; p=123456'
+    assert_success
+    refute_output
+
+    run v-delete-mail-domain-dkim $user $domain
+    assert_success
+    refute_output
+
+    run grep "RECORD='k2._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
+    assert_success
+    assert_output --partial "RECORD='k2._domainkey' TYPE='TXT'"
+}
+
+
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #    Limit possibilities adding different owner domain     #
 #    Limit possibilities adding different owner domain     #
 #----------------------------------------------------------#
 #----------------------------------------------------------#