mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 15:43:03 +00:00
313 lines
5.8 KiB
Go
313 lines
5.8 KiB
Go
package httputil
|
|
|
|
import "testing"
|
|
|
|
func TestValidateCID(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
cid string
|
|
valid bool
|
|
}{
|
|
{
|
|
name: "valid CIDv0",
|
|
cid: "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid CIDv1 base32",
|
|
cid: "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "invalid CID",
|
|
cid: "not-a-cid",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "empty string",
|
|
cid: "",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "whitespace only",
|
|
cid: " ",
|
|
valid: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := ValidateCID(tt.cid); got != tt.valid {
|
|
t.Errorf("ValidateCID(%q) = %v, want %v", tt.cid, got, tt.valid)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateNamespace(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
namespace string
|
|
valid bool
|
|
}{
|
|
{
|
|
name: "valid simple",
|
|
namespace: "default",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid with hyphen",
|
|
namespace: "my-namespace",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid with underscore",
|
|
namespace: "my_namespace",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid alphanumeric",
|
|
namespace: "namespace123",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "invalid - starts with hyphen",
|
|
namespace: "-namespace",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "invalid - special chars",
|
|
namespace: "namespace!",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "invalid - empty",
|
|
namespace: "",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "invalid - too long",
|
|
namespace: "a123456789012345678901234567890123456789012345678901234567890123456789",
|
|
valid: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := ValidateNamespace(tt.namespace); got != tt.valid {
|
|
t.Errorf("ValidateNamespace(%q) = %v, want %v", tt.namespace, got, tt.valid)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateTopicName(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
topic string
|
|
valid bool
|
|
}{
|
|
{
|
|
name: "valid simple",
|
|
topic: "mytopic",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid with path",
|
|
topic: "events/user/created",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid with dots",
|
|
topic: "com.example.events",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "invalid - special chars",
|
|
topic: "topic!@#",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "invalid - empty",
|
|
topic: "",
|
|
valid: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := ValidateTopicName(tt.topic); got != tt.valid {
|
|
t.Errorf("ValidateTopicName(%q) = %v, want %v", tt.topic, got, tt.valid)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateWalletAddress(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
wallet string
|
|
valid bool
|
|
}{
|
|
{
|
|
name: "valid with 0x prefix",
|
|
wallet: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbC",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid without 0x prefix",
|
|
wallet: "742d35Cc6634C0532925a3b844Bc9e7595f0bEbC",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "invalid - too short",
|
|
wallet: "0x123",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "invalid - non-hex chars",
|
|
wallet: "0xZZZd35Cc6634C0532925a3b844Bc9e7595f0bEbC",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "invalid - empty",
|
|
wallet: "",
|
|
valid: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := ValidateWalletAddress(tt.wallet); got != tt.valid {
|
|
t.Errorf("ValidateWalletAddress(%q) = %v, want %v", tt.wallet, got, tt.valid)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNormalizeWalletAddress(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
wallet string
|
|
want string
|
|
}{
|
|
{
|
|
name: "with 0x prefix",
|
|
wallet: "0xABCdef123456789",
|
|
want: "abcdef123456789",
|
|
},
|
|
{
|
|
name: "without prefix",
|
|
wallet: "ABCdef123456789",
|
|
want: "abcdef123456789",
|
|
},
|
|
{
|
|
name: "with whitespace",
|
|
wallet: " 0xABCdef ",
|
|
want: "abcdef",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := NormalizeWalletAddress(tt.wallet); got != tt.want {
|
|
t.Errorf("NormalizeWalletAddress(%q) = %v, want %v", tt.wallet, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsEmpty(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
s string
|
|
want bool
|
|
}{
|
|
{"empty string", "", true},
|
|
{"whitespace only", " ", true},
|
|
{"non-empty", "hello", false},
|
|
{"tabs and spaces", "\t \n", true},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := IsEmpty(tt.s); got != tt.want {
|
|
t.Errorf("IsEmpty(%q) = %v, want %v", tt.s, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsNotEmpty(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
s string
|
|
want bool
|
|
}{
|
|
{"empty string", "", false},
|
|
{"whitespace only", " ", false},
|
|
{"non-empty", "hello", true},
|
|
{"tabs and spaces", "\t \n", false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := IsNotEmpty(tt.s); got != tt.want {
|
|
t.Errorf("IsNotEmpty(%q) = %v, want %v", tt.s, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateDMapName(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
dmap string
|
|
valid bool
|
|
}{
|
|
{
|
|
name: "valid simple",
|
|
dmap: "mymap",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid with hyphen",
|
|
dmap: "my-map",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid with underscore",
|
|
dmap: "my_map",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "valid with dots",
|
|
dmap: "my.map.v1",
|
|
valid: true,
|
|
},
|
|
{
|
|
name: "invalid - special chars",
|
|
dmap: "map!@#",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "invalid - empty",
|
|
dmap: "",
|
|
valid: false,
|
|
},
|
|
{
|
|
name: "invalid - slash",
|
|
dmap: "my/map",
|
|
valid: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := ValidateDMapName(tt.dmap); got != tt.valid {
|
|
t.Errorf("ValidateDMapName(%q) = %v, want %v", tt.dmap, got, tt.valid)
|
|
}
|
|
})
|
|
}
|
|
}
|