@ionite/ecv 0.0.23-beta.20260803.1 → 0.0.23-beta.20260809.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +12 -1
- package/dist/index.js +1 -1
- package/dist/runner.js +15 -15
- package/dist/shared/ecv-e6q7dq32.js +15 -0
- package/package.json +6 -6
- package/dist/shared/ecv-rcmx1a2s.js +0 -15
package/dist/index.d.ts
CHANGED
|
@@ -760,6 +760,10 @@ declare function createIamDeltaPatchTests(): {
|
|
|
760
760
|
* Programmatic IAM delta validation runner (always in-process; no external server required).
|
|
761
761
|
*/
|
|
762
762
|
declare function validateIamDelta(): Promise<ValidationSuiteResult>;
|
|
763
|
+
declare function createKmsTests(): {
|
|
764
|
+
tests: TestDef[];
|
|
765
|
+
};
|
|
766
|
+
declare function validateKms(): Promise<ValidationSuiteResult>;
|
|
763
767
|
declare function createLfvCallbackTests(): {
|
|
764
768
|
tests: TestDef[];
|
|
765
769
|
};
|
|
@@ -891,6 +895,10 @@ declare function createValidatorParityTests(): {
|
|
|
891
895
|
tests: TestDef[];
|
|
892
896
|
};
|
|
893
897
|
declare function validateValidatorParity(): Promise<ValidationSuiteResult>;
|
|
898
|
+
declare function createVaultCoordinationTests(): {
|
|
899
|
+
tests: TestDef[];
|
|
900
|
+
};
|
|
901
|
+
declare function validateVaultCoordination(): Promise<ValidationSuiteResult>;
|
|
894
902
|
declare function createVaultWebSocketTransportTests(): {
|
|
895
903
|
tests: TestDef[];
|
|
896
904
|
};
|
|
@@ -931,12 +939,15 @@ declare function defineECVTests(describe: (name: string, fn: () => void) => void
|
|
|
931
939
|
* coverage still runs it via the discovered `capabilitiez` catalog (always-run).
|
|
932
940
|
*/
|
|
933
941
|
otel?: boolean;
|
|
942
|
+
/** KMS token-pool lifecycle validation. Enabled by default; set `false` to omit it. */
|
|
943
|
+
kms?: boolean;
|
|
934
944
|
protocolSurface?: boolean;
|
|
935
945
|
harness?: boolean;
|
|
936
946
|
secretsHardening?: boolean;
|
|
937
947
|
redisStores?: boolean;
|
|
938
948
|
tenantLifecycle?: boolean;
|
|
939
949
|
vaultWebsocket?: boolean;
|
|
950
|
+
vaultCoordination?: boolean;
|
|
940
951
|
idTokenVerification?: boolean;
|
|
941
952
|
performanceTuning?: boolean;
|
|
942
953
|
validatorParity?: boolean;
|
|
@@ -1032,4 +1043,4 @@ declare function defineDiscoveredECVSuite(hooks: DiscoveredECVSuiteHooks, config
|
|
|
1032
1043
|
* Print a validation report to console
|
|
1033
1044
|
*/
|
|
1034
1045
|
declare function printReport(report: ValidationReport): void;
|
|
1035
|
-
export { waitForReady, validateWorkload, validateVaultWebSocketTransport, validateValidatorParity, validateTenantLifecycle, validateTenant, validateSsoIdTokenVerification, validateSecretsHardening, validateSSO, validateRedisStores, validateProtocolSurface, validatePerformanceTuning, validateOtel, validateLfvDelivery, validateIamDelta, validateIAM, validateCapabilities, validateCIAM, validateAuthz, stopEcvServer, startEcvServer, startAppUnderTest, skipTest, setVaultRedisUrl, runTest, resolveBaseUrl, printReport, getVaultRedisUrl, getTenantAuthToken, fetchCapabilitiezManifest, defineECVTests, defineDiscoveredECVSuite, createWorkloadTests, createWorkloadScopeTests, createVaultWebSocketTransportTests, createValidatorParityTests, createTenantTests, createTenantLifecycleTests, createSsoIdTokenVerificationTests, createSecretsHardeningTests, createSSOTests, createRedisStoreTests, createProtocolSurfaceTests, createPerformanceTuningTests, createOtelTests, createOaaProjectionTests, createLfvCallbackTests, createIamDeltaPatchTests, createIAMTests, createHarnessSelfTests, createFetcher, createDiscoveredECVTests, createConfigRetryTests, createConfigLifecycleTests, createConfigBoundaryTests, createCapabilityTests, createCIAMTests, createAuthzClosureTests, capabilitySkipReason, buildEcvCatalog, assertValid, assertEqual, assert, WorkloadValidationConfig, WaitForReadyOptions, ValidationSuiteResult, ValidationResult, ValidationReport, ValidationConfig, TestDef, TenantValidationProfile, TenantValidationConfig, StartAppOptions, SSOValidationConfig, ION_TENANT_SCOPE, ION_IAM_SCOPES, ION_CAPABILITIEZ_SCOPE, IAMValidationConfig, EcvTestContext, EcvServerHandle, EcvCatalogEntry, DiscoveredECVSuiteHooks, DiscoveredECVSuiteConfig, DiscoveredECVConfig, CapabilityValidationConfig, CIAMValidationConfig, AuthzValidationConfig, AppUnderTest };
|
|
1046
|
+
export { waitForReady, validateWorkload, validateVaultWebSocketTransport, validateVaultCoordination, validateValidatorParity, validateTenantLifecycle, validateTenant, validateSsoIdTokenVerification, validateSecretsHardening, validateSSO, validateRedisStores, validateProtocolSurface, validatePerformanceTuning, validateOtel, validateLfvDelivery, validateKms, validateIamDelta, validateIAM, validateCapabilities, validateCIAM, validateAuthz, stopEcvServer, startEcvServer, startAppUnderTest, skipTest, setVaultRedisUrl, runTest, resolveBaseUrl, printReport, getVaultRedisUrl, getTenantAuthToken, fetchCapabilitiezManifest, defineECVTests, defineDiscoveredECVSuite, createWorkloadTests, createWorkloadScopeTests, createVaultWebSocketTransportTests, createVaultCoordinationTests, createValidatorParityTests, createTenantTests, createTenantLifecycleTests, createSsoIdTokenVerificationTests, createSecretsHardeningTests, createSSOTests, createRedisStoreTests, createProtocolSurfaceTests, createPerformanceTuningTests, createOtelTests, createOaaProjectionTests, createLfvCallbackTests, createKmsTests, createIamDeltaPatchTests, createIAMTests, createHarnessSelfTests, createFetcher, createDiscoveredECVTests, createConfigRetryTests, createConfigLifecycleTests, createConfigBoundaryTests, createCapabilityTests, createCIAMTests, createAuthzClosureTests, capabilitySkipReason, buildEcvCatalog, assertValid, assertEqual, assert, WorkloadValidationConfig, WaitForReadyOptions, ValidationSuiteResult, ValidationResult, ValidationReport, ValidationConfig, TestDef, TenantValidationProfile, TenantValidationConfig, StartAppOptions, SSOValidationConfig, ION_TENANT_SCOPE, ION_IAM_SCOPES, ION_CAPABILITIEZ_SCOPE, IAMValidationConfig, EcvTestContext, EcvServerHandle, EcvCatalogEntry, DiscoveredECVSuiteHooks, DiscoveredECVSuiteConfig, DiscoveredECVConfig, CapabilityValidationConfig, CIAMValidationConfig, AuthzValidationConfig, AppUnderTest };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as _,A as z,B as A,C as B,D as C,E as D,F as E,G as F,H as G,I as H,J as I,K as J,L as K,M as L,N as M,O as N,P as O,Q as P,R as Q,S as R,T as S,U as T,V as U,W as V,X as W,Y as X,Z as Y,_ as Z,aa as $,b as a,ba as aa,c as b,ca as ba,d as c,da as ca,e as d,ea as da,f as e,fa as ea,g as f,ga as fa,h as g,ha as ga,i as h,ia as ha,j as i,ja as ia,k as j,ka as ja,l as k,la as ka,m as l,ma as la,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w,y as x,z as y}from"./shared/ecv-
|
|
1
|
+
import{$ as _,A as z,B as A,C as B,D as C,E as D,F as E,G as F,H as G,I as H,J as I,K as J,L as K,M as L,N as M,O as N,P as O,Q as P,R as Q,S as R,T as S,U as T,V as U,W as V,X as W,Y as X,Z as Y,_ as Z,aa as $,b as a,ba as aa,c as b,ca as ba,d as c,da as ca,e as d,ea as da,f as e,fa as ea,g as f,ga as fa,h as g,ha as ga,i as h,ia as ha,j as i,ja as ia,k as j,ka as ja,l as k,la as ka,m as l,ma as la,n as m,na as ma,o as n,oa as na,p as o,pa as oa,q as p,qa as pa,r as q,s as r,t as s,u as t,v as u,w as v,x as w,y as x,z as y}from"./shared/ecv-e6q7dq32.js";export{a as waitForReady,V as validateWorkload,ma as validateVaultWebSocketTransport,U as validateVaultCoordination,ka as validateValidatorParity,ia as validateTenantLifecycle,fa as validateTenant,S as validateSsoIdTokenVerification,ea as validateSecretsHardening,P as validateSSO,ca as validateRedisStores,O as validateProtocolSurface,aa as validatePerformanceTuning,M as validateOtel,K as validateLfvDelivery,I as validateKms,G as validateIamDelta,D as validateIAM,v as validateCapabilities,x as validateCIAM,q as validateAuthz,f as stopEcvServer,e as startEcvServer,b as startAppUnderTest,j as skipTest,c as setVaultRedisUrl,i as runTest,g as resolveBaseUrl,pa as printReport,d as getVaultRedisUrl,u as getTenantAuthToken,X as fetchCapabilitiezManifest,na as defineECVTests,oa as defineDiscoveredECVSuite,W as createWorkloadTests,p as createWorkloadScopeTests,la as createVaultWebSocketTransportTests,T as createVaultCoordinationTests,ja as createValidatorParityTests,ga as createTenantTests,ha as createTenantLifecycleTests,R as createSsoIdTokenVerificationTests,da as createSecretsHardeningTests,Q as createSSOTests,ba as createRedisStoreTests,N as createProtocolSurfaceTests,$ as createPerformanceTuningTests,L as createOtelTests,o as createOaaProjectionTests,J as createLfvCallbackTests,H as createKmsTests,F as createIamDeltaPatchTests,E as createIAMTests,C as createHarnessSelfTests,h as createFetcher,_ as createDiscoveredECVTests,B as createConfigRetryTests,z as createConfigLifecycleTests,A as createConfigBoundaryTests,w as createCapabilityTests,y as createCIAMTests,n as createAuthzClosureTests,Y as capabilitySkipReason,Z as buildEcvCatalog,m as assertValid,l as assertEqual,k as assert,t as ION_TENANT_SCOPE,r as ION_IAM_SCOPES,s as ION_CAPABILITIEZ_SCOPE};
|
package/dist/runner.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
import{E as
|
|
3
|
-
`),
|
|
4
|
-
`),{suite:G,passed:!1,tests:[{name:`${G} Test Execution`,passed:!1,error:
|
|
5
|
-
`);let{baseUrl:F,vaultUrl:
|
|
6
|
-
`),process.env.ION_VAULT_URL=
|
|
2
|
+
import{E as V,H as W,J as y,L as D,Q as x,W as M,a as E,ba as _,ga as A,k as H,la as w,r as N,y as O}from"./shared/ecv-e6q7dq32.js";import{ionite as S,vault as P,vaultConfig as f}from"@ionite/server";import{createValidators as m}from"@ionite/valibot";function L(G,F,X){return{suite:G,passed:!0,tests:[H(F,X)],duration:0,summary:{total:1,passed:0,failed:0,skipped:1}}}async function Z(G,F,X){console.log(`\uD83D\uDCDD Running ${F} validation tests...`);try{let Q=await X();return console.log(` ${Q.passed?"✅":"❌"} ${G}: ${Q.summary.passed}/${Q.summary.total} passed
|
|
3
|
+
`),Q}catch(Q){return console.error(` ❌ ${G} tests failed: ${Q instanceof Error?Q.message:String(Q)}
|
|
4
|
+
`),{suite:G,passed:!1,tests:[{name:`${G} Test Execution`,passed:!1,error:Q instanceof Error?Q.message:String(Q),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}}}}function k(G){let F=P({type:"vault",url:process.env.ION_VAULT_URL,token:process.env.ION_VAULT_TOKEN});return S(f({vault:F,path:G}),{validators:m()})}function p(){let G=process.env.TEST_BASE_URL,F=process.env.ION_VAULT_URL,X=process.env.ION_VAULT_TOKEN,Q=process.env.ION_VAULT_PATH,Y=process.env.RESULTS_CALLBACK_URL;if(!G)throw Error("TEST_BASE_URL environment variable is required");if(!F)throw Error("ION_VAULT_URL environment variable is required");if(!X)throw Error("ION_VAULT_TOKEN environment variable is required");if(!Q)throw Error("ION_VAULT_PATH environment variable is required");if(!Y)throw Error("RESULTS_CALLBACK_URL environment variable is required");return{baseUrl:G,vaultUrl:F,vaultToken:X,vaultPath:Q,callbackUrl:Y}}function R(G){return{baseUrl:G,loginPath:process.env.TEST_SSO_LOGIN_PATH,callbackPath:process.env.TEST_SSO_CALLBACK_PATH,userPath:process.env.TEST_SSO_USER_PATH,logoutPath:process.env.TEST_SSO_LOGOUT_PATH,backChannelLogoutPath:process.env.TEST_SSO_BACKCHANNEL_LOGOUT_PATH}}function U(G,F){return{baseUrl:G,ion:F,scimPath:process.env.TEST_IAM_SCIM_PATH,groupsInboundPath:process.env.TEST_IAM_GROUPS_INBOUND_PATH}}function c(G){return{baseUrl:G,validatePath:process.env.TEST_WORKLOAD_VALIDATE_PATH,jwksPath:process.env.TEST_WORKLOAD_JWKS_PATH}}function b(G){return{baseUrl:G,customerPath:process.env.TEST_CIAM_CUSTOMER_PATH,magicLinkPath:process.env.TEST_CIAM_MAGIC_LINK_PATH,magicLinkLoginPath:process.env.TEST_CIAM_MAGIC_LINK_LOGIN_PATH,logoutPath:process.env.TEST_CIAM_LOGOUT_PATH,backChannelLogoutPath:process.env.TEST_CIAM_BACKCHANNEL_LOGOUT_PATH}}function d(G){let F=process.env.TEST_TENANT_COMPANY_ID?{id:process.env.TEST_TENANT_APP_ID||process.env.TEST_TENANT_COMPANY_ID,companyId:process.env.TEST_TENANT_COMPANY_ID,companyName:process.env.TEST_TENANT_COMPANY_NAME||"Test Company",environmentType:process.env.TEST_TENANT_ENVIRONMENT_TYPE||"POC",email:process.env.TEST_TENANT_EMAIL||"test@example.com",callbackUrl:process.env.TEST_TENANT_CALLBACK_URL,configLocator:{path:process.env.TEST_TENANT_CONFIG_LOCATOR_PATH||"/ecv/test-config",...process.env.TEST_TENANT_CONFIG_LOCATOR_SOURCE?{source:process.env.TEST_TENANT_CONFIG_LOCATOR_SOURCE}:{},...process.env.TEST_TENANT_CONFIG_LOCATOR_TTL?{ttl:Number(process.env.TEST_TENANT_CONFIG_LOCATOR_TTL)}:{}}}:void 0;return{baseUrl:G,tenantPath:process.env.TEST_TENANT_PATH,testTenantData:F}}async function v(G,F){let X=await fetch(G,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...F,timestamp:F.timestamp.toISOString()})});if(!X.ok){let Q=await X.text().catch(()=>"Unknown error");throw Error(`Failed to post results to callback URL: ${X.status} ${X.statusText} - ${Q}`)}}async function n(){let G=performance.now();try{console.log(`\uD83D\uDE80 Starting Enterprise Control Validation Test Runner...
|
|
5
|
+
`);let{baseUrl:F,vaultUrl:X,vaultToken:Q,vaultPath:Y,callbackUrl:q}=p();console.log("\uD83D\uDCCB Configuration:"),console.log(` Base URL: ${F}`),console.log(` Vault URL: ${X}`),console.log(` Vault Path: ${Y}`),console.log(` Callback URL: ${q}
|
|
6
|
+
`),process.env.ION_VAULT_URL=X,process.env.ION_VAULT_TOKEN=Q,process.env.ION_VAULT_PATH=Y,console.log("\uD83D\uDD27 Initializing Ionite instance...");let $=null;try{$=k(Y),await $.ready(30000),console.log(`✅ Ionite initialized
|
|
7
7
|
`)}catch(B){console.warn(`⚠️ Failed to initialize Ionite: ${B instanceof Error?B.message:String(B)}`),console.warn(` Some tests (IAM) may be skipped
|
|
8
|
-
`)}let
|
|
9
|
-
`),console.log("\uD83D\uDCDD Running SSO validation tests...");try{let B=await
|
|
8
|
+
`)}let h=R(F),T=U(F,()=>$),I=c(F),g=d(F),C=b(F),J=[];console.log(`\uD83E\uDDEA Running validation tests...
|
|
9
|
+
`),console.log("\uD83D\uDCDD Running SSO validation tests...");try{let B=await x(h);J.push(B),console.log(` ${B.passed?"✅":"❌"} SSO: ${B.summary.passed}/${B.summary.total} passed
|
|
10
10
|
`)}catch(B){console.error(` ❌ SSO tests failed: ${B instanceof Error?B.message:String(B)}
|
|
11
|
-
`),J.push({suite:"SSO",passed:!1,tests:[{name:"SSO Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}console.log("\uD83D\uDCDD Running IAM validation tests...");try{let B=await
|
|
11
|
+
`),J.push({suite:"SSO",passed:!1,tests:[{name:"SSO Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}console.log("\uD83D\uDCDD Running IAM validation tests...");try{let B=await V(T);J.push(B),console.log(` ${B.passed?"✅":"❌"} IAM: ${B.summary.passed}/${B.summary.total} passed
|
|
12
12
|
`)}catch(B){console.error(` ❌ IAM tests failed: ${B instanceof Error?B.message:String(B)}
|
|
13
|
-
`),J.push({suite:"IAM",passed:!1,tests:[{name:"IAM Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}console.log("\uD83D\uDCDD Running Workload validation tests...");try{let B=await
|
|
13
|
+
`),J.push({suite:"IAM",passed:!1,tests:[{name:"IAM Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}console.log("\uD83D\uDCDD Running Workload validation tests...");try{let B=await M(I);J.push(B),console.log(` ${B.passed?"✅":"❌"} Workload: ${B.summary.passed}/${B.summary.total} passed
|
|
14
14
|
`)}catch(B){console.error(` ❌ Workload tests failed: ${B instanceof Error?B.message:String(B)}
|
|
15
|
-
`),J.push({suite:"Workload",passed:!1,tests:[{name:"Workload Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}console.log("\uD83D\uDCDD Running Tenant validation tests...");try{let B=await
|
|
15
|
+
`),J.push({suite:"Workload",passed:!1,tests:[{name:"Workload Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}console.log("\uD83D\uDCDD Running Tenant validation tests...");try{let B=await A(g);J.push(B),console.log(` ${B.passed?"✅":"❌"} Tenant: ${B.summary.passed}/${B.summary.total} passed
|
|
16
16
|
`)}catch(B){console.error(` ❌ Tenant tests failed: ${B instanceof Error?B.message:String(B)}
|
|
17
|
-
`),J.push({suite:"Tenant",passed:!1,tests:[{name:"Tenant Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}console.log("\uD83D\uDCDD Running CIAM validation tests...");try{let B=await O(
|
|
17
|
+
`),J.push({suite:"Tenant",passed:!1,tests:[{name:"Tenant Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}console.log("\uD83D\uDCDD Running CIAM validation tests...");try{let B=await O(C);J.push(B),console.log(` ${B.passed?"✅":"❌"} CIAM: ${B.summary.passed}/${B.summary.total} passed
|
|
18
18
|
`)}catch(B){console.error(` ❌ CIAM tests failed: ${B instanceof Error?B.message:String(B)}
|
|
19
|
-
`),J.push({suite:"CIAM",passed:!1,tests:[{name:"CIAM Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}J.push(await
|
|
20
|
-
`),console.log("\uD83D\uDCE4 Posting results to callback URL..."),await
|
|
21
|
-
`),process.exit(
|
|
22
|
-
❌ Fatal error:`,F instanceof Error?F.message:String(F)),F instanceof Error&&F.stack)console.error(F.stack);process.exit(1)}}if(E.main==E.module)
|
|
19
|
+
`),J.push({suite:"CIAM",passed:!1,tests:[{name:"CIAM Test Execution",passed:!1,error:B instanceof Error?B.message:String(B),duration:0}],duration:0,summary:{total:1,passed:0,failed:1,skipped:0}})}J.push(await Z("Authz","Authz",()=>N())),J.push(await Z("IAM Delta","IAM Delta",()=>W())),J.push(await Z("LFV","LFV",()=>D())),J.push(await Z("KMS","KMS token pools",()=>y())),J.push(await Z("Validator parity","Validator parity",()=>w())),J.push(await Z("Performance tuning","Performance tuning",()=>_()));let z="requires the ECV mock-server harness (capabilitiez token broker / Veza receiver); run via defineDiscoveredECVSuite or defineECVTests";J.push(L("Capabilities","Capability catalog",z)),J.push(L("Workload scopes","Workload scope authorization",z));let K=performance.now()-G,j={timestamp:new Date,baseUrl:F,passed:J.every((B)=>B.passed),suites:J,duration:K};console.log("\uD83D\uDCCA Test Summary:"),console.log(` Total Suites: ${J.length}`),console.log(` Passed: ${J.filter((B)=>B.passed).length}`),console.log(` Failed: ${J.filter((B)=>!B.passed).length}`),console.log(` Duration: ${K.toFixed(2)}ms`),console.log(` Overall: ${j.passed?"✅ PASSED":"❌ FAILED"}
|
|
20
|
+
`),console.log("\uD83D\uDCE4 Posting results to callback URL..."),await v(q,j),console.log(`✅ Results posted successfully
|
|
21
|
+
`),process.exit(j.passed?0:1)}catch(F){if(console.error(`
|
|
22
|
+
❌ Fatal error:`,F instanceof Error?F.message:String(F)),F instanceof Error&&F.stack)console.error(F.stack);process.exit(1)}}if(E.main==E.module)n();
|