Пример #1
0
def test_upload_to_url_session(config_dir):
    """Confirm diagnostics uploading uses the configured session."""
    dir_name = uuid.uuid4().hex
    base_url = "https://{bucket}.s3-{region}.amazonaws.com/{resource}".format(
        bucket="bucket", region="region", resource=dir_name)

    requests_session = Mock(spec=requests.Session)
    requests_session.put.return_value.status_code = 200
    with patch("pybatfish.client._diagnostics._requests_session",
               requests_session):
        _upload_dir_to_url(base_url=base_url, src_dir=config_dir)
    # Should pass through to the correct session
    assert requests_session.put.called
Пример #2
0
def test_upload_to_url(config_dir):
    """Confirm config file is uploaded to a fake S3 bucket."""
    dir_name = uuid.uuid4().hex
    base_url = "https://{bucket}.s3-{region}.amazonaws.com/{resource}".format(
        bucket="bucket", region="region", resource=dir_name)
    resource_url = "{}/{}".format(base_url, _CONFIG_FILE)
    uploads = {}

    def put_callback(request):
        uploads[request.url] = request.body.read().decode("utf-8")
        return 200, {}, json.dumps({})

    # Intercept the PUT request destined for the S3 bucket, and just add file contents to uploads dict
    responses.add_callback(responses.PUT, resource_url, callback=put_callback)

    _upload_dir_to_url(base_url=base_url, src_dir=config_dir)

    # Make sure the entry populated by the put request matches the original file contents
    assert uploads[resource_url] == _CONFIG_CONTENT