Пример #1
0
    def test_encode(self):
        m = Message(alert='test')
        enc = m.encoded
        assert type(enc) == binary_type
        # Raises exception if not utf-8 encoded:
        jsondata = enc.decode('utf-8')

        payload = json.loads(jsondata)
        assert payload == m.payload
Пример #2
0
    def test_payload_with_extras(self):
        message = {
            'subject': 'test',
            'body': 'testing',
        }
        m = Message(alert='test', msg=message)

        assert 'aps' in m.payload
        aps = m.payload['aps']
        assert aps['alert'] == 'test'

        assert 'msg' in m.payload
        msg = m.payload['msg']
        assert msg == message
Пример #3
0
    def test_push_not_successful(self):
        res = Mock()
        res.status = 400
        res.read.return_value = b'{"reason": "BadDeviceToken"}'
        res.headers = {
            'apns-id': [str(uuid.uuid4())],
        }

        con = Mock()
        con.get_response.return_value = res

        c = Client(None)
        c._connection = con

        m = Message(alert='testing')

        try:
            c.push(m, 'token')
            pytest.fail('Did not raise BadDeviceToken')
        except BadDeviceToken as e:
            assert e.token == 'token'
            assert e.code == res.status
Пример #4
0
    def test_push(self):
        id_ = uuid.uuid4()
        res = Mock()
        res.status = 200
        res.headers = {
            'apns-id': [str(id_)],
        }

        con = Mock()
        con.get_response.return_value = res

        c = Client(None)
        c._connection = con

        m = Message(alert='testing')

        apns_id = c.push(m, 'token')
        assert apns_id == id_

        args, kwargs = con.request.call_args
        assert args[0] == 'POST'
        assert args[1] == '/3/device/token'
        assert kwargs['body'] == m.encoded
        assert kwargs['headers'] == m.headers
Пример #5
0
 def test_set_expiration_datetime(self):
     exp = datetime.now().replace(microsecond=0)
     m = Message(expiration=exp)
     assert m.expiration == exp
Пример #6
0
    def test_aps_with_alert(self):
        a = Alert('Test', 'Message')
        m = Message(alert=a)

        assert m.aps['alert'] == a.payload
Пример #7
0
 def test_set_id_with_string(self):
     uid = uuid.uuid4()
     m = Message(id=str(uid))
     assert m.id == uid
Пример #8
0
    def test_payload(self):
        m = Message(alert='test')

        assert 'aps' in m.payload
        aps = m.payload['aps']
        assert aps['alert'] == 'test'
Пример #9
0
 def test_set_expiration_check_value(self):
     with pytest.raises(AssertionError):
         Message(expiration=-1)
Пример #10
0
 def test_set_id_with_uuid(self):
     uid = uuid.uuid4()
     m = Message(id=uid)
     assert m.id == uid
Пример #11
0
 def test_set_expiration_unix_timestamp(self):
     m = Message(expiration=1)
     assert m.expiration == EPOCH + timedelta(seconds=1)
Пример #12
0
 def test_set_expire_immediately(self):
     m = Message(expiration=EXPIRE_IMMEDIATELY)
     assert m.expiration is None
     m = Message(expiration=None)
     assert m.expiration is None
Пример #13
0
 def test_set_invalid_priority(self):
     with pytest.raises(AssertionError):
         Message(priority=11)
Пример #14
0
 def test_aps_omits_empty_keys(self):
     m = Message()
     assert m.aps == {}
Пример #15
0
 def test_set_priority(self, val):
     m = Message(priority=val)
     assert m.priority == val
Пример #16
0
 def test_set_content_available(self, val):
     m = Message(content_available=val)
     assert m.content_available == 1
Пример #17
0
 def test_headers_encodes_expiration(self):
     m = Message(expiration=EXPIRE_IMMEDIATELY)
     assert m.headers['apns-expiration'] == EXPIRE_IMMEDIATELY
     new_millennium = datetime(2001, 1, 1)
     m = Message(expiration=new_millennium)
     assert m.headers['apns-expiration'] == new_millennium - EPOCH
Пример #18
0
 def test_headers_encodes_id(self):
     uid = uuid.uuid4()
     m = Message(id=uid)
     assert m.headers['apns-id'] == str(uid)
Пример #19
0
 def test_headers_omits_empty_keys(self):
     m = Message(id=None)
     assert 'id' not in m.headers