mirror of
https://github.com/StarFleetCPTN/GoMFT.git
synced 2026-09-08 23:50:48 +02:00
- Added new routes and handlers for managing storage providers, including creation, editing, and deletion. - Introduced a new StorageProvider form component for user input. - Enhanced the database schema to support storage provider references in transfer configurations. - Implemented encryption for sensitive fields in storage provider data. - Added tests for storage provider API endpoints and integration with the database. - Updated frontend components to support storage provider selection and testing.
142 lines
3.0 KiB
Go
142 lines
3.0 KiB
Go
package db
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
// TestStorageProviderValidation tests the validation of storage providers
|
|
func TestStorageProviderValidation(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
provider StorageProvider
|
|
wantError bool
|
|
}{
|
|
{
|
|
name: "Valid SFTP provider",
|
|
provider: StorageProvider{
|
|
Name: "Test SFTP",
|
|
Type: ProviderTypeSFTP,
|
|
Host: "example.com",
|
|
Port: 22,
|
|
Username: "user",
|
|
Password: "pass",
|
|
},
|
|
wantError: false,
|
|
},
|
|
{
|
|
name: "Invalid SFTP provider - missing host",
|
|
provider: StorageProvider{
|
|
Name: "Test SFTP",
|
|
Type: ProviderTypeSFTP,
|
|
Port: 22,
|
|
Username: "user",
|
|
Password: "pass",
|
|
},
|
|
wantError: true,
|
|
},
|
|
{
|
|
name: "Valid S3 provider",
|
|
provider: StorageProvider{
|
|
Name: "Test S3",
|
|
Type: ProviderTypeS3,
|
|
AccessKey: "accesskey",
|
|
SecretKey: "secretkey",
|
|
Region: "us-west-1",
|
|
},
|
|
wantError: false,
|
|
},
|
|
{
|
|
name: "Valid OneDrive provider",
|
|
provider: StorageProvider{
|
|
Name: "Test OneDrive",
|
|
Type: ProviderTypeOneDrive,
|
|
ClientID: "clientid",
|
|
ClientSecret: "clientsecret",
|
|
},
|
|
wantError: false,
|
|
},
|
|
// Testing all provider types to ensure they're correctly recognized in the switch statement
|
|
{
|
|
name: "Valid Hetzner provider",
|
|
provider: StorageProvider{
|
|
Name: "Test Hetzner",
|
|
Type: ProviderTypeHetzner,
|
|
Host: "example.com",
|
|
Port: 22,
|
|
Username: "user",
|
|
Password: "pass",
|
|
},
|
|
wantError: false,
|
|
},
|
|
{
|
|
name: "Valid FTP provider",
|
|
provider: StorageProvider{
|
|
Name: "Test FTP",
|
|
Type: ProviderTypeFTP,
|
|
Host: "example.com",
|
|
Port: 21,
|
|
Username: "user",
|
|
Password: "pass",
|
|
},
|
|
wantError: false,
|
|
},
|
|
{
|
|
name: "Valid SMB provider",
|
|
provider: StorageProvider{
|
|
Name: "Test SMB",
|
|
Type: ProviderTypeSMB,
|
|
Host: "example.com",
|
|
Share: "share",
|
|
Username: "user",
|
|
Password: "pass",
|
|
},
|
|
wantError: false,
|
|
},
|
|
{
|
|
name: "Valid Google Drive provider",
|
|
provider: StorageProvider{
|
|
Name: "Test Google Drive",
|
|
Type: ProviderTypeGoogleDrive,
|
|
ClientID: "clientid",
|
|
ClientSecret: "clientsecret",
|
|
},
|
|
wantError: false,
|
|
},
|
|
{
|
|
name: "Valid Google Photo provider",
|
|
provider: StorageProvider{
|
|
Name: "Test Google Photo",
|
|
Type: ProviderTypeGooglePhoto,
|
|
ClientID: "clientid",
|
|
ClientSecret: "clientsecret",
|
|
},
|
|
wantError: false,
|
|
},
|
|
{
|
|
name: "Valid Local provider",
|
|
provider: StorageProvider{
|
|
Name: "Test Local",
|
|
Type: ProviderTypeLocal,
|
|
},
|
|
wantError: false,
|
|
},
|
|
{
|
|
name: "Invalid provider type",
|
|
provider: StorageProvider{
|
|
Name: "Test Invalid",
|
|
Type: "invalid_type",
|
|
},
|
|
wantError: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := tt.provider.Validate()
|
|
if (err != nil) != tt.wantError {
|
|
t.Errorf("Validate() error = %v, wantError %v", err, tt.wantError)
|
|
}
|
|
})
|
|
}
|
|
}
|