From 3d749ce83752d02f7ee509041bc37fa7886286d3 Mon Sep 17 00:00:00 2001 From: satvu Date: Mon, 13 Jan 2025 11:45:50 -0800 Subject: [PATCH 01/12] initial test --- .../Host/HostFunctionMetadataProvider.cs | 14 +++++++------- src/WebJobs.Script/Utility.cs | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs b/src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs index f5b56e72e2..cc84fae030 100644 --- a/src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs +++ b/src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs @@ -116,13 +116,13 @@ private FunctionMetadata ReadFunctionMetadata(string functionDirectory, IFileSys } } - internal void ValidateName(string name, bool isProxy = false) - { - if (!Utility.IsValidFunctionName(name)) - { - throw new InvalidOperationException(string.Format("'{0}' is not a valid {1} name.", name, isProxy ? "proxy" : "function")); - } - } + //internal void ValidateName(string name, bool isProxy = false) + //{ + // if (!Utility.IsValidFunctionName(name)) + // { + // throw new InvalidOperationException(string.Format("'{0}' is not a valid {1} name.", name, isProxy ? "proxy" : "function")); + // } + //} - from meeting, Mathew says this can be removed (not used) internal static FunctionMetadata ParseFunctionMetadata(string functionName, JObject configMetadata, string scriptDirectory, IFileSystem fileSystem, IEnumerable workerConfigs, string functionsWorkerRuntime) diff --git a/src/WebJobs.Script/Utility.cs b/src/WebJobs.Script/Utility.cs index 5bdaa86319..1141d8516f 100644 --- a/src/WebJobs.Script/Utility.cs +++ b/src/WebJobs.Script/Utility.cs @@ -57,7 +57,7 @@ public static class Utility #endif private static readonly Regex FunctionNameValidationRegex = new Regex(@"^[a-z][a-z0-9_\-]{0,127}$(? Date: Thu, 16 Jan 2025 14:10:34 -0800 Subject: [PATCH 02/12] cleanup --- src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs b/src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs index cc84fae030..a1b972a03d 100644 --- a/src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs +++ b/src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs @@ -116,14 +116,6 @@ private FunctionMetadata ReadFunctionMetadata(string functionDirectory, IFileSys } } - //internal void ValidateName(string name, bool isProxy = false) - //{ - // if (!Utility.IsValidFunctionName(name)) - // { - // throw new InvalidOperationException(string.Format("'{0}' is not a valid {1} name.", name, isProxy ? "proxy" : "function")); - // } - //} - from meeting, Mathew says this can be removed (not used) - internal static FunctionMetadata ParseFunctionMetadata(string functionName, JObject configMetadata, string scriptDirectory, IFileSystem fileSystem, IEnumerable workerConfigs, string functionsWorkerRuntime) { From 6569658b38ed3364568cb00ad028bd69fcd6ace2 Mon Sep 17 00:00:00 2001 From: satvu Date: Fri, 17 Jan 2025 08:48:15 -0800 Subject: [PATCH 03/12] update to block double underscore, allow single underscore --- src/WebJobs.Script/Utility.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WebJobs.Script/Utility.cs b/src/WebJobs.Script/Utility.cs index 1141d8516f..505d0b1527 100644 --- a/src/WebJobs.Script/Utility.cs +++ b/src/WebJobs.Script/Utility.cs @@ -57,7 +57,7 @@ public static class Utility #endif private static readonly Regex FunctionNameValidationRegex = new Regex(@"^[a-z][a-z0-9_\-]{0,127}$(? Date: Mon, 27 Jan 2025 15:29:09 -0800 Subject: [PATCH 04/12] update tests, refactor --- .../Description/FunctionDescriptorProvider.cs | 18 +++---- .../FunctionDescriptorProviderTests.cs | 48 ------------------- test/WebJobs.Script.Tests/UtilityTests.cs | 5 +- .../WorkerFunctionMetadataProviderTests.cs | 5 +- 4 files changed, 15 insertions(+), 61 deletions(-) diff --git a/src/WebJobs.Script/Description/FunctionDescriptorProvider.cs b/src/WebJobs.Script/Description/FunctionDescriptorProvider.cs index a3905803ce..184bc3ab78 100644 --- a/src/WebJobs.Script/Description/FunctionDescriptorProvider.cs +++ b/src/WebJobs.Script/Description/FunctionDescriptorProvider.cs @@ -9,6 +9,7 @@ using System.Reflection; using System.Reflection.Emit; using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata; using Microsoft.Azure.WebJobs.Script.Binding; using Microsoft.Azure.WebJobs.Script.Extensibility; using Microsoft.Azure.WebJobs.Script.Extensions; @@ -184,7 +185,12 @@ protected internal virtual void ValidateFunction(FunctionMetadata functionMetada HashSet names = new HashSet(StringComparer.OrdinalIgnoreCase); foreach (var binding in functionMetadata.Bindings) { - ValidateBinding(binding); + Utility.ValidateBinding(binding); + + if (binding.Type == null) + { + throw new ArgumentException($"Binding '{binding.Name}' is invalid. Bindings must specify a Type."); + } // Ensure no duplicate binding names if (names.Contains(binding.Name)) @@ -212,16 +218,6 @@ protected internal virtual void ValidateFunction(FunctionMetadata functionMetada } } - protected internal virtual void ValidateBinding(BindingMetadata bindingMetadata) - { - Utility.ValidateBinding(bindingMetadata); - - if (bindingMetadata.Type == null) - { - throw new ArgumentException($"Binding '{bindingMetadata.Name}' is invalid. Bindings must specify a Type."); - } - } - protected static void ApplyMethodLevelAttributes(FunctionMetadata functionMetadata, BindingMetadata triggerMetadata, Collection methodAttributes) { if (Utility.IsHttporManualTrigger(triggerMetadata.Type)) diff --git a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs index aca077409a..3130b7cc6e 100644 --- a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs +++ b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs @@ -203,54 +203,6 @@ public async Task CreateTriggerParameter_WithNoBindingMatch_ThrowsExpectedExcept Assert.Contains("someInvalidTrigger", ex.Message); } - [Theory] - [InlineData(null)] - [InlineData("")] - [InlineData("_binding")] - [InlineData("binding-test")] - [InlineData("binding name")] - public void ValidateBinding_InvalidName_Throws(string bindingName) - { - BindingMetadata bindingMetadata = new BindingMetadata - { - Name = bindingName - }; - - var ex = Assert.Throws(() => - { - _provider.ValidateBinding(bindingMetadata); - }); - - Assert.Equal($"The binding name {bindingName} is invalid. Please assign a valid name to the binding.", ex.Message); - } - - [Theory] - [InlineData("bindingName")] - [InlineData("binding1")] - [InlineData(ScriptConstants.SystemReturnParameterBindingName)] - public void ValidateBinding_ValidName_DoesNotThrow(string bindingName) - { - BindingMetadata bindingMetadata = new BindingMetadata - { - Name = bindingName, - Type = "Blob" - }; - - if (bindingMetadata.IsReturn) - { - bindingMetadata.Direction = BindingDirection.Out; - } - - try - { - _provider.ValidateBinding(bindingMetadata); - } - catch (ArgumentException) - { - Assert.True(false, $"Valid binding name '{bindingName}' failed validation."); - } - } - protected virtual void Dispose(bool disposing) { if (disposing) diff --git a/test/WebJobs.Script.Tests/UtilityTests.cs b/test/WebJobs.Script.Tests/UtilityTests.cs index 46bc929fcc..9e28310af7 100644 --- a/test/WebJobs.Script.Tests/UtilityTests.cs +++ b/test/WebJobs.Script.Tests/UtilityTests.cs @@ -531,7 +531,7 @@ public void ValidateFunctionName_DoesNotThrowOnValidName(string functionName) [Theory] [InlineData(null)] [InlineData("")] - [InlineData("_binding")] + [InlineData("__binding__")] [InlineData("binding-test")] [InlineData("binding name")] public void ValidateBinding_InvalidName_Throws(string bindingName) @@ -550,6 +550,9 @@ public void ValidateBinding_InvalidName_Throws(string bindingName) } [Theory] + [InlineData("_binding")] + [InlineData("binding_name")] + [InlineData("_")] [InlineData("bindingName")] [InlineData("binding1")] [InlineData(ScriptConstants.SystemReturnParameterBindingName)] diff --git a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs index b370a24e77..14ea02ac8a 100644 --- a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs +++ b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs @@ -69,7 +69,7 @@ public void ValidateBindings_NoTriggerBinding_Throws() [Theory] [InlineData(null)] [InlineData("")] - [InlineData("_binding")] + [InlineData("__binding__")] [InlineData("binding-test")] [InlineData("binding name")] public void ValidateBindings_InvalidName_Throws(string bindingName) @@ -88,6 +88,9 @@ public void ValidateBindings_InvalidName_Throws(string bindingName) } [Theory] + [InlineData("binding_name")] + [InlineData("_")] + [InlineData("_binding")] [InlineData("bindingName")] [InlineData("binding1")] [InlineData(ScriptConstants.SystemReturnParameterBindingName)] From d4dff605b4b8bd47e729ab47e0ab9e31700bef8a Mon Sep 17 00:00:00 2001 From: satvu Date: Mon, 27 Jan 2025 15:37:41 -0800 Subject: [PATCH 05/12] cleanup, add release notes --- release_notes.md | 1 + .../Description/FunctionDescriptorProvider.cs | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/release_notes.md b/release_notes.md index 8224fe7ddc..ab59eb54e0 100644 --- a/release_notes.md +++ b/release_notes.md @@ -10,3 +10,4 @@ - [Added net9 prelaunch app.](https://github.com/Azure/azure-functions-dotnet-worker/pull/2898) - Update the `DefaultHttpProxyService` to better handle client disconnect scenarios (#10688) - Replaced `InvalidOperationException` with `HttpForwardingException` when there is a ForwarderError +- Allow for binding names to use snake case (#10764). Examples include `_`, `binding_name`, and `_binding`. \ No newline at end of file diff --git a/src/WebJobs.Script/Description/FunctionDescriptorProvider.cs b/src/WebJobs.Script/Description/FunctionDescriptorProvider.cs index 184bc3ab78..a3905803ce 100644 --- a/src/WebJobs.Script/Description/FunctionDescriptorProvider.cs +++ b/src/WebJobs.Script/Description/FunctionDescriptorProvider.cs @@ -9,7 +9,6 @@ using System.Reflection; using System.Reflection.Emit; using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata; using Microsoft.Azure.WebJobs.Script.Binding; using Microsoft.Azure.WebJobs.Script.Extensibility; using Microsoft.Azure.WebJobs.Script.Extensions; @@ -185,12 +184,7 @@ protected internal virtual void ValidateFunction(FunctionMetadata functionMetada HashSet names = new HashSet(StringComparer.OrdinalIgnoreCase); foreach (var binding in functionMetadata.Bindings) { - Utility.ValidateBinding(binding); - - if (binding.Type == null) - { - throw new ArgumentException($"Binding '{binding.Name}' is invalid. Bindings must specify a Type."); - } + ValidateBinding(binding); // Ensure no duplicate binding names if (names.Contains(binding.Name)) @@ -218,6 +212,16 @@ protected internal virtual void ValidateFunction(FunctionMetadata functionMetada } } + protected internal virtual void ValidateBinding(BindingMetadata bindingMetadata) + { + Utility.ValidateBinding(bindingMetadata); + + if (bindingMetadata.Type == null) + { + throw new ArgumentException($"Binding '{bindingMetadata.Name}' is invalid. Bindings must specify a Type."); + } + } + protected static void ApplyMethodLevelAttributes(FunctionMetadata functionMetadata, BindingMetadata triggerMetadata, Collection methodAttributes) { if (Utility.IsHttporManualTrigger(triggerMetadata.Type)) From 62c5878051d041471f6d29d9773eb808cecf46b2 Mon Sep 17 00:00:00 2001 From: satvu Date: Tue, 28 Jan 2025 11:28:32 -0800 Subject: [PATCH 06/12] additional test cases --- .../FunctionDescriptorProviderTests.cs | 48 +++++++++++++++++++ .../WorkerFunctionMetadataProviderTests.cs | 4 +- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs index 3130b7cc6e..aca077409a 100644 --- a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs +++ b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs @@ -203,6 +203,54 @@ public async Task CreateTriggerParameter_WithNoBindingMatch_ThrowsExpectedExcept Assert.Contains("someInvalidTrigger", ex.Message); } + [Theory] + [InlineData(null)] + [InlineData("")] + [InlineData("_binding")] + [InlineData("binding-test")] + [InlineData("binding name")] + public void ValidateBinding_InvalidName_Throws(string bindingName) + { + BindingMetadata bindingMetadata = new BindingMetadata + { + Name = bindingName + }; + + var ex = Assert.Throws(() => + { + _provider.ValidateBinding(bindingMetadata); + }); + + Assert.Equal($"The binding name {bindingName} is invalid. Please assign a valid name to the binding.", ex.Message); + } + + [Theory] + [InlineData("bindingName")] + [InlineData("binding1")] + [InlineData(ScriptConstants.SystemReturnParameterBindingName)] + public void ValidateBinding_ValidName_DoesNotThrow(string bindingName) + { + BindingMetadata bindingMetadata = new BindingMetadata + { + Name = bindingName, + Type = "Blob" + }; + + if (bindingMetadata.IsReturn) + { + bindingMetadata.Direction = BindingDirection.Out; + } + + try + { + _provider.ValidateBinding(bindingMetadata); + } + catch (ArgumentException) + { + Assert.True(false, $"Valid binding name '{bindingName}' failed validation."); + } + } + protected virtual void Dispose(bool disposing) { if (disposing) diff --git a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs index f481b1a4f4..4b593f8fa3 100644 --- a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs +++ b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs @@ -85,6 +85,8 @@ public void ValidateBindings_NoTriggerBinding_Throws() [Theory] [InlineData(null)] [InlineData("")] + [InlineData("__")] + [InlineData("bind__ing")] [InlineData("__binding__")] [InlineData("binding-test")] [InlineData("binding name")] @@ -106,7 +108,7 @@ public void ValidateBindings_InvalidName_Throws(string bindingName) [Theory] [InlineData("binding_name")] [InlineData("_")] - [InlineData("_binding")] + [InlineData("_binding_)")] [InlineData("bindingName")] [InlineData("binding1")] [InlineData(ScriptConstants.SystemReturnParameterBindingName)] From 9173bb35466d3bed227436d1e2e02aa2e61954c8 Mon Sep 17 00:00:00 2001 From: satvu Date: Tue, 28 Jan 2025 13:15:02 -0800 Subject: [PATCH 07/12] update test --- src/WebJobs.Script/Utility.cs | 1 - .../Description/FunctionDescriptorProviderTests.cs | 13 ++++++++++++- test/WebJobs.Script.Tests/UtilityTests.cs | 7 +++++++ .../WorkerFunctionMetadataProviderTests.cs | 7 ++++++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/WebJobs.Script/Utility.cs b/src/WebJobs.Script/Utility.cs index 505d0b1527..2c6c78e885 100644 --- a/src/WebJobs.Script/Utility.cs +++ b/src/WebJobs.Script/Utility.cs @@ -9,7 +9,6 @@ using System.IO; using System.IO.Abstractions; using System.Linq; -using System.Net; using System.Net.Http.Headers; using System.Reflection; using System.Text; diff --git a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs index aca077409a..6e65e8fb65 100644 --- a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs +++ b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs @@ -8,6 +8,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Microsoft.Azure.WebJobs.Host.Bindings; using Microsoft.Azure.WebJobs.Script.Binding; using Microsoft.Azure.WebJobs.Script.Description; using Microsoft.Azure.WebJobs.Script.Extensibility; @@ -206,7 +207,11 @@ public async Task CreateTriggerParameter_WithNoBindingMatch_ThrowsExpectedExcept [Theory] [InlineData(null)] [InlineData("")] - [InlineData("_binding")] + [InlineData("__")] + [InlineData("__binding")] + [InlineData("binding__")] + [InlineData("bind__ing")] + [InlineData("__binding__")] [InlineData("binding-test")] [InlineData("binding name")] public void ValidateBinding_InvalidName_Throws(string bindingName) @@ -225,6 +230,12 @@ public void ValidateBinding_InvalidName_Throws(string bindingName) } [Theory] + [InlineData("_binding")] + [InlineData("binding_")] + [InlineData("_binding_")] + [InlineData("long_binding_name_that_is_valid")] + [InlineData("binding_name")] + [InlineData("_")] [InlineData("bindingName")] [InlineData("binding1")] [InlineData(ScriptConstants.SystemReturnParameterBindingName)] diff --git a/test/WebJobs.Script.Tests/UtilityTests.cs b/test/WebJobs.Script.Tests/UtilityTests.cs index 9e28310af7..db826f5dd5 100644 --- a/test/WebJobs.Script.Tests/UtilityTests.cs +++ b/test/WebJobs.Script.Tests/UtilityTests.cs @@ -531,6 +531,10 @@ public void ValidateFunctionName_DoesNotThrowOnValidName(string functionName) [Theory] [InlineData(null)] [InlineData("")] + [InlineData("__")] + [InlineData("__binding")] + [InlineData("binding__")] + [InlineData("bind__ing")] [InlineData("__binding__")] [InlineData("binding-test")] [InlineData("binding name")] @@ -551,6 +555,9 @@ public void ValidateBinding_InvalidName_Throws(string bindingName) [Theory] [InlineData("_binding")] + [InlineData("binding_")] + [InlineData("_binding_")] + [InlineData("long_binding_name_that_is_valid")] [InlineData("binding_name")] [InlineData("_")] [InlineData("bindingName")] diff --git a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs index 4b593f8fa3..f2e822532b 100644 --- a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs +++ b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs @@ -86,6 +86,8 @@ public void ValidateBindings_NoTriggerBinding_Throws() [InlineData(null)] [InlineData("")] [InlineData("__")] + [InlineData("__binding")] + [InlineData("binding__")] [InlineData("bind__ing")] [InlineData("__binding__")] [InlineData("binding-test")] @@ -106,9 +108,12 @@ public void ValidateBindings_InvalidName_Throws(string bindingName) } [Theory] + [InlineData("_binding")] + [InlineData("binding_")] + [InlineData("_binding_")] + [InlineData("long_binding_name_that_is_valid")] [InlineData("binding_name")] [InlineData("_")] - [InlineData("_binding_)")] [InlineData("bindingName")] [InlineData("binding1")] [InlineData(ScriptConstants.SystemReturnParameterBindingName)] From 65a5abe4354d216fe73794734c7bbb2adf40601e Mon Sep 17 00:00:00 2001 From: satvu Date: Tue, 28 Jan 2025 13:46:15 -0800 Subject: [PATCH 08/12] one more test case --- .../Description/FunctionDescriptorProviderTests.cs | 1 + test/WebJobs.Script.Tests/UtilityTests.cs | 1 + test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs | 1 + 3 files changed, 3 insertions(+) diff --git a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs index 6e65e8fb65..ddc24cd780 100644 --- a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs +++ b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs @@ -233,6 +233,7 @@ public void ValidateBinding_InvalidName_Throws(string bindingName) [InlineData("_binding")] [InlineData("binding_")] [InlineData("_binding_")] + [InlineData("_another_binding_test_")] [InlineData("long_binding_name_that_is_valid")] [InlineData("binding_name")] [InlineData("_")] diff --git a/test/WebJobs.Script.Tests/UtilityTests.cs b/test/WebJobs.Script.Tests/UtilityTests.cs index db826f5dd5..bd1212016f 100644 --- a/test/WebJobs.Script.Tests/UtilityTests.cs +++ b/test/WebJobs.Script.Tests/UtilityTests.cs @@ -557,6 +557,7 @@ public void ValidateBinding_InvalidName_Throws(string bindingName) [InlineData("_binding")] [InlineData("binding_")] [InlineData("_binding_")] + [InlineData("_another_binding_test_")] [InlineData("long_binding_name_that_is_valid")] [InlineData("binding_name")] [InlineData("_")] diff --git a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs index f2e822532b..edfce8fa0a 100644 --- a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs +++ b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs @@ -111,6 +111,7 @@ public void ValidateBindings_InvalidName_Throws(string bindingName) [InlineData("_binding")] [InlineData("binding_")] [InlineData("_binding_")] + [InlineData("_another_binding_test_")] [InlineData("long_binding_name_that_is_valid")] [InlineData("binding_name")] [InlineData("_")] From 2b43bd47c026a4edace652e81dd1a5e25ce4951c Mon Sep 17 00:00:00 2001 From: satvu Date: Tue, 28 Jan 2025 13:55:03 -0800 Subject: [PATCH 09/12] cleanup imports --- .../Description/FunctionDescriptorProviderTests.cs | 3 --- test/WebJobs.Script.Tests/UtilityTests.cs | 2 -- 2 files changed, 5 deletions(-) diff --git a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs index ddc24cd780..1e177defce 100644 --- a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs +++ b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs @@ -4,16 +4,13 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Diagnostics.Metrics; using System.IO; using System.Linq; using System.Threading.Tasks; -using Microsoft.Azure.WebJobs.Host.Bindings; using Microsoft.Azure.WebJobs.Script.Binding; using Microsoft.Azure.WebJobs.Script.Description; using Microsoft.Azure.WebJobs.Script.Extensibility; using Microsoft.Azure.WebJobs.Script.Metrics; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; diff --git a/test/WebJobs.Script.Tests/UtilityTests.cs b/test/WebJobs.Script.Tests/UtilityTests.cs index bd1212016f..589bc12195 100644 --- a/test/WebJobs.Script.Tests/UtilityTests.cs +++ b/test/WebJobs.Script.Tests/UtilityTests.cs @@ -14,7 +14,6 @@ using Microsoft.Azure.WebJobs.Script.Config; using Microsoft.Azure.WebJobs.Script.Description; using Microsoft.Azure.WebJobs.Script.Diagnostics; -using Microsoft.Azure.WebJobs.Script.ExtensionBundle; using Microsoft.Azure.WebJobs.Script.Models; using Microsoft.Azure.WebJobs.Script.Workers.Rpc; using Microsoft.Extensions.Logging; @@ -22,7 +21,6 @@ using Microsoft.WebJobs.Script.Tests; using Moq; using Newtonsoft.Json.Linq; -using NuGet.Versioning; using Xunit; namespace Microsoft.Azure.WebJobs.Script.Tests From 4a6ab08ac790e8e825b6b2f9e3efb54de686ce59 Mon Sep 17 00:00:00 2001 From: satvu Date: Thu, 30 Jan 2025 14:52:08 -0800 Subject: [PATCH 10/12] add fwlink --- src/WebJobs.Script/Utility.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WebJobs.Script/Utility.cs b/src/WebJobs.Script/Utility.cs index 2c6c78e885..9a2139b98c 100644 --- a/src/WebJobs.Script/Utility.cs +++ b/src/WebJobs.Script/Utility.cs @@ -590,7 +590,7 @@ public static void ValidateBinding(BindingMetadata bindingMetadata) { if (bindingMetadata.Name == null || !BindingNameValidationRegex.IsMatch(bindingMetadata.Name)) { - throw new ArgumentException($"The binding name {bindingMetadata.Name} is invalid. Please assign a valid name to the binding."); + throw new ArgumentException($"The binding name {bindingMetadata.Name} is invalid. Please assign a valid name to the binding. See https://aka.ms/azure-functions-binding-name-rules for more details."); } if (bindingMetadata.IsReturn && bindingMetadata.Direction != BindingDirection.Out) From ff512abff9525d05f6fbda1e8606e9cbfa9d97ad Mon Sep 17 00:00:00 2001 From: satvu Date: Thu, 30 Jan 2025 15:18:26 -0800 Subject: [PATCH 11/12] update test error messages --- .../Description/FunctionDescriptorProviderTests.cs | 2 +- test/WebJobs.Script.Tests/UtilityTests.cs | 2 +- .../WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs index 1e177defce..7f5cc58fd5 100644 --- a/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs +++ b/test/WebJobs.Script.Tests/Description/FunctionDescriptorProviderTests.cs @@ -223,7 +223,7 @@ public void ValidateBinding_InvalidName_Throws(string bindingName) _provider.ValidateBinding(bindingMetadata); }); - Assert.Equal($"The binding name {bindingName} is invalid. Please assign a valid name to the binding.", ex.Message); + Assert.Equal($"The binding name {bindingName} is invalid. Please assign a valid name to the binding. See https://aka.ms/azure-functions-binding-name-rules for more details.", ex.Message); } [Theory] diff --git a/test/WebJobs.Script.Tests/UtilityTests.cs b/test/WebJobs.Script.Tests/UtilityTests.cs index 589bc12195..e8729ee8eb 100644 --- a/test/WebJobs.Script.Tests/UtilityTests.cs +++ b/test/WebJobs.Script.Tests/UtilityTests.cs @@ -548,7 +548,7 @@ public void ValidateBinding_InvalidName_Throws(string bindingName) Utility.ValidateBinding(bindingMetadata); }); - Assert.Equal($"The binding name {bindingName} is invalid. Please assign a valid name to the binding.", ex.Message); + Assert.Equal($"The binding name {bindingName} is invalid. Please assign a valid name to the binding. See https://aka.ms/azure-functions-binding-name-rules for more details.", ex.Message); } [Theory] diff --git a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs index edfce8fa0a..2e557a115f 100644 --- a/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs +++ b/test/WebJobs.Script.Tests/WorkerFunctionMetadataProviderTests.cs @@ -104,7 +104,7 @@ public void ValidateBindings_InvalidName_Throws(string bindingName) _workerFunctionMetadataProvider.ValidateBindings(rawBindings, functionMetadata); }); - Assert.Equal($"The binding name {bindingName} is invalid. Please assign a valid name to the binding.", ex.Message); + Assert.Equal($"The binding name {bindingName} is invalid. Please assign a valid name to the binding. See https://aka.ms/azure-functions-binding-name-rules for more details.", ex.Message); } [Theory] From 48d9d8950a0d05a1c4583cc2337e1f69754e8225 Mon Sep 17 00:00:00 2001 From: satvu Date: Wed, 5 Feb 2025 12:57:25 -0800 Subject: [PATCH 12/12] remove double underscore lookahead --- src/WebJobs.Script/Utility.cs | 2 +- .../Description/FunctionDescriptorProviderTests.cs | 10 +++++----- test/WebJobs.Script.Tests/UtilityTests.cs | 10 +++++----- .../WorkerFunctionMetadataProviderTests.cs | 10 +++++----- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/WebJobs.Script/Utility.cs b/src/WebJobs.Script/Utility.cs index 9a2139b98c..ff1ce8cf10 100644 --- a/src/WebJobs.Script/Utility.cs +++ b/src/WebJobs.Script/Utility.cs @@ -56,7 +56,7 @@ public static class Utility #endif private static readonly Regex FunctionNameValidationRegex = new Regex(@"^[a-z][a-z0-9_\-]{0,127}$(?