diff options
author | Santo Cariotti <santo@dcariotti.me> | 2025-03-27 16:40:35 +0100 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2025-03-27 16:40:35 +0100 |
commit | c2dd1f5e20a4054cb4194145293af4f3409759dc (patch) | |
tree | 4502611f1c55698d895960247434312f53524b01 /relay/relay_test.go |
Init relay
Diffstat (limited to 'relay/relay_test.go')
-rw-r--r-- | relay/relay_test.go | 86 |
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) + }) +} |