From f530895c33af75e68de547ca35fa9063dfe1d3fb Mon Sep 17 00:00:00 2001 From: Remy Jette Date: Thu, 11 Jan 2024 14:44:12 -0800 Subject: [PATCH] WebHost: Fix /api/generate (#2693) --- WebHostLib/api/generate.py | 4 ++-- test/webhost/test_api_generate.py | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/WebHostLib/api/generate.py b/WebHostLib/api/generate.py index 61e9164e..5a66d1e6 100644 --- a/WebHostLib/api/generate.py +++ b/WebHostLib/api/generate.py @@ -20,8 +20,8 @@ def generate_api(): race = False meta_options_source = {} if 'file' in request.files: - file = request.files['file'] - options = get_yaml_data(file) + files = request.files.getlist('file') + options = get_yaml_data(files) if isinstance(options, Markup): return {"text": options.striptags()}, 400 if isinstance(options, str): diff --git a/test/webhost/test_api_generate.py b/test/webhost/test_api_generate.py index b8bdcb38..bd78edd9 100644 --- a/test/webhost/test_api_generate.py +++ b/test/webhost/test_api_generate.py @@ -1,5 +1,7 @@ +import io import unittest import json +import yaml class TestDocs(unittest.TestCase): @@ -23,7 +25,7 @@ class TestDocs(unittest.TestCase): response = self.client.post("/api/generate") self.assertIn("No options found. Expected file attachment or json weights.", response.text) - def test_generation_queued(self): + def test_generation_queued_weights(self): options = { "Tester1": { @@ -40,3 +42,19 @@ class TestDocs(unittest.TestCase): json_data = response.get_json() self.assertTrue(json_data["text"].startswith("Generation of seed ")) self.assertTrue(json_data["text"].endswith(" started successfully.")) + + def test_generation_queued_file(self): + options = { + "game": "Archipelago", + "name": "Tester", + "Archipelago": {} + } + response = self.client.post( + "/api/generate", + data={ + 'file': (io.BytesIO(yaml.dump(options, encoding="utf-8")), "test.yaml") + }, + ) + json_data = response.get_json() + self.assertTrue(json_data["text"].startswith("Generation of seed ")) + self.assertTrue(json_data["text"].endswith(" started successfully."))