2017-05-02 23:33:51 +00:00
|
|
|
package connection
|
|
|
|
|
|
|
|
import (
|
2018-06-08 21:54:31 +00:00
|
|
|
"git.openprivacy.ca/openprivacy/libricochet-go/channels"
|
2017-05-02 23:33:51 +00:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
2018-01-12 17:37:45 +00:00
|
|
|
type OverrideChatChannel struct {
|
2018-01-12 18:04:20 +00:00
|
|
|
channels.ChatChannel
|
2018-01-12 17:37:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-05-02 23:33:51 +00:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|