summaryrefslogtreecommitdiffstats
path: root/models/forgefed/federationhost_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/forgefed/federationhost_test.go')
-rw-r--r--models/forgefed/federationhost_test.go78
1 files changed, 78 insertions, 0 deletions
diff --git a/models/forgefed/federationhost_test.go b/models/forgefed/federationhost_test.go
new file mode 100644
index 0000000..ea5494c
--- /dev/null
+++ b/models/forgefed/federationhost_test.go
@@ -0,0 +1,78 @@
+// Copyright 2024 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package forgefed
+
+import (
+ "strings"
+ "testing"
+ "time"
+
+ "code.gitea.io/gitea/modules/validation"
+)
+
+func Test_FederationHostValidation(t *testing.T) {
+ sut := FederationHost{
+ HostFqdn: "host.do.main",
+ NodeInfo: NodeInfo{
+ SoftwareName: "forgejo",
+ },
+ LatestActivity: time.Now(),
+ }
+ if res, err := validation.IsValid(sut); !res {
+ t.Errorf("sut should be valid but was %q", err)
+ }
+
+ sut = FederationHost{
+ HostFqdn: "",
+ NodeInfo: NodeInfo{
+ SoftwareName: "forgejo",
+ },
+ LatestActivity: time.Now(),
+ }
+ if res, _ := validation.IsValid(sut); res {
+ t.Errorf("sut should be invalid: HostFqdn empty")
+ }
+
+ sut = FederationHost{
+ HostFqdn: strings.Repeat("fill", 64),
+ NodeInfo: NodeInfo{
+ SoftwareName: "forgejo",
+ },
+ LatestActivity: time.Now(),
+ }
+ if res, _ := validation.IsValid(sut); res {
+ t.Errorf("sut should be invalid: HostFqdn too long (len=256)")
+ }
+
+ sut = FederationHost{
+ HostFqdn: "host.do.main",
+ NodeInfo: NodeInfo{},
+ LatestActivity: time.Now(),
+ }
+ if res, _ := validation.IsValid(sut); res {
+ t.Errorf("sut should be invalid: NodeInfo invalid")
+ }
+
+ sut = FederationHost{
+ HostFqdn: "host.do.main",
+ NodeInfo: NodeInfo{
+ SoftwareName: "forgejo",
+ },
+ LatestActivity: time.Now().Add(1 * time.Hour),
+ }
+ if res, _ := validation.IsValid(sut); res {
+ t.Errorf("sut should be invalid: Future timestamp")
+ }
+
+ sut = FederationHost{
+ HostFqdn: "hOst.do.main",
+ NodeInfo: NodeInfo{
+ SoftwareName: "forgejo",
+ },
+ LatestActivity: time.Now(),
+ }
+ if res, _ := validation.IsValid(sut); res {
+ t.Errorf("sut should be invalid: HostFqdn lower case")
+ }
+}