Skip to main content
Glama
dummy_secret.rs6.56 kB
use dal::{ BuiltinsResult, DalContext, SchemaId, func::{ argument::FuncArgumentKind, intrinsics::IntrinsicFunc, leaf::LeafKind, }, pkg::{ ImportOptions, import_pkg_from_pkg, }, }; use si_pkg::{ AuthenticationFuncSpec, FuncArgumentSpec, FuncSpec, FuncSpecBackendKind, FuncSpecBackendResponseType, FuncSpecData, LeafFunctionSpec, LeafInputLocation, PkgSpec, SchemaSpec, SchemaSpecData, SchemaVariantSpec, SchemaVariantSpecData, SiPkg, }; use crate::{ helpers::secret::assemble_secret_definition_dummy, test_exclusive_schemas::{ PKG_CREATED_BY, PKG_VERSION, }, }; pub(crate) async fn migrate_test_exclusive_schema_dummy_secret( ctx: &DalContext, schema_id: SchemaId, ) -> BuiltinsResult<()> { let spec = build_dummy_secret_spec()?; let pkg = SiPkg::load_from_spec(spec)?; import_pkg_from_pkg( ctx, &pkg, Some(ImportOptions { schema_id: Some(schema_id.into()), ..Default::default() }), ) .await?; Ok(()) } fn build_dummy_secret_spec() -> BuiltinsResult<PkgSpec> { let name = "dummy-secret"; let mut builder = PkgSpec::builder(); builder .name(name) .version(PKG_VERSION) .created_by(PKG_CREATED_BY); let identity_func_spec = IntrinsicFunc::Identity.to_spec()?; let scaffold_func = "function createAsset() {\ return new AssetBuilder().build() }"; let fn_name = "test:scaffoldDummySecretAsset"; let authoring_schema_func = FuncSpec::builder() .name(fn_name) .unique_id(fn_name) .data( FuncSpecData::builder() .name(fn_name) .code_plaintext(scaffold_func) .handler("createAsset") .backend_kind(FuncSpecBackendKind::JsSchemaVariantDefinition) .response_type(FuncSpecBackendResponseType::SchemaVariantDefinition) .build()?, ) .build()?; let auth_func_code = "async function auth(secret: Input): Promise<Output> { requestStorage.setItem('dummySecretString', secret.value); requestStorage.setItem('workspaceToken', secret.WorkspaceToken);}"; let fn_name = "test:setDummySecretString"; let auth_func = FuncSpec::builder() .name(fn_name) .unique_id(fn_name) .data( FuncSpecData::builder() .name(fn_name) .code_plaintext(auth_func_code) .handler("auth") .backend_kind(FuncSpecBackendKind::JsAuthentication) .response_type(FuncSpecBackendResponseType::Json) .build()?, ) .argument( FuncArgumentSpec::builder() .name("secret") .kind(FuncArgumentKind::Object) .build()?, ) .build()?; let secret_definition_name = "dummy"; let (dummy_secret_definition_prop, dummy_secret_prop, dummy_secret_output_socket) = assemble_secret_definition_dummy(&identity_func_spec, secret_definition_name)?; let ( qualification_dummy_secret_value_is_todd_func, qualification_dummy_secret_value_is_todd_leaf, ) = assemble_qualification_dummy_secret_value_is_todd()?; let schema = SchemaSpec::builder() .name(name) .data( SchemaSpecData::builder() .name(name) .category("test exclusive") .category_name(name) .build()?, ) .variant( SchemaVariantSpec::builder() .version("v0") .unique_id(format!("{name}_sv")) .data( SchemaVariantSpecData::builder() .version("v0") .color("#ffffff") .func_unique_id(&authoring_schema_func.unique_id) .build()?, ) .auth_func( AuthenticationFuncSpec::builder() .func_unique_id(&auth_func.unique_id) .build()?, ) .secret_prop(dummy_secret_prop) .secret_definition_prop(dummy_secret_definition_prop) .socket(dummy_secret_output_socket) .leaf_function(qualification_dummy_secret_value_is_todd_leaf) .build()?, ) .build()?; let spec = builder .func(identity_func_spec) .func(authoring_schema_func) .func(auth_func) .func(qualification_dummy_secret_value_is_todd_func) .schema(schema) .build()?; Ok(spec) } fn assemble_qualification_dummy_secret_value_is_todd() -> BuiltinsResult<(FuncSpec, LeafFunctionSpec)> { let fn_code = "async function qualification(_component: Input): Promise<Output> {\ const authCheck = requestStorage.getItem('dummySecretString'); if (authCheck) { if (authCheck === 'todd') { return { result: 'success', message: 'dummy secret string matches expected value' }; } return { result: 'failure', message: 'dummy secret string does not match expected value' }; } else { return { result: 'failure', message: 'dummy secret string is empty' }; } }"; let fn_name = "test:qualificationDummySecretStringIsTodd"; let qualification_dummy_secret_value_is_todd_func = FuncSpec::builder() .name(fn_name) .unique_id(fn_name) .data( FuncSpecData::builder() .name(fn_name) .code_plaintext(fn_code) .handler("qualification") .backend_kind(FuncSpecBackendKind::JsAttribute) .response_type(FuncSpecBackendResponseType::Qualification) .build()?, ) .build()?; let qualification_dummy_secret_value_is_todd_leaf = LeafFunctionSpec::builder() .func_unique_id(&qualification_dummy_secret_value_is_todd_func.unique_id) .leaf_kind(LeafKind::Qualification) .inputs(vec![LeafInputLocation::Secrets]) .build()?; Ok(( qualification_dummy_secret_value_is_todd_func, qualification_dummy_secret_value_is_todd_leaf, )) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server