aboutsummaryrefslogtreecommitdiff
path: root/test/sftp/README.md
blob: 17b5e67c7156e8132b624786c7fd00bbc102e93a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# 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
   ```