diff options
| author | mo khan <mo.khan@gmail.com> | 2019-10-14 10:22:27 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2019-10-14 10:22:27 -0600 |
| commit | d32e87b86f6ddad2c2e427718bc9f480e0905055 (patch) | |
| tree | 20a854e587ad3b257f8ab12a028d11cede3cd8b5 | |
| parent | 64397c35fb21db7d47d0182eeaa44c2070fc6afa (diff) | |
add unit tests for missing expiration date
| -rwxr-xr-x | bin/duplicate-ids | 1 | ||||
| -rwxr-xr-x | bin/missing-expiration-date | 15 | ||||
| -rwxr-xr-x | bin/no-password | 1 | ||||
| -rwxr-xr-x | bin/uid-zero | 1 | ||||
| -rw-r--r-- | test/fixtures/shadow_with_missing_expiration_date | 2 | ||||
| -rw-r--r-- | test/missing-expiration-date_test.bats | 15 |
6 files changed, 30 insertions, 5 deletions
diff --git a/bin/duplicate-ids b/bin/duplicate-ids index a1e2b39..841b895 100755 --- a/bin/duplicate-ids +++ b/bin/duplicate-ids @@ -1,5 +1,6 @@ #!/bin/bash +cd "$(dirname "$0")/.." FILE=${1:-'/etc/passwd'} ids=$(grep -v -E '^#' "$FILE" | awk -F: '{ print $3 }' | sort -n | uniq -d) diff --git a/bin/missing-expiration-date b/bin/missing-expiration-date index 8a0c7fe..d0caa28 100755 --- a/bin/missing-expiration-date +++ b/bin/missing-expiration-date @@ -1,12 +1,17 @@ #!/bin/bash -cd "..$(dirname $PWD)" +cd "$(dirname "$0")/.." +FILE=${1:-'/etc/shadow'} +EXITSTATUS=0 -for i in `cat /etc/shadow`; do - login=$(echo $i | cut -d: -f1) - expiration=$(echo $i | cut -d: -f8) +while read entry; do + login=$(echo $entry | cut -d: -f1) + expiration=$(echo $entry | cut -d: -f8) if [ -z "$expiration" ]; then echo $login: does not have an expiration date + let "EXITSTATUS++" fi -done +done < "$FILE" + +exit $EXITSTATUS diff --git a/bin/no-password b/bin/no-password index 4705ddd..9e2c04d 100755 --- a/bin/no-password +++ b/bin/no-password @@ -1,5 +1,6 @@ #!/bin/bash +cd "$(dirname "$0")/.." FILE=${1:-'/etc/passwd'} grep -E '^\w+::.*' "$FILE" diff --git a/bin/uid-zero b/bin/uid-zero index 64adac7..c4b854c 100755 --- a/bin/uid-zero +++ b/bin/uid-zero @@ -1,5 +1,6 @@ #!/bin/bash +cd "$(dirname "$0")/.." FILE=${1:-'/etc/passwd'} cat "$FILE" | cut -d: -f1,3 | grep ':0' diff --git a/test/fixtures/shadow_with_missing_expiration_date b/test/fixtures/shadow_with_missing_expiration_date new file mode 100644 index 0000000..3ca4e2d --- /dev/null +++ b/test/fixtures/shadow_with_missing_expiration_date @@ -0,0 +1,2 @@ +root:*:18169:0:99999:7::: +bin:*:17995:0:99999:7::: diff --git a/test/missing-expiration-date_test.bats b/test/missing-expiration-date_test.bats index e69de29..60e60fa 100644 --- a/test/missing-expiration-date_test.bats +++ b/test/missing-expiration-date_test.bats @@ -0,0 +1,15 @@ +#!/usr/bin/env bats + +load test_helper + +@test "it finds users missing an expiration date" { + run ./bin/missing-expiration-date test/fixtures/shadow_with_missing_expiration_date + + assert_failure $'root: does not have an expiration date\nbin: does not have an expiration date' +} + +@test "it does not find users with a missing expiration date" { + run ./bin/missing-expiration-date test/fixtures/shadow + + assert_success +} |
