Skip to content

Commit 1cba642

Browse files
authored
Add unit test for FunctionEnvironmentReloadRequest (#4580)
1 parent c20a5aa commit 1cba642

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

src/WebJobs.Script/Rpc/LanguageWorkerChannel.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,19 +222,26 @@ public Task SendFunctionEnvironmentReloadRequest()
222222

223223
IDictionary processEnv = Environment.GetEnvironmentVariables();
224224

225-
FunctionEnvironmentReloadRequest request = new FunctionEnvironmentReloadRequest();
226-
foreach (DictionaryEntry entry in processEnv)
227-
{
228-
request.EnvironmentVariables.Add(entry.Key.ToString(), entry.Value.ToString());
229-
}
225+
FunctionEnvironmentReloadRequest request = GetFunctionEnvironmentReloadRequest(processEnv);
230226

231227
SendStreamingMessage(new StreamingMessage
232228
{
233229
FunctionEnvironmentReloadRequest = request
234230
});
231+
235232
return _reloadTask.Task;
236233
}
237234

235+
internal FunctionEnvironmentReloadRequest GetFunctionEnvironmentReloadRequest(IDictionary processEnv)
236+
{
237+
FunctionEnvironmentReloadRequest request = new FunctionEnvironmentReloadRequest();
238+
foreach (DictionaryEntry entry in processEnv)
239+
{
240+
request.EnvironmentVariables.Add(entry.Key.ToString(), entry.Value.ToString());
241+
}
242+
return request;
243+
}
244+
238245
internal void SendFunctionLoadRequest(FunctionMetadata metadata)
239246
{
240247
_workerChannelLogger.LogDebug("Sending FunctionLoadRequest for function:{functionName} with functionId:{id}", metadata.Name, metadata.FunctionId);
@@ -257,7 +264,7 @@ internal FunctionLoadRequest GetFunctionLoadRequest(FunctionMetadata metadata)
257264
Directory = metadata.FunctionDirectory ?? string.Empty,
258265
EntryPoint = metadata.EntryPoint ?? string.Empty,
259266
ScriptFile = metadata.ScriptFile ?? string.Empty,
260-
IsProxy = metadata.IsProxy,
267+
IsProxy = metadata.IsProxy
261268
}
262269
};
263270

test/WebJobs.Script.Tests/Rpc/LanguageWorkerChannelTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,31 @@ public void SendLoadRequests_PublishesOutboundEvents()
108108
Assert.True(functionLoadLogs.Count() == 2);
109109
}
110110

111+
[Fact]
112+
public void SendSendFunctionEnvironmentReloadRequest_PublishesOutboundEvents()
113+
{
114+
Environment.SetEnvironmentVariable("TestNull", null);
115+
Environment.SetEnvironmentVariable("TestEmpty", string.Empty);
116+
Environment.SetEnvironmentVariable("TestValid", "TestValue");
117+
_workerChannel.SendFunctionEnvironmentReloadRequest();
118+
var traces = _logger.GetLogMessages();
119+
var functionLoadLogs = traces.Where(m => string.Equals(m.FormattedMessage, "Sending FunctionEnvironmentReloadRequest"));
120+
Assert.True(functionLoadLogs.Count() == 1);
121+
}
122+
123+
[Fact]
124+
public void SendSendFunctionEnvironmentReloadRequest_SanitizedEnvironmentVariables()
125+
{
126+
Environment.SetEnvironmentVariable("TestNull", null);
127+
Environment.SetEnvironmentVariable("TestEmpty", string.Empty);
128+
Environment.SetEnvironmentVariable("TestValid", "TestValue");
129+
FunctionEnvironmentReloadRequest envReloadRequest = _workerChannel.GetFunctionEnvironmentReloadRequest(Environment.GetEnvironmentVariables());
130+
Assert.False(envReloadRequest.EnvironmentVariables.ContainsKey("TestNull"));
131+
Assert.False(envReloadRequest.EnvironmentVariables.ContainsKey("TestEmpty"));
132+
Assert.True(envReloadRequest.EnvironmentVariables.ContainsKey("TestValid"));
133+
Assert.True(envReloadRequest.EnvironmentVariables["TestValid"] == "TestValue");
134+
}
135+
111136
[Fact]
112137
public void ReceivesInboundEvent_InvocationResponse()
113138
{

0 commit comments

Comments
 (0)