Skip to content

Commit 92a1417

Browse files
authored
test(client): Add tests for keys containing slashes (#245)
This case did not have test coverage.
1 parent beb8233 commit 92a1417

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

clients/python/tests/test_e2e.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,22 @@ def test_full_cycle_uncompressed(server_url: str) -> None:
149149
assert decompressed_data == data
150150

151151

152+
def test_full_cycle_structured_key(server_url: str) -> None:
153+
client = Client(server_url)
154+
test_usecase = Usecase(
155+
"test-usecase",
156+
expiration_policy=TimeToLive(timedelta(days=1)),
157+
)
158+
159+
session = client.session(test_usecase, org=42, project=1337)
160+
161+
object_key = session.put(b"test data", key="1/shard-0.json")
162+
assert object_key == "1/shard-0.json"
163+
164+
retrieved = session.get(object_key)
165+
assert retrieved.payload.read() == b"test data"
166+
167+
152168
def test_connect_timeout() -> None:
153169
# this server accepts the connection
154170
# (even though the backlog is 0 and we never call `accept`),

clients/rust/tests/e2e.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,24 @@ async fn stores_under_given_key() {
8888
assert_eq!(stored_id, "test-key123!!");
8989
}
9090

91+
#[tokio::test]
92+
async fn stores_structured_keys() {
93+
let server = TestServer::new().await;
94+
95+
let client = Client::builder(server.url("/")).build().unwrap();
96+
let usecase = Usecase::new("usecase");
97+
let session = client.session(usecase.for_project(12345, 1337)).unwrap();
98+
99+
let body = "oh hai!";
100+
let request = session.put(body).key("1/shard-0.json");
101+
let stored_id = request.send().await.unwrap().key;
102+
assert_eq!(stored_id, "1/shard-0.json");
103+
104+
let response = session.get(&stored_id).send().await.unwrap().unwrap();
105+
let received = response.payload().await.unwrap();
106+
assert_eq!(received, body);
107+
}
108+
91109
#[tokio::test]
92110
async fn overwrites_existing_key() {
93111
let server = TestServer::new().await;

objectstore-service/src/backend/local_fs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ impl Backend for LocalFsBackend {
3737
metadata: &Metadata,
3838
stream: PayloadStream,
3939
) -> anyhow::Result<()> {
40-
tracing::debug!("Writing to local_fs backend");
4140
let path = self.path.join(id.as_storage_path().to_string());
41+
tracing::debug!(path=%path.display(), "Writing to local_fs backend");
4242
tokio::fs::create_dir_all(path.parent().unwrap()).await?;
4343
let file = OpenOptions::new()
4444
.create(true)

0 commit comments

Comments
 (0)