# SeaweedFS SFTP Integration Tests This directory contains integration tests for the SeaweedFS SFTP server. ## Prerequisites 1. Build the SeaweedFS binary: ```bash cd ../../weed go build -o weed . ``` 2. Ensure `ssh-keygen` is available (for generating test SSH host keys) ## Running Tests ### Run all tests ```bash make test ``` ### Run tests with verbose output ```bash make test-verbose ``` ### Run a specific test ```bash go test -v -run TestHomeDirPathTranslation ``` ### Skip long-running tests ```bash go test -short ./... ``` ## Test Structure - `framework.go` - Test framework that starts SeaweedFS cluster with SFTP - `basic_test.go` - Basic SFTP operation tests including: - HomeDir path translation (fixes issue #7470) - File upload/download - Directory operations - Large file handling - Edge cases ## Test Configuration Tests use `testdata/userstore.json` which defines test users: | Username | Password | HomeDir | Permissions | |----------|----------|---------|-------------| | admin | adminpassword | / | Full access | | testuser | testuserpassword | /sftp/testuser | Full access to home | | readonly | readonlypassword | /public | Read-only | ## Key Tests ### TestHomeDirPathTranslation Tests the fix for [issue #7470](https://github.com/seaweedfs/seaweedfs/issues/7470) where users with a non-root HomeDir (e.g., `/sftp/testuser`) could not upload files to `/` because the path wasn't being translated to their home directory. The test verifies: - Uploading to `/` correctly maps to the user's HomeDir - Creating directories at `/` works - Listing `/` shows the user's home directory contents - All path operations respect the HomeDir translation ## Debugging To debug test failures: 1. Enable verbose output: ```bash go test -v -run TestName ``` 2. Keep test artifacts (don't cleanup): ```go config := DefaultTestConfig() config.SkipCleanup = true ``` 3. Enable debug logging: ```go config := DefaultTestConfig() config.EnableDebug = true ```