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

     1  package pushnotificationserver
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	"github.com/status-im/status-go/eth-node/types"
     9  	"github.com/status-im/status-go/protocol/protobuf"
    10  )
    11  
    12  func TestPushNotificationRegistrationToGoRushRequest(t *testing.T) {
    13  	message1 := []byte("message-1")
    14  	message2 := []byte("message-2")
    15  	message3 := []byte("message-3")
    16  	hexMessage1 := types.EncodeHex(message1)
    17  	hexMessage2 := types.EncodeHex(message2)
    18  	hexMessage3 := types.EncodeHex(message3)
    19  	chatID := []byte("chat-id")
    20  	publicKey1 := []byte("public-key-1")
    21  	publicKey2 := []byte("public-key-2")
    22  	installationID1 := "installation-id-1"
    23  	installationID2 := "installation-id-2"
    24  	installationID3 := "installation-id-3"
    25  	var platform1 uint = 1
    26  	var platform2 uint = 2
    27  	var platform3 uint = 2
    28  	token1 := "token-1"
    29  	token2 := "token-2"
    30  	token3 := "token-3"
    31  
    32  	requestAndRegistrations := []*RequestAndRegistration{
    33  		{
    34  			Request: &protobuf.PushNotification{
    35  				ChatId:         chatID,
    36  				Type:           protobuf.PushNotification_MESSAGE,
    37  				PublicKey:      publicKey1,
    38  				InstallationId: installationID1,
    39  				Message:        message1,
    40  			},
    41  			Registration: &protobuf.PushNotificationRegistration{
    42  				DeviceToken: token1,
    43  				TokenType:   protobuf.PushNotificationRegistration_APN_TOKEN,
    44  			},
    45  		},
    46  		{
    47  			Request: &protobuf.PushNotification{
    48  				ChatId:         chatID,
    49  				Type:           protobuf.PushNotification_MESSAGE,
    50  				PublicKey:      publicKey1,
    51  				InstallationId: installationID2,
    52  				Message:        message2,
    53  			},
    54  			Registration: &protobuf.PushNotificationRegistration{
    55  				DeviceToken: token2,
    56  				TokenType:   protobuf.PushNotificationRegistration_FIREBASE_TOKEN,
    57  			},
    58  		},
    59  		{
    60  			Request: &protobuf.PushNotification{
    61  				ChatId:         chatID,
    62  				Type:           protobuf.PushNotification_MENTION,
    63  				PublicKey:      publicKey2,
    64  				InstallationId: installationID3,
    65  				Message:        message3,
    66  			},
    67  			Registration: &protobuf.PushNotificationRegistration{
    68  				DeviceToken: token3,
    69  				TokenType:   protobuf.PushNotificationRegistration_FIREBASE_TOKEN,
    70  			},
    71  		},
    72  	}
    73  
    74  	expectedRequests := &GoRushRequest{
    75  		Notifications: []*GoRushRequestNotification{
    76  			{
    77  				Tokens:   []string{token1},
    78  				Platform: platform1,
    79  				Message:  defaultNewMessageNotificationText,
    80  				Data: &GoRushRequestData{
    81  					EncryptedMessage: hexMessage1,
    82  					ChatID:           types.EncodeHex(chatID),
    83  					PublicKey:        types.EncodeHex(publicKey1),
    84  				},
    85  			},
    86  			{
    87  				Tokens:   []string{token2},
    88  				Platform: platform2,
    89  				Message:  defaultNewMessageNotificationText,
    90  				Data: &GoRushRequestData{
    91  					EncryptedMessage: hexMessage2,
    92  					ChatID:           types.EncodeHex(chatID),
    93  					PublicKey:        types.EncodeHex(publicKey1),
    94  				},
    95  			},
    96  			{
    97  				Tokens:   []string{token3},
    98  				Platform: platform3,
    99  				Message:  defaultMentionNotificationText,
   100  				Data: &GoRushRequestData{
   101  					EncryptedMessage: hexMessage3,
   102  					ChatID:           types.EncodeHex(chatID),
   103  					PublicKey:        types.EncodeHex(publicKey2),
   104  				},
   105  			},
   106  		},
   107  	}
   108  	actualRequests := PushNotificationRegistrationToGoRushRequest(requestAndRegistrations)
   109  	require.Equal(t, expectedRequests, actualRequests)
   110  }