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

     1  package storenodes
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/multiformats/go-multiaddr"
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/status-im/status-go/services/mailservers"
    10  )
    11  
    12  func TestSerialization(t *testing.T) {
    13  	maddr, err := multiaddr.NewMultiaddr("/dns4/test.net/tcp/30303/p2p/16Uiu2HAmMELCo218hncCtTvC2Dwbej3rbyHQcR8erXNnKGei7WPZ")
    14  	require.NoError(t, err)
    15  	snodes := Storenodes{
    16  		{
    17  			CommunityID: communityID1,
    18  			StorenodeID: "storenode001",
    19  			Name:        "My Mailserver",
    20  			Address:     maddr,
    21  			Fleet:       "prod",
    22  			Version:     2,
    23  		},
    24  	}
    25  
    26  	snodesProtobuf := snodes.ToProtobuf()
    27  
    28  	snodes2 := FromProtobuf(snodesProtobuf, 0)
    29  
    30  	require.Equal(t, snodes[0].Address.String(), snodes2[0].Address.String())
    31  }
    32  
    33  func TestUpdateStorenodesInDB(t *testing.T) {
    34  	db, close := setupTestDB(t, communityID1, communityID2)
    35  	defer close()
    36  
    37  	maddr, err := multiaddr.NewMultiaddr("/dns4/test.net/tcp/30303/p2p/16Uiu2HAmMELCo218hncCtTvC2Dwbej3rbyHQcR8erXNnKGei7WPZ")
    38  	require.NoError(t, err)
    39  
    40  	csn := NewCommunityStorenodes(db, nil)
    41  	snodes1 := []Storenode{
    42  		{
    43  			CommunityID: communityID1,
    44  			StorenodeID: "storenode001",
    45  			Name:        "My Mailserver",
    46  			Address:     maddr,
    47  			Fleet:       "prod",
    48  			Version:     2,
    49  		},
    50  	}
    51  	snodes2 := []Storenode{
    52  		{
    53  			CommunityID: communityID2,
    54  			StorenodeID: "storenode002",
    55  			Name:        "My Mailserver",
    56  			Address:     maddr,
    57  			Fleet:       "prod",
    58  			Version:     2,
    59  		},
    60  	}
    61  	// populate db
    62  	err = csn.UpdateStorenodesInDB(communityID1, snodes1, 0)
    63  	require.NoError(t, err)
    64  	err = csn.UpdateStorenodesInDB(communityID2, snodes2, 0)
    65  	require.NoError(t, err)
    66  
    67  	// check if storenodes are loaded
    68  	ms1, err := csn.GetStorenodeByCommunityID(communityID1.String())
    69  	require.NoError(t, err)
    70  	matchStoreNode(t, snodes1[0], ms1)
    71  
    72  	ms2, err := csn.GetStorenodeByCommunityID(communityID2.String())
    73  	require.NoError(t, err)
    74  	matchStoreNode(t, snodes2[0], ms2)
    75  }
    76  
    77  func matchStoreNode(t *testing.T, sn Storenode, ms mailservers.Mailserver) {
    78  	require.Equal(t, sn.StorenodeID, ms.ID)
    79  	require.Equal(t, sn.Name, ms.Name)
    80  	require.Equal(t, sn.Address.String(), (*ms.Addr).String())
    81  	require.Equal(t, sn.Fleet, ms.Fleet)
    82  }