mirror of
https://github.com/Forceu/Gokapi.git
synced 2026-01-24 01:48:28 -06:00
86 lines
3.6 KiB
Go
86 lines
3.6 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/forceu/gokapi/internal/test"
|
|
"testing"
|
|
)
|
|
|
|
func TestToJsonResult(t *testing.T) {
|
|
file := File{
|
|
Id: "testId",
|
|
Name: "testName",
|
|
Size: "10 B",
|
|
SizeBytes: 10,
|
|
SHA1: "sha256",
|
|
ExpireAt: 1750852108,
|
|
ExpireAtString: "Wed Jun 25 2025 11:48:28",
|
|
DownloadsRemaining: 1,
|
|
PasswordHash: "pwhash",
|
|
HotlinkId: "hotlinkid",
|
|
ContentType: "text/html",
|
|
AwsBucket: "test",
|
|
UploadDate: 1748180908,
|
|
UserId: 2,
|
|
DownloadCount: 3,
|
|
Encryption: EncryptionInfo{
|
|
IsEncrypted: true,
|
|
DecryptionKey: []byte{0x01},
|
|
Nonce: []byte{0x02},
|
|
},
|
|
UnlimitedDownloads: true,
|
|
UnlimitedTime: true,
|
|
}
|
|
test.IsEqualString(t, file.ToJsonResult("serverurl/", false), `{"Result":"OK","FileInfo":{"Id":"testId","Name":"testName","Size":"10 B","HotlinkId":"hotlinkid","ContentType":"text/html","ExpireAtString":"Wed Jun 25 2025 11:48:28","UrlDownload":"serverurl/d?id=testId","UrlHotlink":"","UploadDate":1748180908,"ExpireAt":1750852108,"SizeBytes":10,"DownloadsRemaining":1,"DownloadCount":3,"UnlimitedDownloads":true,"UnlimitedTime":true,"RequiresClientSideDecryption":true,"IsEncrypted":true,"IsEndToEndEncrypted":false,"IsPasswordProtected":true,"IsSavedOnLocalStorage":false,"UploaderId":2},"IncludeFilename":false}`)
|
|
test.IsEqualString(t, file.ToJsonResult("serverurl/", true), `{"Result":"OK","FileInfo":{"Id":"testId","Name":"testName","Size":"10 B","HotlinkId":"hotlinkid","ContentType":"text/html","ExpireAtString":"Wed Jun 25 2025 11:48:28","UrlDownload":"serverurl/d/testId/testName","UrlHotlink":"","UploadDate":1748180908,"ExpireAt":1750852108,"SizeBytes":10,"DownloadsRemaining":1,"DownloadCount":3,"UnlimitedDownloads":true,"UnlimitedTime":true,"RequiresClientSideDecryption":true,"IsEncrypted":true,"IsEndToEndEncrypted":false,"IsPasswordProtected":true,"IsSavedOnLocalStorage":false,"UploaderId":2},"IncludeFilename":true}`)
|
|
}
|
|
|
|
func TestIsLocalStorage(t *testing.T) {
|
|
file := File{AwsBucket: "123"}
|
|
test.IsEqualBool(t, file.IsLocalStorage(), false)
|
|
file.AwsBucket = ""
|
|
test.IsEqualBool(t, file.IsLocalStorage(), true)
|
|
}
|
|
|
|
func TestErrorAsJson(t *testing.T) {
|
|
result := errorAsJson(errors.New("testerror"))
|
|
test.IsEqualString(t, result, "{\"Result\":\"error\",\"ErrorMessage\":\"testerror\"}")
|
|
}
|
|
|
|
func TestRequiresClientDecryption(t *testing.T) {
|
|
file := File{
|
|
Id: "test",
|
|
AwsBucket: "bucket",
|
|
Encryption: EncryptionInfo{
|
|
IsEncrypted: true,
|
|
},
|
|
}
|
|
test.IsEqualBool(t, file.RequiresClientDecryption(), true)
|
|
file.Encryption.IsEncrypted = false
|
|
test.IsEqualBool(t, file.RequiresClientDecryption(), false)
|
|
file.AwsBucket = ""
|
|
test.IsEqualBool(t, file.RequiresClientDecryption(), false)
|
|
file.Encryption.IsEncrypted = true
|
|
test.IsEqualBool(t, file.RequiresClientDecryption(), false)
|
|
}
|
|
|
|
func TestGetHolinkUrl(t *testing.T) {
|
|
file := FileApiOutput{
|
|
Id: "testfile",
|
|
Name: "name",
|
|
Size: "1 B",
|
|
HotlinkId: "test",
|
|
RequiresClientSideDecryption: true,
|
|
}
|
|
url := getHotlinkUrl(file, "testserver/", false)
|
|
test.IsEqualString(t, url, "")
|
|
file.RequiresClientSideDecryption = false
|
|
url = getHotlinkUrl(file, "testserver/", false)
|
|
test.IsEqualString(t, url, "testserver/h/test")
|
|
file.HotlinkId = ""
|
|
url = getHotlinkUrl(file, "testserver/", false)
|
|
test.IsEqualString(t, url, "testserver/downloadFile?id=testfile")
|
|
url = getHotlinkUrl(file, "testserver/", true)
|
|
test.IsEqualString(t, url, "testserver/dh/testfile/name")
|
|
}
|