44using System ;
55using System . Collections . Generic ;
66using System . Linq ;
7+ using Microsoft . Azure . WebJobs . Script . Config ;
78using Microsoft . Azure . WebJobs . Script . WebHost ;
89using Newtonsoft . Json . Linq ;
910using Xunit ;
@@ -40,16 +41,23 @@ public void SerializeFunctionSecrets_ReturnsExpectedResult()
4041
4142 var jsonObject = JObject . Parse ( serializedSecret ) ;
4243 var serializedSecrets = jsonObject . Property ( "keys" ) ? . Value ? . ToObject < List < Key > > ( ) ;
44+ var source = jsonObject . Property ( "source" ) ? . Value ;
45+ var hostName = jsonObject . Property ( "hostName" ) ? . Value ;
46+ var instanceId = jsonObject . Property ( "instanceId" ) ? . Value ;
4347
4448 Assert . NotNull ( serializedSecret ) ;
4549 AssertKeyCollectionsEquality ( secrets . Keys , serializedSecrets ) ;
50+ Assert . Equal ( source , secrets . Source ) ;
51+ Assert . Equal ( hostName , secrets . HostName ) ;
52+ Assert . Equal ( instanceId , secrets . InstanceId ) ;
4653 }
4754
48- [ Fact ]
49- public void DeserializeFunctionSecrets_ReturnsExpectedResult ( )
55+ [ Theory ]
56+ [ InlineData ( "{ 'keys': [ { 'name': 'Key1', 'value': 'Value1', 'encrypted': false }, { 'name': 'Key2', 'value': 'Value2', 'encrypted': true } ] }" , null ) ]
57+ [ InlineData ( "{ 'keys': [ { 'name': 'Key1', 'value': 'Value1', 'encrypted': false }, { 'name': 'Key2', 'value': 'Value2', 'encrypted': true } ], 'hostName': 'test', 'source': 'runtime'}" , "test" ) ]
58+ public void DeserializeFunctionSecrets_ReturnsExpectedResult ( string serializedSecret , string hostName )
5059 {
5160 var serializer = new ScriptSecretSerializerV1 ( ) ;
52- var serializedSecret = "{ 'keys': [ { 'name': 'Key1', 'value': 'Value1', 'encrypted': false }, { 'name': 'Key2', 'value': 'Value2', 'encrypted': true } ] }" ;
5361 var expected = new List < Key >
5462 {
5563 new Key
@@ -67,14 +75,16 @@ public void DeserializeFunctionSecrets_ReturnsExpectedResult()
6775 } ;
6876
6977 FunctionSecrets actual = serializer . DeserializeSecrets < FunctionSecrets > ( JObject . Parse ( serializedSecret ) ) ;
78+ Assert . Equal ( hostName , actual . HostName ) ;
7079 AssertKeyCollectionsEquality ( expected , actual . Keys ) ;
7180 }
7281
73- [ Fact ]
74- public void DeserializeHostSecrets_ReturnsExpectedResult ( )
82+ [ Theory ]
83+ [ InlineData ( "{'masterKey':{'name':'master','value':'1234','encrypted':false},'functionKeys':[{'name':'Key1','value':'Value1','encrypted':false},{'name':'Key2','value':'Value2','encrypted':true}]}" , null ) ]
84+ [ InlineData ( "{'masterKey':{'name':'master','value':'1234','encrypted':false},'functionKeys':[{'name':'Key1','value':'Value1','encrypted':false},{'name':'Key2','value':'Value2','encrypted':true}], 'hostName': 'test', 'source': 'runtime' }" , "test" ) ]
85+ public void DeserializeHostSecrets_ReturnsExpectedResult ( string serializedSecret , string hostName )
7586 {
7687 var serializer = new ScriptSecretSerializerV1 ( ) ;
77- var serializedSecret = "{'masterKey':{'name':'master','value':'1234','encrypted':false},'functionKeys':[{'name':'Key1','value':'Value1','encrypted':false},{'name':'Key2','value':'Value2','encrypted':true}]}" ;
7888 var expected = new HostSecrets
7989 {
8090 MasterKey = new Key { Name = "master" , Value = "1234" } ,
@@ -92,13 +102,16 @@ public void DeserializeHostSecrets_ReturnsExpectedResult()
92102 Value = "Value2" ,
93103 IsEncrypted = true
94104 }
95- }
105+ } ,
106+ HostName = hostName
96107 } ;
97108
98109 HostSecrets actual = serializer . DeserializeSecrets < HostSecrets > ( JObject . Parse ( serializedSecret ) ) ;
99110
100111 Assert . NotNull ( actual ) ;
101112 Assert . Equal ( expected . MasterKey , actual . MasterKey ) ;
113+ Assert . Equal ( actual . HostName , hostName ) ;
114+ Assert . Equal ( expected . Source , ScriptConstants . Runtime ) ;
102115 AssertKeyCollectionsEquality ( expected . FunctionKeys , actual . FunctionKeys ) ;
103116 }
104117
@@ -132,17 +145,20 @@ public void SerializeHostSecrets_ReturnsExpectedResult()
132145 var jsonObject = JObject . Parse ( serializedSecret ) ;
133146 var functionSecrets = jsonObject . Property ( "functionKeys" ) ? . Value ? . ToObject < List < Key > > ( ) ;
134147 var masterKey = jsonObject . Property ( "masterKey" ) ? . Value ? . ToObject < Key > ( ) ;
148+ var instanceId = jsonObject . Property ( "instanceId" ) ? . Value ;
135149
136150 Assert . NotNull ( serializedSecret ) ;
137151 Assert . Equal ( secrets . MasterKey , masterKey ) ;
138152 AssertKeyCollectionsEquality ( secrets . FunctionKeys , functionSecrets ) ;
153+ Assert . Equal ( instanceId , secrets . InstanceId ) ;
139154 }
140155
141156 [ Theory ]
142157 [ InlineData ( typeof ( HostSecrets ) , false , "{'masterKey': 'masterKeySecretString','functionKey': 'functionKeySecretString'}" ) ]
143158 [ InlineData ( typeof ( FunctionSecrets ) , false , "{'key':'functionKeySecretString'}" ) ]
144159 [ InlineData ( typeof ( HostSecrets ) , true , "{'masterKey': {'name': 'master','value': '1234','encrypted': false},'functionKeys': [{'name': 'Key1','value': 'Value1','encrypted': false},{'name': 'Key2','value': 'Value2','encrypted': true}]}" ) ]
145160 [ InlineData ( typeof ( FunctionSecrets ) , true , "{'keys': [{'name': 'Key1','value': 'Value1','encrypted': false},{'name': 'Key2','value': 'Value2','encrypted': true}]}" ) ]
161+ [ InlineData ( typeof ( HostSecrets ) , false , "{'masterKey': 'masterKeySecretString','functionKey': 'functionKeySecretString', 'hostName': 'test1', 'instanceId': 'test2', 'source': 'test3'}" ) ]
146162 public void CanSerialize_WithValidHostPayload_ReturnsTrue ( Type type , bool expectedResult , string input )
147163 {
148164 var serializer = new ScriptSecretSerializerV1 ( ) ;
0 commit comments