53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package npm
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/any-hub/any-hub/internal/hubmodule"
|
|
)
|
|
|
|
func TestNPMMetadataRegistration(t *testing.T) {
|
|
meta, ok := hubmodule.Resolve("npm")
|
|
if !ok {
|
|
t.Fatalf("npm module not registered")
|
|
}
|
|
if meta.Key != "npm" {
|
|
t.Fatalf("unexpected module key: %s", meta.Key)
|
|
}
|
|
if meta.MigrationState == "" {
|
|
t.Fatalf("migration state must be set")
|
|
}
|
|
if len(meta.SupportedProtocols) == 0 {
|
|
t.Fatalf("supported protocols must not be empty")
|
|
}
|
|
if meta.CacheStrategy.TTLHint != npmDefaultTTL {
|
|
t.Fatalf("expected default ttl %s, got %s", npmDefaultTTL, meta.CacheStrategy.TTLHint)
|
|
}
|
|
if meta.CacheStrategy.ValidationMode != hubmodule.ValidationModeLastModified {
|
|
t.Fatalf("expected validation mode last-modified, got %s", meta.CacheStrategy.ValidationMode)
|
|
}
|
|
if !meta.CacheStrategy.SupportsStreamingWrite {
|
|
t.Fatalf("npm strategy should support streaming writes")
|
|
}
|
|
}
|
|
|
|
func TestNPMStrategyOverrides(t *testing.T) {
|
|
meta, ok := hubmodule.Resolve("npm")
|
|
if !ok {
|
|
t.Fatalf("npm module not registered")
|
|
}
|
|
|
|
overrideTTL := 10 * time.Minute
|
|
strategy := hubmodule.ResolveStrategy(meta, hubmodule.StrategyOptions{
|
|
TTLOverride: overrideTTL,
|
|
ValidationOverride: hubmodule.ValidationModeETag,
|
|
})
|
|
if strategy.TTLHint != overrideTTL {
|
|
t.Fatalf("expected ttl override %s, got %s", overrideTTL, strategy.TTLHint)
|
|
}
|
|
if strategy.ValidationMode != hubmodule.ValidationModeETag {
|
|
t.Fatalf("expected validation mode override to etag, got %s", strategy.ValidationMode)
|
|
}
|
|
}
|