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 }