Skip to content
This repository was archived by the owner on Feb 6, 2026. It is now read-only.

Commit 2748150

Browse files
merge: #3490
3490: Ensure actions work with secrets and move apply change set logic to dal (ENG-2410) r=nickgerace a=nickgerace ## Description This PR adds an integration test for ensuring that actions work with secrets. For both testing and for code reuse, the apply logic has been moved to the dal. <img src="https://media3.giphy.com/media/EDd9ER1ixrCzMprljW/giphy.gif"/> ## Additional Changes - Move the upsertion of "create" actions to `Component::new` - Rename `ChangeSetPointerError` to `ChangeSetError` and `ChangeSetPointerResult` to `ChangeSetResult` for two reasons - First reason: this is part of the ongoing refactor to replace the new change set concept with the old one - Second reason: to avoid confusion with the introduction of the `ChangeSetApplyError` and `ChangeSetApplyResult` types - Reduce and refactor sdf change set service errors - Standardize package version string for test exclusive schemas - Standardize package "created by" string for test exclusive schemas - Make the secret defining test exclusive schema more generic and rename "fake" to "dummy" (the previous name was confusing given the name of the sockets for the fallout and starfield schemas) - Return an error when a qualification map attribute value does not have an ordering node Co-authored-by: Nick Gerace <nick@systeminit.com>
2 parents 1a90ee5 + 90fd2d8 commit 2748150

51 files changed

Lines changed: 786 additions & 464 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

lib/dal-test/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ async fn migrate_local_builtins(
753753
schema::migrate_pkg(&ctx, SI_AWS_EC2_PKG, None).await?;
754754
schemas::migrate_test_exclusive_schema_starfield(&ctx).await?;
755755
schemas::migrate_test_exclusive_schema_fallout(&ctx).await?;
756-
schemas::migrate_test_exclusive_schema_bethesda_secret(&ctx).await?;
756+
schemas::migrate_test_exclusive_schema_dummy_secret(&ctx).await?;
757757
schemas::migrate_test_exclusive_schema_swifty(&ctx).await?;
758758
schemas::migrate_test_exclusive_schema_katy_perry(&ctx).await?;
759759
schemas::migrate_test_exclusive_schema_pirate(&ctx).await?;

lib/dal-test/src/schemas/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
pub use test_exclusive_schema_bethesda_secret::migrate_test_exclusive_schema_bethesda_secret;
21
pub use test_exclusive_schema_category_pirate::migrate_test_exclusive_schema_pet_shop;
32
pub use test_exclusive_schema_category_pirate::migrate_test_exclusive_schema_pirate;
3+
pub use test_exclusive_schema_dummy_secret::migrate_test_exclusive_schema_dummy_secret;
44
pub use test_exclusive_schema_fallout::migrate_test_exclusive_schema_fallout;
55
pub use test_exclusive_schema_katy_perry::migrate_test_exclusive_schema_katy_perry;
66
pub use test_exclusive_schema_starfield::migrate_test_exclusive_schema_starfield;
77
pub use test_exclusive_schema_swifty::migrate_test_exclusive_schema_swifty;
88

9+
const PKG_VERSION: &str = "2019-06-03";
10+
const PKG_CREATED_BY: &str = "System Initiative";
11+
912
mod schema_helpers;
10-
mod test_exclusive_schema_bethesda_secret;
1113
mod test_exclusive_schema_category_pirate;
14+
mod test_exclusive_schema_dummy_secret;
1215
mod test_exclusive_schema_fallout;
1316
mod test_exclusive_schema_katy_perry;
1417
mod test_exclusive_schema_starfield;

lib/dal-test/src/schemas/schema_helpers.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
use dal::func::argument::FuncArgumentKind;
22
use dal::func::intrinsics::IntrinsicFunc;
3-
use dal::BuiltinsError;
3+
use dal::{BuiltinsError, BuiltinsResult};
44
use si_pkg::{
55
FuncArgumentSpec, FuncSpec, FuncSpecBackendKind, FuncSpecBackendResponseType, FuncSpecData,
66
};
77

8-
pub(crate) fn create_identity_func() -> FuncSpec {
9-
IntrinsicFunc::Identity
10-
.to_spec()
11-
.expect("create identity func spec")
8+
pub(crate) fn create_identity_func() -> BuiltinsResult<FuncSpec> {
9+
Ok(IntrinsicFunc::Identity.to_spec()?)
1210
}
1311

14-
pub(crate) async fn build_resource_payload_to_value_func() -> Result<FuncSpec, BuiltinsError> {
12+
pub(crate) async fn build_resource_payload_to_value_func() -> BuiltinsResult<FuncSpec> {
1513
let resource_payload_to_value_func_code = "async function main(arg: Input): Promise<Output> {\
1614
return arg.payload ?? {};
1715
}";
@@ -60,10 +58,7 @@ pub(crate) async fn build_action_func(
6058
Ok(func)
6159
}
6260

63-
pub(crate) async fn build_codegen_func(
64-
code: &str,
65-
fn_name: &str,
66-
) -> Result<FuncSpec, BuiltinsError> {
61+
pub(crate) async fn build_codegen_func(code: &str, fn_name: &str) -> BuiltinsResult<FuncSpec> {
6762
let func = FuncSpec::builder()
6863
.name(fn_name)
6964
.unique_id(fn_name)
@@ -87,7 +82,7 @@ pub(crate) async fn build_codegen_func(
8782
Ok(func)
8883
}
8984

90-
pub(crate) async fn build_asset_func(fn_name: &str) -> Result<FuncSpec, BuiltinsError> {
85+
pub(crate) async fn build_asset_func(fn_name: &str) -> BuiltinsResult<FuncSpec> {
9186
let scaffold_func = "function main() {\
9287
return new AssetBuilder().build();
9388
}";

lib/dal-test/src/schemas/test_exclusive_schema_category_pirate.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ pub async fn migrate_test_exclusive_schema_pirate(ctx: &DalContext) -> BuiltinsR
1515

1616
builder
1717
.name("pirate")
18-
.version("2024-03-12")
19-
.created_by("System Initiative");
18+
.version(crate::schemas::PKG_VERSION)
19+
.created_by(crate::schemas::PKG_CREATED_BY);
2020

21-
let identity_func_spec = create_identity_func();
21+
let identity_func_spec = create_identity_func()?;
2222

2323
// Create Scaffold Func
2424
let fn_name = "test:scaffoldPirateAsset";
@@ -137,10 +137,10 @@ pub async fn migrate_test_exclusive_schema_pet_shop(ctx: &DalContext) -> Builtin
137137

138138
builder
139139
.name(schema_name)
140-
.version("2024-03-21")
141-
.created_by("System Initiative");
140+
.version(crate::schemas::PKG_VERSION)
141+
.created_by(crate::schemas::PKG_CREATED_BY);
142142

143-
let identity_func_spec = create_identity_func();
143+
let identity_func_spec = create_identity_func()?;
144144

145145
// Create Scaffold Func
146146
let fn_name = "test:scaffoldPetShopAsset";

lib/dal-test/src/schemas/test_exclusive_schema_bethesda_secret.rs renamed to lib/dal-test/src/schemas/test_exclusive_schema_dummy_secret.rs

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@ use si_pkg::{
1414
SchemaSpecData, SocketSpecArity,
1515
};
1616

17-
pub async fn migrate_test_exclusive_schema_bethesda_secret(ctx: &DalContext) -> BuiltinsResult<()> {
18-
let name = "bethesda-secret";
17+
pub async fn migrate_test_exclusive_schema_dummy_secret(ctx: &DalContext) -> BuiltinsResult<()> {
18+
let name = "dummy-secret";
1919

2020
let mut builder = PkgSpec::builder();
2121

2222
builder
2323
.name(name)
24-
.version("2024-03-01")
25-
.created_by("System Initiative");
24+
.version(crate::schemas::PKG_VERSION)
25+
.created_by(crate::schemas::PKG_CREATED_BY);
2626

2727
let identity_func_spec = IntrinsicFunc::Identity.to_spec()?;
2828

2929
let scaffold_func = "function createAsset() {\
3030
return new AssetBuilder().build()
3131
}";
32-
let fn_name = "test:scaffoldBethesdaSecretAsset";
32+
let fn_name = "test:scaffoldDummySecretAsset";
3333
let authoring_schema_func = FuncSpec::builder()
3434
.name(fn_name)
3535
.unique_id(fn_name)
@@ -44,8 +44,8 @@ pub async fn migrate_test_exclusive_schema_bethesda_secret(ctx: &DalContext) ->
4444
)
4545
.build()?;
4646

47-
let auth_func_code = "async function auth(secret: Input): Promise<Output> { requestStorage.setItem('fakeSecretString', secret.value); }";
48-
let fn_name = "test:setFakeSecretString";
47+
let auth_func_code = "async function auth(secret: Input): Promise<Output> { requestStorage.setItem('dummySecretString', secret.value); }";
48+
let fn_name = "test:setDummySecretString";
4949
let auth_func = FuncSpec::builder()
5050
.name(fn_name)
5151
.unique_id(fn_name)
@@ -66,13 +66,13 @@ pub async fn migrate_test_exclusive_schema_bethesda_secret(ctx: &DalContext) ->
6666
)
6767
.build()?;
6868

69-
let (fake_secret_definition_prop, fake_secret_prop, fake_secret_output_socket) =
70-
assemble_secret_definition_fake(&identity_func_spec)?;
69+
let (dummy_secret_definition_prop, dummy_secret_prop, dummy_secret_output_socket) =
70+
assemble_secret_definition_dummy(&identity_func_spec)?;
7171

7272
let (
73-
qualification_fake_secret_value_is_todd_func,
74-
qualification_fake_secret_value_is_todd_leaf,
75-
) = assemble_qualification_fake_secret_value_is_todd()?;
73+
qualification_dummy_secret_value_is_todd_func,
74+
qualification_dummy_secret_value_is_todd_leaf,
75+
) = assemble_qualification_dummy_secret_value_is_todd()?;
7676

7777
let schema = SchemaSpec::builder()
7878
.name(name)
@@ -100,10 +100,10 @@ pub async fn migrate_test_exclusive_schema_bethesda_secret(ctx: &DalContext) ->
100100
.func_unique_id(&auth_func.unique_id)
101101
.build()?,
102102
)
103-
.secret_prop(fake_secret_prop)
104-
.secret_definition_prop(fake_secret_definition_prop)
105-
.socket(fake_secret_output_socket)
106-
.leaf_function(qualification_fake_secret_value_is_todd_leaf)
103+
.secret_prop(dummy_secret_prop)
104+
.secret_definition_prop(dummy_secret_definition_prop)
105+
.socket(dummy_secret_output_socket)
106+
.leaf_function(qualification_dummy_secret_value_is_todd_leaf)
107107
.build()?,
108108
)
109109
.build()?;
@@ -112,7 +112,7 @@ pub async fn migrate_test_exclusive_schema_bethesda_secret(ctx: &DalContext) ->
112112
.func(identity_func_spec)
113113
.func(authoring_schema_func)
114114
.func(auth_func)
115-
.func(qualification_fake_secret_value_is_todd_func)
115+
.func(qualification_dummy_secret_value_is_todd_func)
116116
.schema(schema)
117117
.build()?;
118118

@@ -131,10 +131,10 @@ pub async fn migrate_test_exclusive_schema_bethesda_secret(ctx: &DalContext) ->
131131
}
132132

133133
// Mimics the "defineSecret" function in "asset_builder.ts".
134-
fn assemble_secret_definition_fake(
134+
fn assemble_secret_definition_dummy(
135135
identity_func_spec: &FuncSpec,
136136
) -> BuiltinsResult<(PropSpec, PropSpec, SocketSpec)> {
137-
let secret_definition_name = "fake";
137+
let secret_definition_name = "dummy";
138138

139139
// First, create the child of "/root/secret_definition" that defines our secret.
140140
let new_secret_definition_prop = PropSpec::builder()
@@ -188,30 +188,30 @@ fn assemble_secret_definition_fake(
188188
))
189189
}
190190

191-
fn assemble_qualification_fake_secret_value_is_todd() -> BuiltinsResult<(FuncSpec, LeafFunctionSpec)>
192-
{
191+
fn assemble_qualification_dummy_secret_value_is_todd(
192+
) -> BuiltinsResult<(FuncSpec, LeafFunctionSpec)> {
193193
let fn_code = "async function qualification(_component: Input): Promise<Output> {\
194-
const authCheck = requestStorage.getItem('fakeSecretString');
194+
const authCheck = requestStorage.getItem('dummySecretString');
195195
if (authCheck) {
196196
if (authCheck === 'todd') {
197197
return {
198198
result: 'success',
199-
message: 'fake secret string matches expected value'
199+
message: 'dummy secret string matches expected value'
200200
};
201201
}
202202
return {
203203
result: 'failure',
204-
message: 'fake secret string does not match expected value'
204+
message: 'dummy secret string does not match expected value'
205205
};
206206
} else {
207207
return {
208208
result: 'failure',
209-
message: 'fake secret string is empty'
209+
message: 'dummy secret string is empty'
210210
};
211211
}
212212
}";
213-
let fn_name = "test:qualificationFakeSecretStringIsTodd";
214-
let qualification_fake_secret_value_is_todd_func = FuncSpec::builder()
213+
let fn_name = "test:qualificationDummySecretStringIsTodd";
214+
let qualification_dummy_secret_value_is_todd_func = FuncSpec::builder()
215215
.name(fn_name)
216216
.unique_id(fn_name)
217217
.data(
@@ -225,14 +225,14 @@ fn assemble_qualification_fake_secret_value_is_todd() -> BuiltinsResult<(FuncSpe
225225
)
226226
.build()?;
227227

228-
let qualification_fake_secret_value_is_todd_leaf = LeafFunctionSpec::builder()
229-
.func_unique_id(&qualification_fake_secret_value_is_todd_func.unique_id)
228+
let qualification_dummy_secret_value_is_todd_leaf = LeafFunctionSpec::builder()
229+
.func_unique_id(&qualification_dummy_secret_value_is_todd_func.unique_id)
230230
.leaf_kind(LeafKind::Qualification)
231231
.inputs(vec![LeafInputLocation::Secrets])
232232
.build()?;
233233

234234
Ok((
235-
qualification_fake_secret_value_is_todd_func,
236-
qualification_fake_secret_value_is_todd_leaf,
235+
qualification_dummy_secret_value_is_todd_func,
236+
qualification_dummy_secret_value_is_todd_leaf,
237237
))
238238
}

0 commit comments

Comments
 (0)