@@ -2688,6 +2688,12 @@ output="$(cat "$sampler_log")"
|
2688 | 2688 | it("keeps Open WebUI Docker E2E resource-guarded", () => { |
2689 | 2689 | const runner = readFileSync(OPENWEBUI_DOCKER_E2E_PATH, "utf8"); |
2690 | 2690 | |
| 2691 | +expect(runner).toContain( |
| 2692 | +'validate_positive_int OPENCLAW_OPENWEBUI_PROVIDER_TIMEOUT_SECONDS "$PROVIDER_TIMEOUT_SECONDS"', |
| 2693 | +); |
| 2694 | +expect(runner).toContain( |
| 2695 | +'validate_positive_int OPENCLAW_OPENWEBUI_FETCH_TIMEOUT_MS "$PROBE_FETCH_TIMEOUT_MS"', |
| 2696 | +); |
2691 | 2697 | expect(runner).toContain('validate_tcp_port OPENCLAW_OPENWEBUI_GATEWAY_PORT "$PORT"'); |
2692 | 2698 | expect(runner).toContain('validate_tcp_port OPENCLAW_OPENWEBUI_PORT "$WEBUI_PORT"'); |
2693 | 2699 | expect(runner).toContain("OPENCLAW_OPENWEBUI_MAX_MEMORY_MIB"); |
@@ -2733,6 +2739,43 @@ output="$(cat "$sampler_log")"
|
2733 | 2739 | expect(result.stderr).not.toContain("OPENAI_API_KEY is required"); |
2734 | 2740 | }); |
2735 | 2741 | |
| 2742 | +it.each([ |
| 2743 | +["provider", "OPENCLAW_OPENWEBUI_PROVIDER_TIMEOUT_SECONDS", "300s"], |
| 2744 | +["fetch", "OPENCLAW_OPENWEBUI_FETCH_TIMEOUT_MS", "8000ms"], |
| 2745 | +])( |
| 2746 | +"rejects invalid Open WebUI Docker %s timeouts before Docker setup", |
| 2747 | +(_label, envName, value) => { |
| 2748 | +const result = spawnSync("bash", [OPENWEBUI_DOCKER_E2E_PATH], { |
| 2749 | +encoding: "utf8", |
| 2750 | +env: { |
| 2751 | + ...process.env, |
| 2752 | +[envName]: value, |
| 2753 | +}, |
| 2754 | +}); |
| 2755 | + |
| 2756 | +expect(result.status).toBe(2); |
| 2757 | +expect(result.stderr).toContain(`invalid ${envName}: ${value}`); |
| 2758 | +expect(result.stderr).not.toContain("OPENAI_API_KEY is required"); |
| 2759 | +}, |
| 2760 | +); |
| 2761 | + |
| 2762 | +it("accepts decimal Open WebUI Docker numeric inputs with leading zeroes", () => { |
| 2763 | +const result = spawnSync("bash", [OPENWEBUI_DOCKER_E2E_PATH], { |
| 2764 | +encoding: "utf8", |
| 2765 | +env: { |
| 2766 | + ...process.env, |
| 2767 | +OPENCLAW_OPENWEBUI_FETCH_TIMEOUT_MS: "09000", |
| 2768 | +OPENCLAW_OPENWEBUI_GATEWAY_PORT: "018789", |
| 2769 | +OPENCLAW_OPENWEBUI_PORT: "08080", |
| 2770 | +OPENCLAW_OPENWEBUI_PROVIDER_TIMEOUT_SECONDS: "08", |
| 2771 | +}, |
| 2772 | +}); |
| 2773 | + |
| 2774 | +expect(result.status).toBe(2); |
| 2775 | +expect(result.stderr).toContain("OPENAI_API_KEY is required"); |
| 2776 | +expect(result.stderr).not.toContain("value too great for base"); |
| 2777 | +}); |
| 2778 | + |
2736 | 2779 | it.each([ |
2737 | 2780 | [MCP_CODE_MODE_GATEWAY_DOCKER_E2E_PATH, "OPENCLAW_MCP_CODE_MODE_GATEWAY_PORT", "1e3"], |
2738 | 2781 | [MCP_CODE_MODE_GATEWAY_DOCKER_E2E_PATH, "OPENCLAW_MCP_CODE_MODE_MOCK_PORT", "65536"], |
|