fix(mqtt): wire TLS switches to connection config

Closes #5722
This commit is contained in:
t8y2
2026-08-10 12:09:07 +08:00
parent ac0493388f
commit 68f67cf45f
2 changed files with 23 additions and 2 deletions
@@ -6438,10 +6438,10 @@ function openExternalUrl(url: string) {
<div class="grid grid-cols-4 items-center gap-4">
<Label :class="connectionLabelClass">{{ t("connection.mqttTls") }}</Label>
<div class="col-span-3 flex items-center gap-2">
<Switch :checked="mqttTls" @update:checked="mqttTls = $event" />
<Switch v-model="mqttTls" />
<Label class="text-sm" :class="mqttTls ? '' : 'text-muted-foreground'">TLS</Label>
<template v-if="mqttTls">
<Switch :checked="mqttTlsSkipVerify" @update:checked="mqttTlsSkipVerify = $event" class="ml-4" />
<Switch v-model="mqttTlsSkipVerify" class="ml-4" />
<Label class="text-sm" :class="mqttTlsSkipVerify ? '' : 'text-muted-foreground'">{{ t("connection.mqttTlsSkipVerify") }}</Label>
</template>
</div>
@@ -0,0 +1,21 @@
import { readFileSync } from "node:fs";
import { describe, expect, it } from "vitest";
const dialogSource = readFileSync(new URL("../../../components/connection/ConnectionDialog.vue", import.meta.url), "utf8");
const mqttSectionStart = dialogSource.indexOf('<template v-else-if="form.db_type === \'mqtt\'">');
const mqttSectionEnd = dialogSource.indexOf('<template v-else-if="form.db_type === \'victoriametrics\'">', mqttSectionStart);
const mqttSection = dialogSource.slice(mqttSectionStart, mqttSectionEnd);
describe("MQTT connection dialog", () => {
it("binds TLS switches through the shared Switch model API", () => {
expect(mqttSection).toContain('<Switch v-model="mqttTls" />');
expect(mqttSection).toContain('<Switch v-model="mqttTlsSkipVerify" class="ml-4" />');
expect(mqttSection).not.toContain(":checked=");
expect(mqttSection).not.toContain("@update:checked=");
});
it("serializes both TLS choices into the MQTT external config", () => {
expect(dialogSource).toContain("tls: mqttTls.value");
expect(dialogSource).toContain("tlsSkipVerify: mqttTlsSkipVerify.value");
});
});