test(storage): add out-of-bounds chown coverage for go code and script
This commit is contained in:
17
plugins/storage/subcommands_test.go
Normal file
17
plugins/storage/subcommands_test.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func TestResolveChownIDRejectsOutOfBoundsValues(t *testing.T) {
|
||||
RegisterTestingT(t)
|
||||
|
||||
for _, chownFlag := range []string{"-1", "65536", "100000", "231072", "abc", "1.5", ""} {
|
||||
_, err := ResolveChownID(chownFlag)
|
||||
Expect(err).To(HaveOccurred(), "expected %q to be rejected", chownFlag)
|
||||
Expect(err.Error()).To(ContainSubstring("Unsupported chown permissions"))
|
||||
}
|
||||
}
|
||||
@@ -107,6 +107,38 @@ teardown() {
|
||||
assert_output_contains "Setting directory ownership to 32767:32767" 1
|
||||
}
|
||||
|
||||
@test "(storage) chown-storage-dir rejects out-of-bounds chown values" {
|
||||
run /bin/bash -c "DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_AVAILABLE_PATH/storage/bin/chown-storage-dir $TEST_APP 65536"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_output_contains "Unsupported chown permissions"
|
||||
|
||||
run /bin/bash -c "DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_AVAILABLE_PATH/storage/bin/chown-storage-dir $TEST_APP 165535"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_output_contains "Unsupported chown permissions"
|
||||
|
||||
run /bin/bash -c "DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_AVAILABLE_PATH/storage/bin/chown-storage-dir $TEST_APP 231072"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_output_contains "Unsupported chown permissions"
|
||||
|
||||
run /bin/bash -c "DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_AVAILABLE_PATH/storage/bin/chown-storage-dir $TEST_APP -1"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_output_contains "Value must be a non-negative integer"
|
||||
|
||||
run /bin/bash -c "DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_AVAILABLE_PATH/storage/bin/chown-storage-dir $TEST_APP abc"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_output_contains "Value must be a non-negative integer"
|
||||
}
|
||||
|
||||
@test "(storage) storage:mount, storage:list, storage:umount" {
|
||||
run /bin/bash -c "dokku storage:mount $TEST_APP /tmp/mount:/mount"
|
||||
echo "output: $output"
|
||||
@@ -410,6 +442,23 @@ teardown() {
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(storage:create) --chown rejects an out-of-bounds numeric uid" {
|
||||
run /bin/bash -c "dokku storage:create --chown 65536 rdmtest-chown-oob"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_output_contains "Unsupported chown permissions"
|
||||
|
||||
run /bin/bash -c "dokku storage:create --chown -1 rdmtest-chown-oob"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_output_contains "Unsupported chown permissions"
|
||||
|
||||
run /bin/bash -c "dokku storage:list-entries --format json | jq -r '.[].name' | grep '^rdmtest-chown-oob$' || true"
|
||||
assert_output ""
|
||||
}
|
||||
|
||||
@test "(storage:create) --chown rejects a non-default host path" {
|
||||
custom_path="/tmp/rdmtest-chown-custom"
|
||||
rm -rf "$custom_path"
|
||||
|
||||
Reference in New Issue
Block a user