This repository has been archived on 2020-04-20. You can view files and clone it, but cannot push or open issues or pull requests.
libricochet-go/connection/channelmanager_test.go

90 lines
2.5 KiB
Go

package connection
import (
"git.openprivacy.ca/openprivacy/libricochet-go/channels"
"testing"
)
type OverrideChatChannel struct {
channels.ChatChannel
}
// Singleton - for chat channels there can only be one instance per direction
func (cc *OverrideChatChannel) Singleton() bool {
return false
}
func TestClientManagerDuplicateMultiple(t *testing.T) {
ccm := NewClientChannelManager()
chatChannel := new(OverrideChatChannel)
_, err := ccm.OpenChannelRequestFromPeer(2, chatChannel)
if err != nil {
t.Errorf("Opening ChatChannel should have succeeded, instead: %v", err)
}
_, err = ccm.OpenChannelRequestFromPeer(4, chatChannel)
if err != nil {
t.Errorf("Opening ChatChannel should have succeeded, instead: %v", err)
}
channel := ccm.Channel("im.ricochet.chat", channels.Inbound)
if channel != nil {
t.Errorf("Get ChatChannel should have failed because there are 2 of them")
}
}
func TestClientManagerDuplicateChannel(t *testing.T) {
ccm := NewClientChannelManager()
chatChannel := new(channels.ChatChannel)
_, err := ccm.OpenChannelRequestFromPeer(2, chatChannel)
if err != nil {
t.Errorf("Opening ChatChannel should have succeeded, instead: %v", err)
}
_, err = ccm.OpenChannelRequestFromPeer(2, chatChannel)
if err == nil {
t.Errorf("Opening ChatChannel should have failed")
}
_, err = ccm.OpenChannelRequestFromPeer(4, chatChannel)
if err == nil {
t.Errorf("Opening ChatChannel should have failed because there should be only 1")
}
}
func TestClientManagerBadServer(t *testing.T) {
ccm := NewClientChannelManager()
// Servers are not allowed to open odd numbered channels
_, err := ccm.OpenChannelRequestFromPeer(3, nil)
if err == nil {
t.Errorf("OpenChannelRequestFromPeer should have failed")
}
}
func TestServerManagerBadClient(t *testing.T) {
scm := NewServerChannelManager()
// Clients are not allowed to open even numbered channels
_, err := scm.OpenChannelRequestFromPeer(2, nil)
if err == nil {
t.Errorf("OpenChannelRequestFromPeer should have failed")
}
}
func TestLocalDuplicate(t *testing.T) {
scm := NewServerChannelManager()
chatChannel := new(channels.ChatChannel)
channel, err := scm.OpenChannelRequest(chatChannel)
if err != nil {
t.Errorf("OpenChannelRequest should not have failed: %v", err)
}
_, err = scm.OpenChannelRequest(chatChannel)
if err == nil {
t.Errorf("OpenChannelRequest should have failed")
}
scm.RemoveChannel(channel.ID)
_, err = scm.OpenChannelRequest(chatChannel)
if err != nil {
t.Errorf("OpenChannelRequest should not have failed: %v", err)
}
}