summaryrefslogtreecommitdiff
path: root/relay/relay_test.go
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2025-03-27 16:40:35 +0100
committerSanto Cariotti <santo@dcariotti.me>2025-03-27 16:40:35 +0100
commitc2dd1f5e20a4054cb4194145293af4f3409759dc (patch)
tree4502611f1c55698d895960247434312f53524b01 /relay/relay_test.go
Init relay
Diffstat (limited to 'relay/relay_test.go')
-rw-r--r--relay/relay_test.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/relay/relay_test.go b/relay/relay_test.go
new file mode 100644
index 0000000..25fcc35
--- /dev/null
+++ b/relay/relay_test.go
@@ -0,0 +1,86 @@
+package relay
+
+import (
+ "context"
+ "testing"
+
+ pb "github.com/boozec/rahanna/relay/proto"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func TestRegisterName(t *testing.T) {
+ server := &Server{}
+ ctx := context.Background()
+
+ t.Run("Valid IP Registration", func(t *testing.T) {
+ response, err := server.RegisterName(ctx, &pb.RelayRequest{Ip: "192.168.1.1"})
+ require.NoError(t, err)
+ assert.NotEmpty(t, response.Name)
+ assert.Equal(t, "192.168.1.1", response.Ip)
+ })
+
+ t.Run("Empty IP Registration", func(t *testing.T) {
+ response, err := server.RegisterName(ctx, &pb.RelayRequest{Ip: ""})
+ assert.Error(t, err)
+ assert.Nil(t, response)
+ })
+
+}
+
+func TestLookup(t *testing.T) {
+ server := &Server{}
+ ctx := context.Background()
+
+ registerResponse, err := server.RegisterName(ctx, &pb.RelayRequest{Ip: "192.168.1.1"})
+ require.NoError(t, err)
+
+ t.Run("Successful Lookup", func(t *testing.T) {
+ response, err := server.Lookup(ctx, &pb.LookupRequest{Name: registerResponse.Name})
+ require.NoError(t, err)
+ assert.Equal(t, registerResponse.Name, response.Name)
+ assert.Equal(t, "192.168.1.1", response.Ip)
+ })
+
+ t.Run("Lookup with Empty Name", func(t *testing.T) {
+ response, err := server.Lookup(ctx, &pb.LookupRequest{Name: ""})
+ assert.Error(t, err)
+ assert.Nil(t, response)
+ })
+
+ t.Run("Lookup Non-Existent Name", func(t *testing.T) {
+ response, err := server.Lookup(ctx, &pb.LookupRequest{Name: "nonexistent"})
+ assert.Error(t, err)
+ assert.Nil(t, response)
+ })
+}
+
+func TestCloseName(t *testing.T) {
+ server := &Server{}
+ ctx := context.Background()
+
+ // Prepare a registered name
+ registerResponse, err := server.RegisterName(ctx, &pb.RelayRequest{Ip: "192.168.1.1"})
+ require.NoError(t, err)
+
+ t.Run("Successful Close", func(t *testing.T) {
+ response, err := server.CloseName(ctx, &pb.LookupRequest{Name: registerResponse.Name})
+ require.NoError(t, err)
+ assert.True(t, response.Status)
+
+ // Verify the name is no longer in the table
+ _, err = server.Lookup(ctx, &pb.LookupRequest{Name: registerResponse.Name})
+ assert.Error(t, err)
+ })
+
+ t.Run("Close with Empty Name", func(t *testing.T) {
+ _, err := server.CloseName(ctx, &pb.LookupRequest{Name: ""})
+ assert.Error(t, err)
+ })
+
+ t.Run("Close Non-Existent Name", func(t *testing.T) {
+ response, err := server.CloseName(ctx, &pb.LookupRequest{Name: "nonexistent"})
+ assert.Error(t, err)
+ assert.False(t, response.Status)
+ })
+}