@@ -252,7 +252,7 @@ func TestBundleExecutionOptions_ParseParamSets(t *testing.T) {
252
252
err := opts .Validate (ctx , []string {}, p .Porter )
253
253
assert .NoError (t , err )
254
254
255
- err = opts .parseParamSets (ctx , p .Porter , cnab.ExtendedBundle {})
255
+ err = opts .parseParamSets (ctx , p .Porter , cnab.ExtendedBundle {}, storage. ParameterSet {} )
256
256
assert .NoError (t , err )
257
257
258
258
wantParams := map [string ]string {
@@ -282,7 +282,7 @@ func TestBundleExecutionOptions_ParseParamSets_Failed(t *testing.T) {
282
282
err = opts .Validate (ctx , []string {}, p .Porter )
283
283
assert .NoError (t , err )
284
284
285
- err = opts .parseParamSets (ctx , p .Porter , bun )
285
+ err = opts .parseParamSets (ctx , p .Porter , bun , storage. ParameterSet {} )
286
286
assert .Error (t , err )
287
287
288
288
}
@@ -302,7 +302,7 @@ func TestBundleExecutionOptions_LoadParameters(t *testing.T) {
302
302
opts := NewBundleExecutionOptions ()
303
303
opts .Params = []string {"my-first-param=1" , "my-second-param=2" }
304
304
305
- err = opts .LoadParameters (context .Background (), p .Porter , bun )
305
+ err = opts .LoadParameters (context .Background (), p .Porter , bun , storage. ParameterSet {} )
306
306
require .NoError (t , err )
307
307
308
308
assert .Len (t , opts .Params , 2 )
@@ -383,11 +383,11 @@ func TestBundleExecutionOptions_populateInternalParameterSet(t *testing.T) {
383
383
opts := NewBundleExecutionOptions ()
384
384
opts .Params = []string {nonsensitiveParamName + "=" + nonsensitiveParamValue , sensitiveParamName + "=" + sensitiveParamValue }
385
385
386
- err = opts .LoadParameters (ctx , p .Porter , bun )
387
- require .NoError (t , err )
388
-
389
386
i := storage .NewInstallation ("" , bun .Name )
390
387
388
+ err = opts .LoadParameters (ctx , p .Porter , bun , i .Parameters )
389
+ require .NoError (t , err )
390
+
391
391
err = opts .populateInternalParameterSet (ctx , p .Porter , bun , & i )
392
392
require .NoError (t , err )
393
393
@@ -408,10 +408,54 @@ func TestBundleExecutionOptions_populateInternalParameterSet(t *testing.T) {
408
408
// as well
409
409
opts .combinedParameters = nil
410
410
opts .Params = make ([]string , 0 )
411
- err = opts .LoadParameters (ctx , p .Porter , bun )
411
+ err = opts .LoadParameters (ctx , p .Porter , bun , i .Parameters )
412
+ require .NoError (t , err )
413
+ err = opts .populateInternalParameterSet (ctx , p .Porter , bun , & i )
414
+ require .NoError (t , err )
415
+
416
+ // Check that when no parameter overrides are specified, we use the originally specified parameters from the previous run
417
+ require .Len (t , i .Parameters .Parameters , 2 )
418
+ require .Equal (t , "my-first-param" , i .Parameters .Parameters [0 ].Name )
419
+ require .Equal (t , "1" , i .Parameters .Parameters [0 ].Source .Value )
420
+ require .Equal (t , "my-second-param" , i .Parameters .Parameters [1 ].Name )
421
+ require .Equal (t , "secret" , i .Parameters .Parameters [1 ].Source .Key )
422
+ }
423
+
424
+ func TestBundleExecutionOptions_populateInternalParameterSet_ExistingParams (t * testing.T ) {
425
+ p := NewTestPorter (t )
426
+ defer p .Close ()
427
+
428
+ ctx := context .Background ()
429
+
430
+ p .TestConfig .TestContext .AddTestFile ("testdata/porter.yaml" , config .Name )
431
+ m , err := manifest .LoadManifestFrom (context .Background (), p .Config , config .Name )
432
+ require .NoError (t , err )
433
+ bun , err := configadapter .ConvertToTestBundle (ctx , p .Config , m )
412
434
require .NoError (t , err )
435
+
436
+ nonsensitiveParamName := "my-first-param"
437
+ nonsensitiveParamValue := "3"
438
+ opts := NewBundleExecutionOptions ()
439
+ opts .Params = []string {nonsensitiveParamName + "=" + nonsensitiveParamValue }
440
+
441
+ i := storage .NewInstallation ("" , bun .Name )
442
+ i .Parameters = storage .NewParameterSet ("" , "internal-ps" ,
443
+ storage .ValueStrategy ("my-first-param" , "1" ),
444
+ storage .ValueStrategy ("my-second-param" , "2" ),
445
+ )
446
+ err = opts .LoadParameters (ctx , p .Porter , bun , i .Parameters )
447
+ require .NoError (t , err )
448
+
413
449
err = opts .populateInternalParameterSet (ctx , p .Porter , bun , & i )
414
450
require .NoError (t , err )
415
451
416
- require .Len (t , i .Parameters .Parameters , 0 )
452
+ require .Len (t , i .Parameters .Parameters , 2 )
453
+
454
+ // Check that overrides are applied on top of existing parameters
455
+ require .Len (t , i .Parameters .Parameters , 2 )
456
+ require .Equal (t , "my-first-param" , i .Parameters .Parameters [0 ].Name )
457
+ require .Equal (t , "3" , i .Parameters .Parameters [0 ].Source .Value )
458
+ require .Equal (t , "my-second-param" , i .Parameters .Parameters [1 ].Name )
459
+ require .Equal (t , "value" , i .Parameters .Parameters [1 ].Source .Key )
460
+ require .Equal (t , "2" , i .Parameters .Parameters [1 ].Source .Value )
417
461
}
0 commit comments