Skip to content

Commit 46a892c

Browse files
committed
add pack config with additionalProperties test
1 parent bffccc5 commit 46a892c

3 files changed

Lines changed: 91 additions & 1 deletion

File tree

st2common/tests/unit/test_config_loader.py

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def test_ensure_local_pack_config_feature_removed(self):
4343

4444
def test_get_config_some_values_overriden_in_datastore(self):
4545
# Test a scenario where some values are overriden in datastore via pack
46-
# flobal config
46+
# global config
4747
kvp_db = set_datastore_value_for_config_key(
4848
pack_name="dummy_pack_5",
4949
key_name="api_secret",
@@ -518,6 +518,66 @@ def test_get_config_dynamic_config_item_nested_list(self):
518518

519519
config_db.delete()
520520

521+
def test_get_config_dynamic_config_item_under_additional_properties(self):
522+
pack_name = "dummy_pack_schema_with_additional_properties_1"
523+
loader = ContentPackConfigLoader(pack_name=pack_name)
524+
525+
KeyValuePair.add_or_update(KeyValuePairDB(name="k0", value="v0"))
526+
KeyValuePair.add_or_update(KeyValuePairDB(name="k1_encrypted", value="v1_encrypted", secret=True))
527+
528+
####################
529+
# values in objects under an object with additionalProperties
530+
values = {
531+
"profiles": {
532+
"dev": {
533+
"host": "127.0.0.1",
534+
"token": "hard-coded-secret",
535+
},
536+
"stage": {
537+
"host": "127.0.0.2",
538+
"port": 8181,
539+
# unencrypted in datastore
540+
"token": "{{st2kv.system.k0}}",
541+
},
542+
"prod": {
543+
"host": "127.1.2.7",
544+
"port": 8282,
545+
# encrypted in datastore
546+
"token": "{{st2kv.system.k1_encrypted}}",
547+
},
548+
}
549+
}
550+
config_db = ConfigDB(pack=pack_name, values=values)
551+
config_db = Config.add_or_update(config_db)
552+
553+
config_rendered = loader.get_config()
554+
555+
self.assertEqual(
556+
config_rendered,
557+
{
558+
"regions": "us-east-1",
559+
"profiles": {
560+
"dev": {
561+
"host": "127.0.0.1",
562+
"port": 8080,
563+
"token": "hard-coded-secret",
564+
},
565+
"stage": {
566+
"host": "127.0.0.2",
567+
"port": 8181,
568+
"token": "v0",
569+
},
570+
"prod": {
571+
"host": "127.1.2.7",
572+
"port": 8282,
573+
"token": "v1_encrypted",
574+
},
575+
},
576+
},
577+
)
578+
579+
config_db.delete()
580+
521581
def test_empty_config_object_in_the_database(self):
522582
pack_name = "dummy_pack_empty_config"
523583

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
regions:
3+
type: "array"
4+
required: true
5+
default: "us-east-1"
6+
profiles:
7+
type: "object"
8+
required: false
9+
additionalProperties:
10+
type: object
11+
additionalProperties: false
12+
properties:
13+
host:
14+
type: "string"
15+
required: true
16+
default: "127.0.0.3"
17+
port:
18+
type: "integer"
19+
required: true
20+
default: 8080
21+
token:
22+
type: "string"
23+
required: true
24+
secret: true
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
name : dummy_pack_schema_with_additional_properties_1
3+
description : dummy pack with nested objects under additionalProperties
4+
version : 0.1.0
5+
author : st2-dev
6+
email : info@stackstorm.com

0 commit comments

Comments
 (0)