Skip to content
Snippets Groups Projects
Select Git revision
  • c438e05476cf9c861a542aed96524af4b6ed2fed
  • main default protected
  • development
  • integration
  • v1.1.5
  • v1.1.4
  • v1.1.3
  • v1.1.2
  • v1.1.1
  • v1.1.0
  • v1.0.0
11 results

README.md

Blame
  • manager_test.go 2.11 KiB
    package channels
    
    import (
    	"gitlab.com/elixxir/client/storage/versioned"
    	"gitlab.com/elixxir/crypto/fastRNG"
    	"gitlab.com/elixxir/ekv"
    	"gitlab.com/xx_network/crypto/csprng"
    	"os"
    	"testing"
    	"time"
    
    	jww "github.com/spf13/jwalterweatherman"
    )
    
    func TestMain(m *testing.M) {
    	// Many tests trigger WARN prints;, set the out threshold so the WARN prints
    	// can be seen in the logs
    	jww.SetStdoutThreshold(jww.LevelWarn)
    	os.Exit(m.Run())
    }
    
    func TestManager_JoinChannel(t *testing.T) {
    	mem := &mockEventModel{}
    
    	m := NewManager(versioned.NewKV(ekv.MakeMemstore()),
    		new(mockBroadcastClient),
    		fastRNG.NewStreamGenerator(1, 1, csprng.NewSystemRNG),
    		new(mockNameService), mem).(*manager)
    
    	ch, _, err := newTestChannel("name", "description", m.rng.GetStream())
    	if err != nil {
    		t.Errorf("Failed to create new channel: %+v", err)
    	}
    
    	err = m.JoinChannel(ch)
    	if err != nil {
    		t.Fatalf("Join Channel Errored: %s", err)
    	}
    
    	if _, exists := m.channels[*ch.ReceptionID]; !exists {
    		t.Errorf("Channel %s not added to channel map.", ch.Name)
    	}
    
    	//wait because the event model is called in another thread
    	time.Sleep(1 * time.Second)
    
    	if mem.joinedCh == nil {
    		t.Errorf("the channel join call was not propogated to the event " +
    			"model")
    	}
    }
    
    func TestManager_LeaveChannel(t *testing.T) {
    	mem := &mockEventModel{}
    
    	m := NewManager(versioned.NewKV(ekv.MakeMemstore()),
    		new(mockBroadcastClient),
    		fastRNG.NewStreamGenerator(1, 1, csprng.NewSystemRNG),
    		new(mockNameService), mem).(*manager)
    
    	ch, _, err := newTestChannel("name", "description", m.rng.GetStream())
    	if err != nil {
    		t.Errorf("Failed to create new channel: %+v", err)
    	}
    
    	err = m.JoinChannel(ch)
    	if err != nil {
    		t.Fatalf("Join Channel Errored: %s", err)
    	}
    
    	err = m.LeaveChannel(ch.ReceptionID)
    	if err != nil {
    		t.Fatalf("Leave Channel Errored: %s", err)
    	}
    
    	if _, exists := m.channels[*ch.ReceptionID]; exists {
    		t.Errorf("Channel %s still in map.", ch.Name)
    	}
    
    	//wait because the event model is called in another thread
    	time.Sleep(1 * time.Second)
    
    	if mem.leftCh == nil {
    		t.Errorf("the channel join call was not propogated to the event " +
    			"model")
    	}
    }