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

Don't export vars to global scope in is_ip_rdns_valid and make the function testable

Robert Zollner 5 лет назад
Родитель
Сommit
ef939df125
2 измененных файлов с 23 добавлено и 15 удалено
  1. 10 6
      func/ip.sh
  2. 13 9
      test/test.bats

+ 10 - 6
func/ip.sh

@@ -26,15 +26,19 @@ is_ip_key_empty() {
 }
 
 is_ip_rdns_valid() {
-    ip="$1"
-    network_ip=$(echo $ip | cut -d"." -f1-3)
-    awk_ip=$(echo $network_ip | sed 's|\.|/\&\&/|g')
-    rev_awk_ip=$(echo $awk_ip | rev)
-    rdns=$(dig +short -x $ip | sed 's/.$//')
+    local ip="$1"
+    local network_ip=$(echo $ip | cut -d"." -f1-3)
+    local awk_ip=$(echo $network_ip | sed 's|\.|/\&\&/|g')
+    local rev_awk_ip=$(echo $awk_ip | rev)
 
-    if [ ! -z $rdns ] && [ ! $(echo $rdns | awk "/$awk_ip/ || /$rev_awk_ip/") ]; then
+    [ -z "$rdns" ] && local rdns=$(dig +short -x $ip | head -n 1 | sed 's/.$//')
+
+    if [ ! -z "$rdns" ] && [ ! $(echo $rdns | awk "/$awk_ip/ || /$rev_awk_ip/") ]; then
         echo $rdns
+        return 0 # True
     fi
+
+    return 1 # False
 }
 
 # Update ip address value

+ 13 - 9
test/test.bats

@@ -82,50 +82,54 @@ function validate_web_domain() {
     refute_output
 }
 
+#----------------------------------------------------------#
+#                           IP                             #
+#----------------------------------------------------------#
+
 @test "Check reverse Dns validation" {
-    skip
 
     # 1. PTR record for a IP should return a hostname(reverse) which in turn must resolve to the same IP addr(forward). (Full circle)
+    #  `-> not implemented in `is_ip_rdns_valid` yet and also not tested here
     # 2. Reject rPTR records that match generic dynamic IP pool patterns
 
     local ip="54.200.1.22"
     local rdns="ec2-54-200-1-22.us-west-2.compute.amazonaws.com"
-    run is_ip_rdns_valid "$ip" "$rdns"
+    run is_ip_rdns_valid "$ip"
     assert_failure
     refute_output
 
     local rdns="ec2.54.200.1.22.us-west-2.compute.amazonaws.com"
-    run is_ip_rdns_valid "$ip" "$rdns"
+    run is_ip_rdns_valid "$ip"
     assert_failure
     refute_output
 
     local rdns="ec2-22-1-200-54.us-west-2.compute.amazonaws.com"
-    run is_ip_rdns_valid "$ip" "$rdns"
+    run is_ip_rdns_valid "$ip"
     assert_failure
     refute_output
 
     local rdns="ec2.22.1.200.54.us-west-2.compute.amazonaws.com"
-    run is_ip_rdns_valid "$ip" "$rdns"
+    run is_ip_rdns_valid "$ip"
     assert_failure
     refute_output
 
     local rdns="ec2-200-54-1-22.us-west-2.compute.amazonaws.com"
-    run is_ip_rdns_valid "$ip" "$rdns"
+    run is_ip_rdns_valid "$ip"
     assert_failure
     refute_output
 
     local rdns="panel-22.mydomain.tld"
-    run is_ip_rdns_valid "$ip" "$rdns"
+    run is_ip_rdns_valid "$ip"
     assert_success
     assert_output "$rdns"
 
     local rdns="mail.mydomain.tld"
-    run is_ip_rdns_valid "$ip" "$rdns"
+    run is_ip_rdns_valid "$ip"
     assert_success
     assert_output "$rdns"
 
     local rdns="mydomain.tld"
-    run is_ip_rdns_valid "$ip" "$rdns"
+    run is_ip_rdns_valid "$ip"
     assert_success
     assert_output "$rdns"