コード例 #1
0
def test_push_sms_plaintext_failure():
    device = Mock()
    device.device_iden = "123"

    mock_response = Mock()
    mock_response.status_code = 500

    session = Mock()
    session.post.return_value = mock_response

    pb = PushBullet("apikey")
    pb._session = session

    with pytest.raises(PushError):
        pb.push_sms(device, "+123456789", "This is an example text")

    session.post.assert_called_once_with(
        pb.EPHEMERALS_URL,
        data=json.dumps({
            "type": "push",
            "push": {
                "type": "messaging_extension_reply",
                "package_name": "com.pushbullet.android",
                "source_user_iden": "123",
                "target_device_iden": "123",
                "conversation_iden": "+123456789",
                "message": "This is an example text",
            },
        }),
    )
コード例 #2
0
def test__push_ok():
    mock_response = Mock()
    mock_response.status_code = 200
    mock_response.headers = {"X-Ratelimit-Remaining": "1000"}
    mock_response.json.return_value = {}

    session = Mock()
    session.post.return_value = mock_response

    pb = PushBullet("apikey")
    pb._session = session

    server_response = pb._push({"key": "value"})

    session.post.assert_called_once_with(
        pb.PUSH_URL,
        data=json.dumps({"key": "value"}),
    )

    assert server_response == {
        "rate_limit": {
            "remaining": "1000",
            "limit": None,
            "reset": None,
        }
    }
コード例 #3
0
def test_upload_file_request_fails(requests, pb_refresh):
    first_response = Mock()
    first_response.status_code = 400
    first_response.json.return_value = {
        "data": "upload_data",
        "file_url": "imageurl",
        "upload_url": "http://uploadhere.google.com",
    }

    second_response = Mock()
    second_response.status_code = 200

    session = Mock()
    session.post.return_value = first_response

    requests.post.return_value = second_response
    requests.codes.ok = 200

    pb = PushBullet("apikey")
    pb._session = session

    with open("tests/test.png", "rb") as test_file:

        with pytest.raises(PushbulletError):
            pb.upload_file(test_file, "test.png", "image/png")

    requests.post.assert_not_called()
コード例 #4
0
def test_push_sms_encrypted_ok(pb_encrypt):
    device = Mock()
    device.device_iden = "123"

    mock_response = Mock()
    mock_response.status_code = 200

    session = Mock()
    session.post.return_value = mock_response

    pb_encrypt.return_value = "encrypted text"

    pb = PushBullet("apikey")
    pb._session = session
    pb._encryption_key = "123"

    # When
    pb.push_sms(device, "+123456789", "This is an example text")

    session.post.assert_called_once_with(
        pb.EPHEMERALS_URL,
        data=json.dumps({
            "type": "push",
            "push": {
                "ciphertext": "encrypted text",
                "encrypted": True
            },
        }),
    )
コード例 #5
0
def test_get_data_ok():
    mock_response = Mock()
    mock_response.status_code = 200

    session = Mock()
    session.get.return_value = mock_response

    pb = PushBullet("apikey")
    pb._session = session

    pb._get_data("url")
コード例 #6
0
def test_get_data_other_error():
    mock_response = Mock()
    mock_response.status_code = 500

    session = Mock()
    session.get.return_value = mock_response

    pb = PushBullet("apikey")
    pb._session = session

    with pytest.raises(PushbulletError):
        pb._get_data("url")
コード例 #7
0
def test_get_data_invalid_key():
    mock_response = Mock()
    mock_response.status_code = 401

    session = Mock()
    session.get.return_value = mock_response

    pb = PushBullet("apikey")
    pb._session = session

    with pytest.raises(InvalidKeyError):
        pb._get_data("url")
コード例 #8
0
def test_get_pushes_error():
    response1 = Mock()
    response1.status_code = 400
    response1.json.return_value = {"pushes": []}

    session = Mock()
    session.get.side_effect = [response1]

    pb = PushBullet("apikey")
    pb._session = session

    with pytest.raises(PushbulletError):
        pb.get_pushes()
コード例 #9
0
def test__push_fail():
    mock_response = Mock()
    mock_response.status_code = 400

    session = Mock()
    session.post.return_value = mock_response

    pb = PushBullet("apikey")
    pb._session = session

    with pytest.raises(PushError):
        pb._push({"key": "value"})

    session.post.assert_called_once_with(
        pb.PUSH_URL,
        data=json.dumps({"key": "value"}),
    )
コード例 #10
0
def test_upload_file(requests, pb_refresh):
    first_response = Mock()
    first_response.status_code = 200
    first_response.json.return_value = {
        "data": "upload_data",
        "file_url": "imageurl",
        "upload_url": "http://uploadhere.google.com",
    }

    second_response = Mock()
    second_response.status_code = 200

    session = Mock()
    session.post.return_value = first_response

    requests.post.return_value = second_response
    requests.codes.ok = 200

    pb = PushBullet("apikey")
    pb._session = session

    with open("tests/test.png", "rb") as test_file:
        response = pb.upload_file(test_file, "test.png")

        assert response == {
            "file_type": "image/png",
            "file_url": "imageurl",
            "file_name": "test.png",
        }

        session.post.assert_called_once_with(
            pb.UPLOAD_REQUEST_URL,
            data=json.dumps({
                "file_name": "test.png",
                "file_type": "image/png"
            }),
        )

        requests.post.assert_called_once_with(
            "http://uploadhere.google.com",
            data="upload_data",
            files={"file": test_file},
        )
コード例 #11
0
def test_get_pushes_no_cursor():
    response1 = Mock()
    response1.status_code = 200
    response1.json.return_value = {"pushes": []}

    session = Mock()
    session.get.side_effect = [response1]

    pb = PushBullet("apikey")
    pb._session = session

    pushes = pb.get_pushes(filter_inactive=False)

    assert len(pushes) == 0
    session.get.assert_called_once_with(pb.PUSH_URL,
                                        params={
                                            "modified_after": None,
                                            "limit": None
                                        })
コード例 #12
0
def test_get_pushes_no_cursor():
    response1 = Mock()
    response1.status_code = 200
    response1.json.return_value = {
        "pushes": ["push1", "push2"],
        "cursor": "cursor1"
    }

    response2 = Mock()
    response2.status_code = 200
    response2.json.return_value = {"pushes": ["push3"]}

    session = Mock()
    session.get.side_effect = [response1, response2]

    pb = PushBullet("apikey")
    pb._session = session

    pushes = pb.get_pushes(filter_inactive=False)

    assert len(pushes) == 3

    assert session.get.call_count == 2