Files
podman/pkg/specgen/generate/config_common_test.go
Devashish08 0530a564a7 Fix: Improve error message for empty device modes in API requests
- Add specific check for empty device modes in ParseDevice function
- Change error message from 'invalid device mode: ' to 'empty device mode in device specification: <device>'
- Include full device specification in error message for better context
- Add test cases for empty device mode scenarios
- Resolves issue where '/dev/fuse::' provided unhelpful error message

Fixes #26629

Signed-off-by: Devashish08 <devashish.cs025@gmail.com>
2025-07-31 16:24:29 +00:00

56 lines
1.7 KiB
Go

//go:build !remote
package generate
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestParseDevice(t *testing.T) {
tests := []struct {
device string
src string
dst string
perm string
}{
{"/dev/foo", "/dev/foo", "/dev/foo", "rwm"},
{"/dev/foo:/dev/bar", "/dev/foo", "/dev/bar", "rwm"},
{"/dev/foo:/dev/bar:rw", "/dev/foo", "/dev/bar", "rw"},
{"/dev/foo:rw", "/dev/foo", "/dev/foo", "rw"},
{"/dev/foo::rw", "/dev/foo", "/dev/foo", "rw"},
{"/dev/foo:", "/dev/foo", "/dev/foo", "rwm"},
}
for _, test := range tests {
src, dst, perm, err := ParseDevice(test.device)
assert.NoError(t, err)
assert.Equal(t, src, test.src)
assert.Equal(t, dst, test.dst)
assert.Equal(t, perm, test.perm)
}
}
func TestParseDeviceErrors(t *testing.T) {
errorTests := []struct {
device string
expectedError string
}{
{"/dev/fuse::", "empty device mode in device specification: /dev/fuse::"},
{"/dev/fuse:invalid", `invalid device mode "invalid" in device "/dev/fuse:invalid"`},
{"/dev/fuse:/path:xyz", `invalid device mode "xyz" in device "/dev/fuse:/path:xyz"`},
{"/dev/fuse:/path:rw:extra", `invalid device specification: /dev/fuse:/path:rw:extra`},
{"/dev/fuse:/path:rw:extra:more", `invalid device specification: /dev/fuse:/path:rw:extra:more`},
{"/dev/fuse:notapath", `invalid device mode "notapath" in device "/dev/fuse:notapath"`},
{"/dev/fuse:x", `invalid device mode "x" in device "/dev/fuse:x"`},
{"/dev/fuse:rwx", `invalid device mode "rwx" in device "/dev/fuse:rwx"`},
{"/dev/fuse:rrw", `invalid device mode "rrw" in device "/dev/fuse:rrw"`},
}
for _, test := range errorTests {
_, _, _, err := ParseDevice(test.device)
assert.Error(t, err)
assert.Contains(t, err.Error(), test.expectedError)
}
}