fix(oci): use home region for identity bootstrap (#12909)

Co-authored-by: Pedro Martín <pedromarting3@gmail.com>
This commit is contained in:
Prowler BotandPedro Martín authored and GitHub committed 2026-09-29 18:08:45 +02:00
1 parent f23b38a269
commit 01d7df6fce
26 files changed
+383 -60

No files matched your search

+1
View File
@@ -281,6 +281,7 @@ 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
@@ -151,6 +151,7 @@ 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;
+23 -1
View File
@@ -307,11 +307,33 @@ describe("addCredentialsFormSchema - oraclecloud", () => {
[ProviderCredentialFields.OCI_TENANCY]: "ocid1.tenancy.oc1..example",
} as const;
it("accepts OCI API key credentials without region", () => {
it("rejects OCI API key credentials without a home region", () => {
const schema = addCredentialsFormSchema("oraclecloud");
const result = schema.safeParse(BASE_OCI_VALUES);
expect(result.success).toBe(false);
});
it("rejects an unknown OCI home region", () => {
const schema = addCredentialsFormSchema("oraclecloud");
const result = schema.safeParse({
...BASE_OCI_VALUES,
[ProviderCredentialFields.OCI_REGION]: "mars-north-1",
});
expect(result.success).toBe(false);
});
it("accepts OCI API key credentials with a home region", () => {
const schema = addCredentialsFormSchema("oraclecloud");
const result = schema.safeParse({
...BASE_OCI_VALUES,
[ProviderCredentialFields.OCI_REGION]: "me-abudhabi-1",
});
expect(result.success).toBe(true);
});
});
+9
View File
@@ -1,6 +1,7 @@
import yaml from "js-yaml";
import { z } from "zod";
import { OCI_REGION_VALUES } from "@/lib/provider-credentials/oci-regions";
import { ProviderCredentialFields } from "@/lib/provider-credentials/provider-credential-fields";
import { validateMutelistYaml, validateYaml } from "@/lib/yaml";
import { MAX_SAML_ADDITIONAL_EMAIL_DOMAINS } from "@/types/saml";
@@ -325,6 +326,14 @@ export const addCredentialsFormSchema = (
[ProviderCredentialFields.OCI_TENANCY]: z
.string()
.min(1, "Tenancy OCID is required"),
[ProviderCredentialFields.OCI_REGION]: z
.string()
.refine(
(region) => OCI_REGION_VALUES.includes(region),
{
error: "Home region is required",
},
),
[ProviderCredentialFields.OCI_PASS_PHRASE]: z
.union([z.string(), z.literal("")])
.optional(),