mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-07-22 04:06:44 +08:00
fix official auto discovery for current launcher manifest
This commit is contained in:
@@ -29,6 +29,9 @@ const TEST_LAUNCHER_MANIFEST_SOURCE: &str =
|
||||
"prod/ZIP_TEMP/BlueArchive_JP_TEMP/BlueArchive_JP-manifest-fixture.zip";
|
||||
const TEST_LAUNCHER_GAME_ZIP_URL: &str =
|
||||
"https://launcher-pkg-ba-jp.yo-star.com/prod/ZIP_TEMP/BlueArchive_JP_TEMP/BlueArchive_JP-manifest-fixture.zip";
|
||||
const TEST_LAUNCHER_DIRECTORY_SOURCE: &str = "/BlueArchive_JP-1.70.436321-game";
|
||||
const TEST_LAUNCHER_RESOURCES_ASSETS_URL: &str =
|
||||
"https://launcher-pkg-ba-jp.yo-star.com/BlueArchive_JP-1.70.436321-game/BlueArchive_Data/resources.assets";
|
||||
const TEST_SERVER_INFO_URL: &str =
|
||||
"https://yostar-serverinfo.bluearchiveyostar.com/r93_fixture.json";
|
||||
const TEST_CONNECTION_GROUP: &str = "Fixture-Audit";
|
||||
@@ -54,7 +57,7 @@ fn fetch_bootstrap_uses_official_manifest_source_for_latest_zip() {
|
||||
Some(TEST_LAUNCHER_MANIFEST_SOURCE)
|
||||
);
|
||||
assert_eq!(bootstrap.game_zip_url, TEST_LAUNCHER_GAME_ZIP_URL);
|
||||
assert_eq!(bootstrap.manifest_file_count, 1);
|
||||
assert_eq!(bootstrap.manifest_file_count, 2);
|
||||
assert_eq!(
|
||||
bootstrap.game_main_config.server_info_data_url.as_deref(),
|
||||
Some(TEST_SERVER_INFO_URL)
|
||||
@@ -76,25 +79,21 @@ fn fetch_bootstrap_uses_official_manifest_source_for_latest_zip() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fetch_bootstrap_falls_back_to_latest_file_path_when_manifest_source_is_not_zip() {
|
||||
let harness = TestHarness::new_with_manifest_source("/BlueArchive_JP-1.70.436321-game");
|
||||
fn fetch_bootstrap_uses_directory_manifest_resources_assets_when_source_is_not_zip() {
|
||||
let harness = TestHarness::new_with_manifest_source(TEST_LAUNCHER_DIRECTORY_SOURCE);
|
||||
let bootstrap = harness.fetch_bootstrap();
|
||||
|
||||
assert_eq!(
|
||||
bootstrap.manifest_source.as_deref(),
|
||||
Some("/BlueArchive_JP-1.70.436321-game")
|
||||
);
|
||||
assert_eq!(
|
||||
bootstrap.game_zip_url,
|
||||
format!(
|
||||
"https://launcher-pkg-ba-jp.yo-star.com/{}",
|
||||
TEST_LAUNCHER_LATEST_FILE_PATH
|
||||
)
|
||||
Some(TEST_LAUNCHER_DIRECTORY_SOURCE)
|
||||
);
|
||||
assert_eq!(bootstrap.game_zip_url, TEST_LAUNCHER_RESOURCES_ASSETS_URL);
|
||||
|
||||
let curl_log = fs::read_to_string(&harness.curl_log).unwrap();
|
||||
assert!(curl_log.contains(TEST_LAUNCHER_LATEST_FILE_PATH));
|
||||
assert!(!curl_log.contains(" /BlueArchive_JP-1.70.436321-game"));
|
||||
assert!(curl_log.contains(TEST_LAUNCHER_RESOURCES_ASSETS_URL));
|
||||
assert!(!curl_log.contains(&format!(
|
||||
"https://launcher-pkg-ba-jp.yo-star.com/{TEST_LAUNCHER_LATEST_FILE_PATH}"
|
||||
)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -178,7 +177,13 @@ impl TestHarness {
|
||||
let curl_script = temp.path().join("fake-curl");
|
||||
write_executable(
|
||||
&curl_script,
|
||||
&official_curl_script(&curl_log, &zip_fixture, manifest_source),
|
||||
&official_curl_script(
|
||||
&curl_log,
|
||||
&zip_fixture,
|
||||
&resources_assets_path,
|
||||
resources_assets.len(),
|
||||
manifest_source,
|
||||
),
|
||||
);
|
||||
|
||||
let unzip_script = temp.path().join("fake-unzip");
|
||||
@@ -229,7 +234,13 @@ fn write_executable(path: &Path, content: &str) {
|
||||
fs::set_permissions(path, permissions).unwrap();
|
||||
}
|
||||
|
||||
fn official_curl_script(curl_log: &Path, zip_fixture: &Path, manifest_source: &str) -> String {
|
||||
fn official_curl_script(
|
||||
curl_log: &Path,
|
||||
zip_fixture: &Path,
|
||||
resources_assets_fixture: &Path,
|
||||
resources_assets_size: usize,
|
||||
manifest_source: &str,
|
||||
) -> String {
|
||||
format!(
|
||||
r#"#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
@@ -268,6 +279,11 @@ emit_zip_fixture() {{
|
||||
cp {} "$output"
|
||||
}}
|
||||
|
||||
emit_resources_assets_fixture() {{
|
||||
mkdir -p "$(dirname "$output")"
|
||||
cp {} "$output"
|
||||
}}
|
||||
|
||||
if [[ "$url" == "https://api-launcher-jp.yo-star.com/api/launcher/game/config" ]]; then
|
||||
cat <<'JSON'
|
||||
{{"code":200,"message":"ok","data":{{"game_latest_version":"{launcher_latest_version}","game_latest_file_path":"{launcher_latest_file_path}"}}}}
|
||||
@@ -282,8 +298,10 @@ elif [[ "$url" == "{launcher_game_config_json_url}" ]]; then
|
||||
JSON
|
||||
elif [[ "$url" == "{launcher_manifest_url}" ]]; then
|
||||
cat <<'JSON'
|
||||
{{"source":"{launcher_manifest_source}","file":[{{"path":"/BlueArchive.exe","size":"100","hash":"123"}}]}}
|
||||
{{"source":"{launcher_manifest_source}","file":[{{"path":"/BlueArchive.exe","size":"100","hash":"123"}},{{"path":"/BlueArchive_Data/resources.assets","size":"{resources_assets_size}","hash":"456"}}]}}
|
||||
JSON
|
||||
elif [[ "$url" == "{launcher_resources_assets_url}" ]]; then
|
||||
emit_resources_assets_fixture
|
||||
elif [[ "$url" == "{server_info_url}" ]]; then
|
||||
cat <<'JSON'
|
||||
{{"ConnectionGroups":[{{"Name":"{connection_group}","AddressablesCatalogUrlRoot":"{addressables_root}","BundleVersion":"s8tloc7lo3","IsLivePublished":true}}]}}
|
||||
@@ -332,11 +350,14 @@ fi
|
||||
"#,
|
||||
shell_quote(curl_log),
|
||||
shell_quote(zip_fixture),
|
||||
shell_quote(resources_assets_fixture),
|
||||
launcher_latest_version = TEST_LAUNCHER_LATEST_VERSION,
|
||||
launcher_latest_file_path = TEST_LAUNCHER_LATEST_FILE_PATH,
|
||||
launcher_game_config_json_url = TEST_LAUNCHER_GAME_CONFIG_JSON_URL,
|
||||
launcher_manifest_url = TEST_LAUNCHER_MANIFEST_URL,
|
||||
launcher_manifest_source = manifest_source,
|
||||
launcher_resources_assets_url = TEST_LAUNCHER_RESOURCES_ASSETS_URL,
|
||||
resources_assets_size = resources_assets_size,
|
||||
server_info_url = TEST_SERVER_INFO_URL,
|
||||
connection_group = TEST_CONNECTION_GROUP,
|
||||
addressables_root = TEST_ADDRESSABLES_ROOT,
|
||||
|
||||
Reference in New Issue
Block a user