fix(ui): make OCI credentials regionless

This commit is contained in:
Hugo P.Brito
2026-07-15 15:27:27 +01:00
parent 364a0a556a
commit a3bebc1c0d
9 changed files with 64 additions and 20 deletions
@@ -0,0 +1 @@
OCI provider E2E tests no longer require or submit a region when adding or updating credentials
@@ -48,16 +48,6 @@ export const OracleCloudCredentialsForm = ({
variant="bordered"
isRequired
/>
<WizardInputField
control={control}
name={ProviderCredentialFields.OCI_REGION}
type="text"
label="Region"
labelPlacement="inside"
placeholder="e.g. us-ashburn-1"
variant="bordered"
isRequired
/>
<WizardTextareaField
control={control}
name={ProviderCredentialFields.OCI_KEY_CONTENT}
-1
View File
@@ -180,7 +180,6 @@ export const useCredentialsForm = ({
[ProviderCredentialFields.OCI_FINGERPRINT]: "",
[ProviderCredentialFields.OCI_KEY_CONTENT]: "",
[ProviderCredentialFields.OCI_TENANCY]: providerUid || "",
[ProviderCredentialFields.OCI_REGION]: "",
[ProviderCredentialFields.OCI_PASS_PHRASE]: "",
};
case "mongodbatlas":
@@ -0,0 +1,43 @@
import { describe, expect, it, vi } from "vitest";
vi.mock("@/lib", () => ({
getFormValue: (formData: FormData, field: string) => formData.get(field),
filterEmptyValues: (obj: Record<string, unknown>) =>
Object.fromEntries(
Object.entries(obj).filter(([, value]) => {
if (value === null || value === undefined) return false;
if (typeof value === "string" && value.trim() === "") return false;
return true;
}),
),
}));
import { buildOracleCloudSecret } from "./build-credentials";
import { ProviderCredentialFields } from "./provider-credential-fields";
describe("buildOracleCloudSecret", () => {
it("builds OCI API key credentials without region", () => {
const formData = new FormData();
const keyContent =
"-----BEGIN PRIVATE KEY-----\nMIIEvQ...\n-----END PRIVATE KEY-----";
formData.set(ProviderCredentialFields.OCI_USER, "ocid1.user.oc1..example");
formData.set(ProviderCredentialFields.OCI_FINGERPRINT, "aa:bb:cc:dd");
formData.set(ProviderCredentialFields.OCI_KEY_CONTENT, keyContent);
formData.set(
ProviderCredentialFields.OCI_TENANCY,
"ocid1.tenancy.oc1..example",
);
const secret = buildOracleCloudSecret(formData);
expect(secret).toEqual({
[ProviderCredentialFields.OCI_USER]: "ocid1.user.oc1..example",
[ProviderCredentialFields.OCI_FINGERPRINT]: "aa:bb:cc:dd",
[ProviderCredentialFields.OCI_KEY_CONTENT]: btoa(keyContent),
[ProviderCredentialFields.OCI_TENANCY]: "ocid1.tenancy.oc1..example",
});
expect(secret).not.toHaveProperty(ProviderCredentialFields.OCI_REGION);
expect(secret).not.toHaveProperty("regions");
});
});
@@ -389,10 +389,6 @@ export const buildOracleCloudSecret = (
[ProviderCredentialFields.OCI_TENANCY]:
providerUid ||
getFormValue(formData, ProviderCredentialFields.OCI_TENANCY),
[ProviderCredentialFields.OCI_REGION]: getFormValue(
formData,
ProviderCredentialFields.OCI_REGION,
),
[ProviderCredentialFields.OCI_PASS_PHRASE]: getFormValue(
formData,
ProviderCredentialFields.OCI_PASS_PHRASE,
-1
View File
@@ -280,7 +280,6 @@ export type OCICredentials = {
[ProviderCredentialFields.OCI_FINGERPRINT]: string;
[ProviderCredentialFields.OCI_KEY_CONTENT]: string;
[ProviderCredentialFields.OCI_TENANCY]: string;
[ProviderCredentialFields.OCI_REGION]: string;
[ProviderCredentialFields.OCI_PASS_PHRASE]?: string;
[ProviderCredentialFields.PROVIDER_ID]: string;
};
-1
View File
@@ -134,7 +134,6 @@ declare global {
E2E_OCI_USER_ID?: string;
E2E_OCI_FINGERPRINT?: string;
E2E_OCI_KEY_CONTENT?: string;
E2E_OCI_REGION?: string;
// E2E Alibaba Cloud
E2E_ALIBABACLOUD_ACCOUNT_ID?: string;
+20
View File
@@ -220,3 +220,23 @@ users:
expect(result.success).toBe(true);
});
});
describe("addCredentialsFormSchema - oraclecloud", () => {
const BASE_OCI_VALUES = {
[ProviderCredentialFields.PROVIDER_ID]: "provider-oci-1",
[ProviderCredentialFields.PROVIDER_TYPE]: "oraclecloud",
[ProviderCredentialFields.OCI_USER]: "ocid1.user.oc1..example",
[ProviderCredentialFields.OCI_FINGERPRINT]: "aa:bb:cc:dd",
[ProviderCredentialFields.OCI_KEY_CONTENT]:
"-----BEGIN PRIVATE KEY-----\nMIIEvQ...\n-----END PRIVATE KEY-----",
[ProviderCredentialFields.OCI_TENANCY]: "ocid1.tenancy.oc1..example",
} as const;
it("accepts OCI API key credentials without region", () => {
const schema = addCredentialsFormSchema("oraclecloud");
const result = schema.safeParse(BASE_OCI_VALUES);
expect(result.success).toBe(true);
});
});
-3
View File
@@ -288,9 +288,6 @@ export const addCredentialsFormSchema = (
[ProviderCredentialFields.OCI_TENANCY]: z
.string()
.min(1, "Tenancy OCID is required"),
[ProviderCredentialFields.OCI_REGION]: z
.string()
.min(1, "Region is required"),
[ProviderCredentialFields.OCI_PASS_PHRASE]: z
.union([z.string(), z.literal("")])
.optional(),