github.com/status-im/status-go@v1.1.0/protocol/messenger_base_test.go (about)

     1  package protocol
     2  
     3  import (
     4  	"crypto/ecdsa"
     5  
     6  	"github.com/stretchr/testify/suite"
     7  
     8  	"go.uber.org/zap"
     9  
    10  	gethbridge "github.com/status-im/status-go/eth-node/bridge/geth"
    11  	"github.com/status-im/status-go/eth-node/crypto"
    12  	"github.com/status-im/status-go/eth-node/types"
    13  	"github.com/status-im/status-go/multiaccounts/settings"
    14  	"github.com/status-im/status-go/params"
    15  	"github.com/status-im/status-go/protocol/tt"
    16  	"github.com/status-im/status-go/waku"
    17  )
    18  
    19  const DefaultProfileDisplayName = ""
    20  
    21  func (s *MessengerBaseTestSuite) SetupTest() {
    22  	s.logger = tt.MustCreateTestLogger()
    23  
    24  	config := waku.DefaultConfig
    25  	config.MinimumAcceptedPoW = 0
    26  	shh := waku.New(&config, s.logger)
    27  	s.shh = gethbridge.NewGethWakuWrapper(shh)
    28  	s.Require().NoError(shh.Start())
    29  
    30  	s.m = s.newMessenger()
    31  	s.privateKey = s.m.identity
    32  }
    33  
    34  func (s *MessengerBaseTestSuite) TearDownTest() {
    35  	TearDownMessenger(&s.Suite, s.m)
    36  	_ = s.logger.Sync()
    37  }
    38  
    39  func (s *MessengerBaseTestSuite) newMessenger() *Messenger {
    40  	privateKey, err := crypto.GenerateKey()
    41  	s.Require().NoError(err)
    42  
    43  	messenger, err := newMessengerWithKey(s.shh, privateKey, s.logger, nil)
    44  	s.Require().NoError(err)
    45  	return messenger
    46  }
    47  
    48  type MessengerBaseTestSuite struct {
    49  	suite.Suite
    50  	m          *Messenger        // main instance of Messenger
    51  	privateKey *ecdsa.PrivateKey // private key for the main instance of Messenger
    52  	// If one wants to send messages between different instances of Messenger,
    53  	// a single waku service should be shared.
    54  	shh    types.Waku
    55  	logger *zap.Logger
    56  }
    57  
    58  func newMessengerWithKey(shh types.Waku, privateKey *ecdsa.PrivateKey, logger *zap.Logger, extraOptions []Option) (*Messenger, error) {
    59  	options := []Option{
    60  		WithAppSettings(settings.Settings{
    61  			DisplayName:               DefaultProfileDisplayName,
    62  			ProfilePicturesShowTo:     1,
    63  			ProfilePicturesVisibility: 1,
    64  			URLUnfurlingMode:          settings.URLUnfurlingAlwaysAsk,
    65  		}, params.NodeConfig{}),
    66  	}
    67  	options = append(options, extraOptions...)
    68  
    69  	m, err := newTestMessenger(shh, testMessengerConfig{
    70  		privateKey:   privateKey,
    71  		logger:       logger,
    72  		extraOptions: options,
    73  	})
    74  	if err != nil {
    75  		return nil, err
    76  	}
    77  
    78  	m.EnableBackedupMessagesProcessing()
    79  
    80  	_, err = m.Start()
    81  	if err != nil {
    82  		return nil, err
    83  	}
    84  
    85  	return m, nil
    86  }