Skip to content

Commit

Permalink
chore: demonstrate pactffi_log_to_buffer empty in 0.4.20
Browse files Browse the repository at this point in the history
  • Loading branch information
YOU54F committed Jun 7, 2024
1 parent 4115bff commit a15612d
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 1 deletion.
31 changes: 31 additions & 0 deletions python/pact_buffer_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import requests
import xml.etree.ElementTree as ET
from cffi import FFI
from register_ffi import get_ffi_lib
import json
import requests
ffi = FFI()

lib = get_ffi_lib(ffi)
lib.pactffi_log_to_buffer(5)
content_type = 'application/json'
pact_handle = lib.pactffi_new_pact(b'consumer',b'provider')
lib.pactffi_with_pact_metadata(pact_handle, b'pact-python', b'version', b'1.0.0')
interaction_handle = lib.pactffi_new_interaction(pact_handle, b'description')
lib.pactffi_with_body(interaction_handle, 1, content_type.encode('ascii'), '{"ping":"pong"}'.encode('ascii'))
mock_server_port = lib.pactffi_create_mock_server_for_transport(pact_handle, b'127.0.0.1', 0, b'http', b'{}')
try:
uri = f"http://127.0.0.1:{mock_server_port}"
response = requests.get(uri,
headers={'Accept': content_type})
response.raise_for_status()
except requests.HTTPError as http_err:
print(f'Client request - HTTP error occurred: {http_err}') # Python 3.6
except Exception as err:
print(f'Client request - Other error occurred: {err}') # Python 3.6
result = lib.pactffi_mock_server_matched(mock_server_port)
native_logs = lib.pactffi_mock_server_logs(mock_server_port)
logs = ffi.string(native_logs).decode("utf-8").rstrip().split("\n")
print(logs)
lib.pactffi_cleanup_mock_server(mock_server_port)
assert len(logs) != 0
29 changes: 28 additions & 1 deletion rust/pact_ffi/tests/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ use bytes::Bytes;
use expectest::prelude::*;
use itertools::Itertools;
use libc::c_char;
use log::LevelFilter;
use maplit::*;
use pact_ffi::log::pactffi_log_to_buffer;
use pact_models::bodies::OptionalBody;
use pact_models::PactSpecification;
use pretty_assertions::assert_eq;
Expand All @@ -26,7 +28,8 @@ use pact_ffi::mock_server::{
pactffi_create_mock_server,
pactffi_create_mock_server_for_pact,
pactffi_mock_server_mismatches,
pactffi_write_pact_file
pactffi_write_pact_file,
pactffi_mock_server_logs,
};
#[allow(deprecated)]
use pact_ffi::mock_server::handles::{
Expand Down Expand Up @@ -1406,3 +1409,27 @@ fn matching_definition_expressions_matcher() {
}
};
}

#[test]
fn returns_mock_server_logs() {
let pact_json = include_str!("post-pact.json");
let pact_json_c = CString::new(pact_json).expect("Could not construct C string from json");
let address = CString::new("127.0.0.1:0").unwrap();
#[allow(deprecated)]
let port = pactffi_create_mock_server(pact_json_c.as_ptr(), address.as_ptr(), false);
expect!(port).to(be_greater_than(0));
pactffi_log_to_buffer(LevelFilter::Debug.into());
let client = Client::default();
client.post(format!("http://127.0.0.1:{}/path", port).as_str())
.header(CONTENT_TYPE, "application/json")
.body(r#"{"foo":"no-very-bar"}"#)
.send().expect("Sent POST request to mock server");

let logs = unsafe {
CStr::from_ptr(pactffi_mock_server_logs(port)).to_string_lossy().into_owned()
};
println!("{}",logs);
assert_ne!(logs,"", "logs are empty");

pactffi_cleanup_mock_server(port);
}

0 comments on commit a15612d

Please sign in to comment.