Files
zeekayandHanzo Dev 601155d4d2 refactor(module): declare own import path github.com/hanzoai/go-openai-realtime
Hard-fork of WqyJh/go-openai-realtime (v0.5.x line, commit 3f3cf7a) into the
hanzoai org so the OpenAI/audio-LLM Go stack is fully owned. Renames the module
path across root, contrib/ws-gorilla, and examples, and repoints go-openai from
sashabaranov to github.com/hanzoai/go-openai v1.41.0 (required directly, no
replace directives anywhere).

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-17 22:07:18 -07:00

76 lines
2.3 KiB
Go

package openairt_test
import (
"context"
"net/http"
"testing"
openairt "github.com/hanzoai/go-openai-realtime"
"github.com/stretchr/testify/require"
)
type mockDialer struct {
dialFunc func(ctx context.Context, url string, header http.Header) (openairt.WebSocketConn, error)
}
func (m *mockDialer) Dial(ctx context.Context, url string, header http.Header) (openairt.WebSocketConn, error) {
return m.dialFunc(ctx, url, header)
}
type mockWebSocketConn struct {
readMessageFunc func(ctx context.Context) (openairt.MessageType, []byte, error)
writeMessageFunc func(ctx context.Context, messageType openairt.MessageType, data []byte) error
closeFunc func() error
responseFunc func() *http.Response
pingFunc func(ctx context.Context) error
}
func (m *mockWebSocketConn) ReadMessage(ctx context.Context) (openairt.MessageType, []byte, error) {
return m.readMessageFunc(ctx)
}
func (m *mockWebSocketConn) WriteMessage(ctx context.Context, messageType openairt.MessageType, data []byte) error {
return m.writeMessageFunc(ctx, messageType, data)
}
func (m *mockWebSocketConn) Close() error {
return m.closeFunc()
}
func (m *mockWebSocketConn) Response() *http.Response {
return m.responseFunc()
}
func (m *mockWebSocketConn) Ping(ctx context.Context) error {
return m.pingFunc(ctx)
}
func TestConnect(t *testing.T) {
token := "mock-token"
model := "test-model"
client := openairt.NewClient(token)
dialCalled := false
readMessageCalled := false
dialer := &mockDialer{
dialFunc: func(_ context.Context, url string, header http.Header) (openairt.WebSocketConn, error) {
require.Equal(t, openairt.OpenaiRealtimeAPIURLv1+"?model="+model, url)
require.Equal(t, "Bearer "+token, header.Get("Authorization"))
require.Equal(t, "realtime=v1", header.Get("OpenAI-Beta"))
dialCalled = true
return &mockWebSocketConn{
readMessageFunc: func(_ context.Context) (openairt.MessageType, []byte, error) {
readMessageCalled = true
return openairt.MessageText, []byte("test-message"), nil
},
}, nil
},
}
conn, err := client.Connect(context.Background(), openairt.WithModel(model), openairt.WithDialer(dialer), openairt.WithLogger(openairt.StdLogger{}))
require.NoError(t, err)
require.NotNil(t, conn)
require.True(t, dialCalled)
require.False(t, readMessageCalled)
}