feat: add UE4SS DLL runtime extension
This commit is contained in:
@@ -173,6 +173,53 @@ describe("plugin manifest validation", () => {
|
||||
expect(validateManifestFile("examples/scum-server-plugin/manifest.json")).toEqual([]);
|
||||
});
|
||||
|
||||
it("accepts a pinned ready SCUM UE4SS DLL release and lifecycle reference", () => {
|
||||
const errors = validateTemporaryScumCompanionManifest((manifest) => {
|
||||
const extension = manifest.runtimeProfiles.dllExtensions[0];
|
||||
extension.releaseState = "ready";
|
||||
extension.version = "0.1.0";
|
||||
extension.checksum = `sha256:${"a".repeat(64)}`;
|
||||
extension.sizeBytes = 1048576;
|
||||
extension.scumExecutableChecksum = `sha256:${"b".repeat(64)}`;
|
||||
extension.ue4ssAbi = "ue4ss-3.0";
|
||||
manifest.runtimeProfiles.lifecycleProfiles[0].dllExtensionRefs = [extension.key];
|
||||
});
|
||||
expect(errors).toEqual([]);
|
||||
});
|
||||
|
||||
it("rejects unpinned, unsafe, or unpublished SCUM UE4SS DLL activation", () => {
|
||||
const missingPins = validateTemporaryScumCompanionManifest((manifest) => {
|
||||
const extension = manifest.runtimeProfiles.dllExtensions[0];
|
||||
extension.releaseState = "ready";
|
||||
manifest.runtimeProfiles.lifecycleProfiles[0].dllExtensionRefs = [extension.key];
|
||||
});
|
||||
expect(missingPins.some((error) => error.includes("checksum") || error.includes("sizeBytes") || error.includes("ue4ssAbi"))).toBe(true);
|
||||
|
||||
const unsafeURL = validateTemporaryScumCompanionManifest((manifest) => {
|
||||
const extension = manifest.runtimeProfiles.dllExtensions[0];
|
||||
extension.releaseState = "ready";
|
||||
extension.releaseUrl = "https://127.0.0.1/scum.exe";
|
||||
extension.checksum = `sha256:${"a".repeat(64)}`;
|
||||
extension.sizeBytes = 1048576;
|
||||
extension.scumExecutableChecksum = `sha256:${"b".repeat(64)}`;
|
||||
extension.ue4ssAbi = "ue4ss-3.0";
|
||||
});
|
||||
expect(unsafeURL.some((error) => error.includes("releaseUrl"))).toBe(true);
|
||||
|
||||
const queryURL = validateTemporaryScumCompanionManifest((manifest) => {
|
||||
manifest.runtimeProfiles.dllExtensions[0].releaseUrl = "https://cdn.npc0.com/scum_simple_rcon_ue4s.dll?release=.dll";
|
||||
});
|
||||
expect(queryURL.some((error) => error.includes("releaseUrl"))).toBe(true);
|
||||
|
||||
const unpublishedReference = validateTemporaryScumCompanionManifest((manifest) => {
|
||||
const extension = manifest.runtimeProfiles.dllExtensions[0];
|
||||
manifest.runtimeProfiles.lifecycleProfiles[0].dllExtensionRefs = [extension.key];
|
||||
manifest.runtimeProfiles.lifecycleProfiles[0].platforms = ["windows", "linux"];
|
||||
});
|
||||
expect(unpublishedReference.some((error) => error.includes("not ready for activation"))).toBe(true);
|
||||
expect(unpublishedReference.some((error) => error.includes("windows local-process"))).toBe(true);
|
||||
});
|
||||
|
||||
it("defines a generated SCUM companion config without inline proof or session material", () => {
|
||||
const pluginDir = path.join(pluginsRoot, "examples/scum-server-plugin");
|
||||
const manifest = JSON.parse(fs.readFileSync(path.join(pluginDir, "manifest.json"), "utf8")) as {
|
||||
|
||||
Reference in New Issue
Block a user