snapshot of https://github.com/livekit/livekit.git @ 08c5433449c106943231037d0b892895f6e92d3b (2026-09-15)
This commit is contained in:
122
pkg/service/ioservice_sip_test.go
Normal file
122
pkg/service/ioservice_sip_test.go
Normal file
@@ -0,0 +1,122 @@
|
||||
// Copyright 2024 LiveKit, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package service_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/dennwc/iters"
|
||||
"github.com/livekit/livekit-server/pkg/service"
|
||||
"github.com/livekit/psrpc"
|
||||
"slices"
|
||||
"testing"
|
||||
|
||||
"github.com/livekit/protocol/livekit"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func ioStoreDocker(t testing.TB) (*service.IOInfoService, *service.RedisStore) {
|
||||
r := redisClientDocker(t)
|
||||
bus := psrpc.NewRedisMessageBus(r)
|
||||
rs := service.NewRedisStore(r)
|
||||
io, err := service.NewIOInfoService(bus, rs, rs, rs, nil)
|
||||
require.NoError(t, err)
|
||||
return io, rs
|
||||
}
|
||||
|
||||
func TestSIPTrunkSelect(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
s, rs := ioStoreDocker(t)
|
||||
|
||||
for _, tr := range []*livekit.SIPInboundTrunkInfo{
|
||||
{SipTrunkId: "any", Numbers: nil},
|
||||
{SipTrunkId: "B", Numbers: []string{"B1", "B2"}},
|
||||
{SipTrunkId: "BC", Numbers: []string{"B1", "C1"}},
|
||||
} {
|
||||
err := rs.StoreSIPInboundTrunk(ctx, tr)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
for _, tr := range []*livekit.SIPTrunkInfo{
|
||||
{SipTrunkId: "old-any", OutboundNumber: ""},
|
||||
{SipTrunkId: "old-A", OutboundNumber: "A"},
|
||||
} {
|
||||
err := rs.StoreSIPTrunk(ctx, tr)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
for _, c := range []struct {
|
||||
number string
|
||||
exp []string
|
||||
}{
|
||||
{"A", []string{"old-A", "old-any", "any"}},
|
||||
{"B1", []string{"B", "BC", "old-any", "any"}},
|
||||
{"B2", []string{"B", "old-any", "any"}},
|
||||
{"C1", []string{"BC", "old-any", "any"}},
|
||||
{"wrong", []string{"old-any", "any"}},
|
||||
} {
|
||||
t.Run(c.number, func(t *testing.T) {
|
||||
it := s.SelectSIPInboundTrunk(ctx, c.number)
|
||||
defer it.Close()
|
||||
list, err := iters.All(it)
|
||||
require.NoError(t, err)
|
||||
var ids []string
|
||||
for _, v := range list {
|
||||
ids = append(ids, v.SipTrunkId)
|
||||
}
|
||||
slices.Sort(c.exp)
|
||||
slices.Sort(ids)
|
||||
require.Equal(t, c.exp, ids)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSIPRuleSelect(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
s, rs := ioStoreDocker(t)
|
||||
|
||||
for _, r := range []*livekit.SIPDispatchRuleInfo{
|
||||
{SipDispatchRuleId: "any", TrunkIds: nil},
|
||||
{SipDispatchRuleId: "B", TrunkIds: []string{"B1", "B2"}},
|
||||
{SipDispatchRuleId: "BC", TrunkIds: []string{"B1", "C1"}},
|
||||
} {
|
||||
err := rs.StoreSIPDispatchRule(ctx, r)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
for _, c := range []struct {
|
||||
trunk string
|
||||
exp []string
|
||||
}{
|
||||
{"A", []string{"any"}},
|
||||
{"B1", []string{"B", "BC", "any"}},
|
||||
{"B2", []string{"B", "any"}},
|
||||
{"C1", []string{"BC", "any"}},
|
||||
{"wrong", []string{"any"}},
|
||||
} {
|
||||
t.Run(c.trunk, func(t *testing.T) {
|
||||
it := s.SelectSIPDispatchRule(ctx, c.trunk)
|
||||
defer it.Close()
|
||||
list, err := iters.All(it)
|
||||
require.NoError(t, err)
|
||||
var ids []string
|
||||
for _, v := range list {
|
||||
ids = append(ids, v.SipDispatchRuleId)
|
||||
}
|
||||
slices.Sort(c.exp)
|
||||
slices.Sort(ids)
|
||||
require.Equal(t, c.exp, ids)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user