Activity-Relay/app/control/domain_test.go

246 lines
4.9 KiB
Go

package control
import (
"bytes"
"strings"
"testing"
)
func TestListDomainSubscriber(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := configCmdInit()
app.SetArgs([]string{"import", "--json", "../misc/test/exampleConfig.json"})
app.Execute()
relayState.Load()
buffer := new(bytes.Buffer)
app = domainCmdInit()
app.SetOut(buffer)
app.SetArgs([]string{"list"})
app.Execute()
output := buffer.String()
valid := ` - Subscriber domain :
subscription.example.jp
Total : 1
`
if output != valid {
t.Fatalf("Invalid Response.")
}
}
func TestListDomainLimited(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := configCmdInit()
app.SetArgs([]string{"import", "--json", "../misc/test/exampleConfig.json"})
app.Execute()
relayState.Load()
buffer := new(bytes.Buffer)
app = domainCmdInit()
app.SetOut(buffer)
app.SetArgs([]string{"list", "-t", "limited"})
app.Execute()
output := buffer.String()
valid := ` - Limited domain :
limitedDomain.example.jp
Total : 1
`
if output != valid {
t.Fatalf("Invalid Response.")
}
}
func TestListDomainBlocked(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := configCmdInit()
app.SetArgs([]string{"import", "--json", "../misc/test/exampleConfig.json"})
app.Execute()
relayState.Load()
buffer := new(bytes.Buffer)
app = domainCmdInit()
app.SetOut(buffer)
app.SetArgs([]string{"list", "-t", "blocked"})
app.Execute()
output := buffer.String()
valid := ` - Blocked domain :
blockedDomain.example.jp
Total : 1
`
if output != valid {
t.Fatalf("Invalid Response.")
}
}
func TestSetDomainBlocked(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := domainCmdInit()
app.SetArgs([]string{"set", "-t", "blocked", "testdomain.example.jp"})
app.Execute()
relayState.Load()
valid := false
for _, domain := range relayState.BlockedDomains {
if domain == "testdomain.example.jp" {
valid = true
}
}
if !valid {
t.Fatalf("Not set blocked domain")
}
}
func TestSetDomainLimited(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := domainCmdInit()
app.SetArgs([]string{"set", "-t", "limited", "testdomain.example.jp"})
app.Execute()
relayState.Load()
valid := false
for _, domain := range relayState.LimitedDomains {
if domain == "testdomain.example.jp" {
valid = true
}
}
if !valid {
t.Fatalf("Not set limited domain")
}
}
func TestUnsetDomainBlocked(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := configCmdInit()
app.SetArgs([]string{"import", "--json", "../misc/test/exampleConfig.json"})
app.Execute()
app = domainCmdInit()
app.SetArgs([]string{"set", "-t", "blocked", "-u", "blockedDomain.example.jp"})
app.Execute()
relayState.Load()
valid := true
for _, domain := range relayState.BlockedDomains {
if domain == "blockedDomain.example.jp" {
valid = false
}
}
if !valid {
t.Fatalf("Not unset blocked domain")
}
}
func TestUnsetDomainLimited(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := configCmdInit()
app.SetArgs([]string{"import", "--json", "../misc/test/exampleConfig.json"})
app.Execute()
app = domainCmdInit()
app.SetArgs([]string{"set", "-t", "limited", "-u", "limitedDomain.example.jp"})
app.Execute()
relayState.Load()
valid := true
for _, domain := range relayState.LimitedDomains {
if domain == "limitedDomain.example.jp" {
valid = false
}
}
if !valid {
t.Fatalf("Not unset blocked domain")
}
}
func TestSetDomainInvalid(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := configCmdInit()
app.SetArgs([]string{"import", "--json", "../misc/test/exampleConfig.json"})
app.Execute()
relayState.Load()
buffer := new(bytes.Buffer)
app = domainCmdInit()
app.SetOut(buffer)
app.SetArgs([]string{"set", "-t", "hoge", "hoge.example.jp"})
app.Execute()
output := buffer.String()
if strings.Split(output, "\n")[0] != "Invalid type given" {
t.Fatalf("Invalid Response.")
}
}
func TestUnfollowDomain(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := configCmdInit()
app.SetArgs([]string{"import", "--json", "../misc/test/exampleConfig.json"})
app.Execute()
app = domainCmdInit()
app.SetArgs([]string{"unfollow", "subscription.example.jp"})
app.Execute()
relayState.Load()
valid := true
for _, domain := range relayState.Subscriptions {
if domain.Domain == "subscription.example.jp" {
valid = false
}
}
if !valid {
t.Fatalf("Not unfollowed domain")
}
}
func TestInvalidUnfollowDomain(t *testing.T) {
relayState.RedisClient.FlushAll().Result()
app := configCmdInit()
app.SetArgs([]string{"import", "--json", "../misc/test/exampleConfig.json"})
app.Execute()
relayState.Load()
buffer := new(bytes.Buffer)
app = domainCmdInit()
app.SetOut(buffer)
app.SetArgs([]string{"unfollow", "unknown.tld"})
app.Execute()
output := buffer.String()
if strings.Split(output, "\n")[0] != "Invalid domain [unknown.tld] given" {
t.Fatalf("Invalid Response.")
}
}