def test_apns_payload(self, mock_pack_frame):
        message = {
            "device": self.apns_device,
            "message": "msg",
            "data": {
                "category": "info",
                "content_available": True,
                "sound": "chime",
                "badge": 1,
                "socket": mock.MagicMock(),
                "identifier": 10,
                "expiration": 30,
                "priority": 20,
                "action_loc_key": "key",
                "loc_key": "TEST_LOCK_KEY",
                "loc_args": "args",
                "extra": {"custom_data": 12345}
            }
        }
        # test rich payload
        apns_send_message(**message)
        mock_pack_frame.assert_called_with(
            self.apns_device.notification_token,
            six.b('{"aps":{"alert":{"action-loc-key":"key","body":"msg","loc-args":"args","loc-key":"TEST_LOCK_KEY"},'
                  '"badge":1,"category":"info","content-available":1,"sound":"chime"},"custom_data":12345}'),
            message["data"]["identifier"], message["data"]["expiration"], message["data"]["priority"]
        )

        # test oversizing
        self.assertRaises(APNSDataOverflow, apns_send_message, self.apns_device, "_" * 2049, {})
Beispiel #2
0
    def test_apns(self):
        message = {"device": self.apns_device, "message": "msg", "data": {}}

        with mock.patch("ssl.wrap_socket") as ws:
            with mock.patch("socket.socket") as socket:
                with override_settings(UNIVERSAL_NOTIFICATIONS_MOBILE_APPS=self
                                       .test_settings):
                    socket.return_value = 123
                    apns_send_message(**message)
                    ws.assert_called_once_with(
                        123,
                        certfile=self.test_settings["app1"]
                        ["APNS_CERTIFICATE"],
                        ssl_version=3)
Beispiel #3
0
    def test_apns_payload(self, mock_pack_frame):
        message = {
            "device": self.apns_device,
            "message": "msg",
            "description": "desc",
            "data": {
                "category": "info",
                "content_available": True,
                "sound": "chime",
                "badge": 1,
                "socket": mock.MagicMock(),
                "identifier": 10,
                "expiration": 30,
                "priority": 20,
                "action_loc_key": "key",
                "loc_key": "TEST_LOCK_KEY",
                "loc_args": "args",
                "extra": {
                    "custom_data": 12345
                }
            }
        }
        expected_payload = {
            "aps": {
                "alert": {
                    "action-loc-key": "key",
                    "body": "desc",
                    "loc-args": "args",
                    "loc-key": "TEST_LOCK_KEY",
                    "title": "msg"
                },
                "badge": 1,
                "category": "info",
                "content-available": 1,
                "sound": "chime"
            },
            "custom_data": 12345
        }
        expected_payload = json.dumps(expected_payload,
                                      separators=(",", ":"),
                                      sort_keys=True).encode("utf-8")
        # test rich payload
        apns_send_message(**message)
        mock_pack_frame.assert_called_with(self.apns_device.notification_token,
                                           expected_payload,
                                           message["data"]["identifier"],
                                           message["data"]["expiration"],
                                           message["data"]["priority"])

        # test sending without description
        with mock.patch("universal_notifications.backends.push.apns._apns_send"
                        ) as mocked_send:
            apns_send_message(self.apns_device, message="msg", description="")
            mocked_send.assert_called_with(self.apns_device.app_id,
                                           self.apns_device.notification_token,
                                           {"body": "msg"})

        # test oversizing
        with self.assertRaises(APNSDataOverflow):
            apns_send_message(self.apns_device, "_" * 2049)
Beispiel #4
0
    def send_message(self, message, description="", **data):
        """Send message to device

        Args:
            message (string): Message string
            description (string): Optional description
            **data (dict, optional): Extra data

        Returns:
            boolean: status of sending notification
        """
        if not self.is_active:
            return False

        message = force_text(message)
        description = force_text(description)
        if self.platform == Device.PLATFORM_GCM:
            return gcm_send_message(self, message, data)
        elif self.platform == Device.PLATFORM_IOS:
            return apns_send_message(self, message, description, data)
        elif self.platform == Device.PLATFORM_FCM:
            return fcm_send_message(self, message, data)
        else:
            return False