This commit is contained in:
@@ -246,6 +246,71 @@ async fn actors_serve_files_under_fs() {
|
||||
host.stop().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn actor_fs_is_discoverable_only_when_its_source_docs_advertise_it() {
|
||||
let world = create_world("actor-fs-discovery");
|
||||
let wasm = toolbox_wasm().clone();
|
||||
let (host, mut mailbox) = start(&world).await;
|
||||
|
||||
let advertised = passing_source(&world, "advertised-fs");
|
||||
std::fs::create_dir_all(advertised.join("src")).unwrap();
|
||||
std::fs::write(
|
||||
advertised.join("src/main.rs"),
|
||||
"//! test actor\n//! Actor-served files: implements fs_read and fs_dir.\n",
|
||||
)
|
||||
.unwrap();
|
||||
spawn_type(&host, &mut mailbox, "served", &wasm, &advertised).await;
|
||||
|
||||
let undocumented = passing_source(&world, "undocumented-fs");
|
||||
std::fs::create_dir_all(undocumented.join("src")).unwrap();
|
||||
std::fs::write(undocumented.join("src/main.rs"), "//! test actor without a virtual filesystem\n").unwrap();
|
||||
spawn_type(&host, &mut mailbox, "plain", &wasm, &undocumented).await;
|
||||
|
||||
let reader_source = passing_source(&world, "fs-reader");
|
||||
spawn_type(&host, &mut mailbox, "reader", &wasm, &reader_source).await;
|
||||
|
||||
let served_entries = ask_type(
|
||||
&host,
|
||||
&mut mailbox,
|
||||
"reader",
|
||||
json!({"type": "list", "path": "/actor/served"}),
|
||||
"entries",
|
||||
)
|
||||
.await;
|
||||
assert!(served_entries.body["names"].as_array().unwrap().iter().any(|name| name.as_str() == Some("fs")));
|
||||
|
||||
let plain_entries = ask_type(
|
||||
&host,
|
||||
&mut mailbox,
|
||||
"reader",
|
||||
json!({"type": "list", "path": "/actor/plain"}),
|
||||
"entries",
|
||||
)
|
||||
.await;
|
||||
assert!(!plain_entries.body["names"].as_array().unwrap().iter().any(|name| name.as_str() == Some("fs")));
|
||||
|
||||
let path = "/actor/served/fs/docs/readme.txt";
|
||||
ask_type(
|
||||
&host,
|
||||
&mut mailbox,
|
||||
"reader",
|
||||
json!({"type": "write", "path": path, "text": "virtual document"}),
|
||||
"ok",
|
||||
)
|
||||
.await;
|
||||
let document = ask_type(
|
||||
&host,
|
||||
&mut mailbox,
|
||||
"reader",
|
||||
json!({"type": "read", "path": path}),
|
||||
"content",
|
||||
)
|
||||
.await;
|
||||
assert_eq!(document.body["text"], "virtual document");
|
||||
|
||||
host.stop().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn files_are_plain_posix_files() {
|
||||
let (_, host, mut mailbox) = filesystem_world("posix").await;
|
||||
|
||||
Reference in New Issue
Block a user