#! /bin/bash

. ${0%/*}/test-lib.sh

require_richacls
use_testdir

ncheck "touch x"
ncheck "setrichacl --set 'owner@:rwp::allow group@:rwp::allow everyone@:r::allow' x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
    group@:rwp----------::allow
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'everyone@:wp::allow owner@:r::allow group@:r::allow' x"
ncheck "chmod 664 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
    group@:rwp----------::allow
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'everyone@:wp::deny owner@:rwp::allow group@:rwp::allow' x"
ncheck "chmod 664 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
    group@:rwp----------::allow
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'owner@:rwCo::allow' x"
check "getrichacl x" <<EOF
x:
 owner@:rw-------Co--::allow
EOF

ncheck "setrichacl --set 'owner@:rwpCo::allow' x"
check "getrichacl x" <<EOF
x:
 owner@:rwp----------::allow
EOF

ncheck "chmod 644 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'u:77:rwp::allow' x"
ncheck "chmod 664 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
   user:77:rwp----------::allow
    group@:r------------::deny
 everyone@:r------------::allow
EOF

ncheck "chmod 644 x"
check "getrichacl --numeric-ids x" <<EOF
x:
    owner@:rwp----------::allow
   user:77:r------------::allow
    group@:r------------::deny
 everyone@:r------------::allow
EOF

ncheck "chmod 664 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
   user:77:rwp----------::allow
    group@:r------------::deny
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'u:77:rwp::allow everyone@:r::allow' x"
ncheck "chmod 664 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
   user:77:rwp----------::allow
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'u:77:r::allow everyone@:rwp::allow' x"
ncheck "chmod 664 x"
check "getrichacl x" <<EOF
x:
   user:77:rwp----------::allow
    owner@:rwp----------::allow
    group@:rwp----------::allow
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'u:77:wp::deny everyone@:rwp::allow' x"
ncheck "chmod 664 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
   user:77:-wp----------::deny
    group@:rwp----------::allow
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'u:77:rwp::allow u:77:wp::deny everyone@:rwp::allow' x"
ncheck "chmod 664 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
   user:77:rwp----------::allow
   user:77:-wp----------::deny
    group@:rwp----------::allow
 everyone@:r------------::allow
EOF

ncheck "setrichacl --set 'everyone@:rwp::allow' x"
ncheck "chmod 066 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::deny
 everyone@:rwp----------::allow
EOF

ncheck "chmod 006 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::deny
    group@:rwp----------::deny
 everyone@:rwp----------::allow
EOF

ncheck "chmod 606 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
    group@:rwp----------::deny
 everyone@:rwp----------::allow
EOF

ncheck "setrichacl --set 'u:77:rwp::allow everyone@:rwp::allow' x"
ncheck "chmod 606 x"
check "getrichacl x" <<EOF
x:
    owner@:rwp----------::allow
    group@:rwp----------::deny
 everyone@:rwp----------::allow
EOF

ncheck "chmod 646 x"
check "getrichacl x" <<EOF
x:
   user:77:r------------::allow
    owner@:rwp----------::allow
    group@:-wp----------::deny
   user:77:-wp----------::deny
 everyone@:rwp----------::allow
EOF
