Tailor the integration tests to account for changes in granting 02/284102/2
authorAdam Michalski <a.michalski2@partner.samsung.com>
Wed, 9 Nov 2022 17:45:07 +0000 (18:45 +0100)
committerAdam Michalski <a.michalski2@partner.samsung.com>
Thu, 10 Nov 2022 10:54:46 +0000 (11:54 +0100)
permissions to subsession app subdirectories

Change-Id: I567b0c211573170de6839fbb044d0eadc3ec2995

tests/integration/sessiond-integration-tests.sh

index 0d55d966a80e9ad99ba23ed90257fa805d3424b1..6e9e8ce5abdc4704cebc46fbd03fdef8e647cacc 100755 (executable)
@@ -131,16 +131,40 @@ for subsession in "${TEST_SUBSESSIONS[@]}"; do
                userf="${f/"$subsession_dir"/$apps_rwdir}"
 
                # Check if permissions are correct
-               usergroup=$(stat --format '%U:%G:%A' "$f")
-               user=$(echo "$usergroup" | cut -d: -f1)
-               group=$(echo "$usergroup" | cut -d: -f2)
-               u_usergroup=$(stat --format '%U:%G:%A' "$userf")
-               u_user=$(echo "$u_usergroup" | cut -d: -f1)
-               u_group=$(echo "$u_usergroup" | cut -d: -f2)
-               verbose_echo "subsession file/dir = $f; home file/dir = $userf"
-               verbose_echo "subsession file/dir [user, group] = [$user, $group], home dir file/dir [user, group] = [$u_user, $u_group]"
-
-               if [ "$user" != "$u_user" ] || [ "$group" != "$u_group" ]; then
+               usergroupperms=$(stat --format '%U:%G:%A' "$f")
+               user=$(echo "$usergroupperms" | cut -d: -f1)
+               group=$(echo "$usergroupperms" | cut -d: -f2)
+               perms=$(echo "$usergroupperms" | cut -d: -f3)
+               u_user=$TESTUSER
+               u_group="users"
+               u_perms="drwxr-xr-x"
+               if [ -L "$f" ]; then
+                       u_perms="lrwxrwxrwx"
+               else
+                       prefix_to_remove="$skeldir/"
+                       prefix_removed_f="${templf/#"$prefix_to_remove"}"
+                       first_level=$(echo "$prefix_removed_f" | cut -d/ -f1)
+                       second_level=$(echo "$prefix_removed_f" | cut -d/ -f2)
+                       third_level=$(echo "$prefix_removed_f" | cut -d/ -f3)
+
+                       if [ "$first_level" == ".shared" ]; then
+                               dir_to_check="$third_level"
+                       else
+                               dir_to_check="$second_level"
+                       fi
+
+                       if [ "$dir_to_check" == "cache" ] || [ "$dir_to_check" == "data" ]; then
+                               u_group="system_share"
+                               u_perms="drwxrwsr-x"
+                       fi
+               fi
+
+               # N.B.: When I was performing tests on RPi4, I encountered
+               # an infamous exception to the above scheme of granting permissions.
+               # `xwalk-service` was the one the has the `rwxrwxr-x` permissions set,
+               # while all other home app directories followed the `rwxr-xr-x` scheme.
+               # This won't break the test, but it's good to keep that in mind.
+               if [ "$user" != "$u_user" ] || [ "$group" != "$u_group" ] || [ "$perms" != "$u_perms" ]; then
                        echo "$f: incorrect permissions set!"
                        remove_test_users false
                        exit 1