mirror of
https://github.com/photoprism/photoprism.git
synced 2025-10-02 07:32:48 +08:00
112 lines
3.3 KiB
Go
112 lines
3.3 KiB
Go
package config
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/photoprism/photoprism/internal/auth/acl"
|
|
"github.com/photoprism/photoprism/pkg/fs"
|
|
"github.com/photoprism/photoprism/pkg/fs/duf"
|
|
)
|
|
|
|
func TestConfig_Usage(t *testing.T) {
|
|
c := TestConfig()
|
|
|
|
FlushUsageCache()
|
|
c.options.UsageInfo = true
|
|
result := c.Usage()
|
|
assert.GreaterOrEqual(t, result.FilesUsed, uint64(60000000))
|
|
|
|
t.Logf("Storage Used: %d MB (%d%%), Free: %d MB (%d%%), Total %d MB", result.FilesUsed/duf.MB, result.FilesUsedPct, result.FilesFree/duf.MB, result.FilesFreePct, result.FilesTotal/duf.MB)
|
|
|
|
c.options.FilesQuota = uint64(1)
|
|
result2 := c.Usage()
|
|
|
|
t.Logf("Storage Used: %d MB (%d%%), Free: %d MB (%d%%), Total %d MB", result2.FilesUsed/duf.MB, result2.FilesUsedPct, result2.FilesFree/duf.MB, result2.FilesFreePct, result2.FilesTotal/duf.MB)
|
|
|
|
//result cached
|
|
assert.GreaterOrEqual(t, result2.FilesUsed, uint64(60000000))
|
|
assert.GreaterOrEqual(t, result2.FilesTotal, uint64(60000000))
|
|
|
|
FlushUsageCache()
|
|
result3 := c.Usage()
|
|
|
|
t.Logf("Storage Used: %d MB (%d%%), Free: %d MB (%d%%), Total %d MB", result3.FilesUsed/duf.MB, result3.FilesUsedPct, result3.FilesFree/duf.MB, result3.FilesFreePct, result3.FilesTotal/duf.MB)
|
|
|
|
assert.GreaterOrEqual(t, result3.FilesUsed, uint64(60000000))
|
|
assert.GreaterOrEqual(t, result3.FilesTotal, uint64(18))
|
|
|
|
c.options.UsageInfo = false
|
|
c.options.FilesQuota = uint64(0)
|
|
assert.Equal(t, c.Usage().FilesUsed, uint64(0))
|
|
}
|
|
|
|
func TestConfig_Quota(t *testing.T) {
|
|
c := TestConfig()
|
|
|
|
FlushUsageCache()
|
|
assert.Equal(t, uint64(0), c.FilesQuota())
|
|
assert.Equal(t, 0, c.UsersQuota())
|
|
|
|
c.options.FilesQuota = uint64(1)
|
|
c.options.UsersQuota = 10
|
|
|
|
assert.Equal(t, uint64(1), c.FilesQuota())
|
|
assert.Equal(t, uint64(fs.GB), c.FilesQuotaBytes())
|
|
assert.Equal(t, 10, c.UsersQuota())
|
|
|
|
c.options.FilesQuota = uint64(0)
|
|
c.options.UsersQuota = 0
|
|
}
|
|
|
|
func TestConfig_FilesQuotaReached(t *testing.T) {
|
|
c := TestConfig()
|
|
|
|
FlushUsageCache()
|
|
assert.False(t, c.FilesQuotaReached())
|
|
assert.False(t, c.FilesQuotaExceeded(-1))
|
|
assert.False(t, c.FilesQuotaExceeded(99))
|
|
assert.False(t, c.FilesQuotaExceeded(99))
|
|
|
|
c.options.FilesQuota = uint64(1)
|
|
FlushUsageCache()
|
|
assert.True(t, c.FilesQuotaReached())
|
|
assert.True(t, c.FilesQuotaExceeded(-1))
|
|
assert.True(t, c.FilesQuotaExceeded(99))
|
|
assert.True(t, c.FilesQuotaExceeded(100))
|
|
|
|
c.options.FilesQuota = uint64(5)
|
|
FlushUsageCache()
|
|
assert.False(t, c.FilesQuotaReached())
|
|
|
|
c.options.FilesQuota = uint64(0)
|
|
}
|
|
|
|
func TestConfig_UsersQuotaReached(t *testing.T) {
|
|
c := TestConfig()
|
|
|
|
FlushUsageCache()
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleUser))
|
|
|
|
c.options.UsersQuota = 1
|
|
FlushUsageCache()
|
|
assert.True(t, c.UsersQuotaExceeded(99, acl.RoleAdmin))
|
|
assert.True(t, c.UsersQuotaExceeded(100, acl.RoleAdmin))
|
|
assert.True(t, c.UsersQuotaReached(acl.RoleAdmin))
|
|
assert.True(t, c.UsersQuotaReached(acl.RoleUser))
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleNone))
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleGuest))
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleVisitor))
|
|
|
|
c.options.UsersQuota = 100000
|
|
FlushUsageCache()
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleAdmin))
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleUser))
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleNone))
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleGuest))
|
|
assert.False(t, c.UsersQuotaReached(acl.RoleVisitor))
|
|
|
|
c.options.UsersQuota = 0
|
|
}
|