From d383458b18f7447676af253e9a4f3c15d59b162a Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Sat, 20 Jan 2018 11:04:16 -0600 Subject: [PATCH 01/11] [Feature] Add Simplified multipart/form-data Support to Web Cmdlets --- .../Common/WebRequestPSCmdlet.Common.cs | 138 ++++++++++++++- .../resources/WebCmdletStrings.resx | 6 + src/TypeCatalogGen/powershell_win7-x64.inc | 165 ++++++++++++++++++ 3 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 src/TypeCatalogGen/powershell_win7-x64.inc diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs index 2b2dc46a6c3..cf7db9220e8 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs @@ -306,6 +306,14 @@ public virtual string CustomMethod [Parameter(ValueFromPipeline = true)] public virtual object Body { get; set; } + /// + /// Dictionary for use with RFC-7578 multipart\form-data submissions. + /// Keys are form fields and their respective values are form values. + /// A value may be a collection of form values or single form value. + /// + [Parameter] + public virtual IDictionary Form {get; set;} + /// /// gets or sets the ContentType property /// @@ -430,6 +438,18 @@ internal virtual void ValidateParameters() "WebCmdletBodyConflictException"); ThrowTerminatingError(error); } + if ((null != Body) && (null != Form)) + { + ErrorRecord error = GetValidationError(WebCmdletStrings.BodyFormConflict, + "WebCmdletBodyFormConflictException"); + ThrowTerminatingError(error); + } + if ((null != InFile) && (null != Form)) + { + ErrorRecord error = GetValidationError(WebCmdletStrings.FormInFileConflict, + "WebCmdletFormInFileConflictException"); + ThrowTerminatingError(error); + } // validate InFile path if (InFile != null) @@ -1075,8 +1095,21 @@ internal virtual void FillRequestStream(HttpRequestMessage request) } } + if (Form != null) + { + // Content headers will be set by MultipartFormDataContent which will throw unless we clear them first + WebSession.ContentHeaders.Clear(); + + var formData = new MultipartFormDataContent(); + foreach (DictionaryEntry formEntry in Form) + { + // AddMultipartContent will handle PSObject unwrapping, Object type determination and enumerateing top level IEnumerables. + AddMultipartContent(fieldName: formEntry.Key, fieldValue: formEntry.Value, formData: formData, enumerate: true); + } + SetRequestContent(request, formData); + } // coerce body into a usable form - if (Body != null) + else if (Body != null) { object content = Body; @@ -1396,6 +1429,109 @@ protected override void StopProcessing() #region Helper Methods + + /// + /// Adds content to a . Object type detection is used to determine if the value is String, File, or Collection. + /// + /// The Field Name to use. + /// The Field Value to use. + /// The > to update. + /// If true, collection types in will be enumerated. If false, collections will be treated as single value. + internal void AddMultipartContent (object fieldName, object fieldValue, MultipartFormDataContent formData, bool enumerate) + { + if (null == formData) + { + formData = new MultipartFormDataContent(); + } + + // It is possible that the dictionary keys or values are PSObject wrapped depending on how the dictionary is defined and assigned. + // Before processing the field name and value we need to ensure we are working with the base objects and not the PSObject wrappers. + + // Unwrap fieldName PSObjects + if (fieldName is PSObject namePSObject) + { + fieldName = namePSObject.BaseObject; + } + + // Unwrap fieldValue PSObjects + if (fieldValue is PSObject valuePSObject) + { + fieldValue = valuePSObject.BaseObject; + } + + // Treat a single FileInfo as a FileContent + if (fieldValue is FileInfo file) + { + formData.Add(GetMultipartFileContent(fieldName: fieldName, file: file)); + return; + } + + // Treat Strings and other single values as a StringContent. + // If enumeration is false, also treat IEnumerables as StringContents. + // String implements IEnumerable so the explicit check is required. + if (enumerate == false || fieldValue is String || !(fieldValue is IEnumerable)) + { + formData.Add(GetMultipartStringContent(fieldName: fieldName, fieldValue: fieldValue)); + return; + } + + // Treat the value as a collection and enumerate it if enumeration is true + if(enumerate == true && fieldValue is IEnumerable items) + { + foreach (var item in items) + { + // Recruse, but do not enumerate the next level. IEnumerables will be treated as single values. + AddMultipartContent(fieldName: fieldName, fieldValue: item, formData: formData, enumerate: false); + } + } + } + + /// + /// Gets a from the supplied field name and field value. Uses to convert the objects to strings. + /// + /// The Field Name to use for the . + /// The Field Value to use for the . + internal StringContent GetMultipartStringContent (Object fieldName, Object fieldValue) + { + var contentDisposition = new ContentDispositionHeaderValue("form-data"); + contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); + + var result = new StringContent(LanguagePrimitives.ConvertTo(fieldValue)); + result.Headers.ContentDisposition = contentDisposition; + + return result; + } + + /// + /// Gets a from the supplied field name and . Uses to convert the fieldname to a string. + /// + /// The Field Name to use for the . + /// The to use for the . + internal StreamContent GetMultipartStreamContent (Object fieldName, Stream stream) + { + var contentDisposition = new ContentDispositionHeaderValue("form-data"); + contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); + + var result = new StreamContent(stream); + result.Headers.ContentDisposition = contentDisposition; + result.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + + return result; + } + + /// + /// Gets a from the supplied field name and file. Calls to create the and then sets the file name. + /// + /// The Field Name to use for the . + /// The file to use for the . + internal StreamContent GetMultipartFileContent (Object fieldName, FileInfo file) + { + var result = GetMultipartStreamContent(fieldName: fieldName, stream: new FileStream(file.FullName, FileMode.Open)); + result.Headers.ContentDisposition.FileName = file.Name; + + return result; + } + /// /// Sets the ContentLength property of the request and writes the specified content to the request's RequestStream. /// diff --git a/src/Microsoft.PowerShell.Commands.Utility/resources/WebCmdletStrings.resx b/src/Microsoft.PowerShell.Commands.Utility/resources/WebCmdletStrings.resx index a1304e38da4..0c50ddd38ca 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/resources/WebCmdletStrings.resx +++ b/src/Microsoft.PowerShell.Commands.Utility/resources/WebCmdletStrings.resx @@ -138,6 +138,12 @@ The cmdlet cannot run because the following conflicting parameters are specified: Body and InFile. Specify either Body or Infile, then retry. + + The cmdlet cannot run because the following conflicting parameters are specified: Body and Form. Specify either Body or Form, then retry. + + + The cmdlet cannot run because the following conflicting parameters are specified: InFile and Form. Specify either InFile or Form, then retry. + The cmdlet cannot run because the following conflicting parameters are specified: Credential and UseDefaultCredentials. Specify either Credential or UseDefaultCredentials, then retry. diff --git a/src/TypeCatalogGen/powershell_win7-x64.inc b/src/TypeCatalogGen/powershell_win7-x64.inc new file mode 100644 index 00000000000..4e7a8e18534 --- /dev/null +++ b/src/TypeCatalogGen/powershell_win7-x64.inc @@ -0,0 +1,165 @@ +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.applicationinsights\2.4.0\lib\netstandard1.3\Microsoft.ApplicationInsights.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.csharp\2.3.1\lib\netstandard1.3\Microsoft.CodeAnalysis.CSharp.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.common\2.3.1\lib\netstandard1.3\Microsoft.CodeAnalysis.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.CSharp.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.VisualBasic.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.Win32.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.win32.registry.accesscontrol\4.4.0\ref\netstandard2.0\Microsoft.Win32.Registry.AccessControl.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.win32.registry\4.4.0\ref\netstandard2.0\Microsoft.Win32.Registry.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\mscorlib.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\netstandard.dll; +C:\Users\MarkLocal\.nuget\packages\newtonsoft.json\10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.AppContext.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Buffers.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Concurrent.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Immutable.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.NonGeneric.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Specialized.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Annotations.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Composition.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.DataAnnotations.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.EventBasedAsync.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.TypeConverter.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Configuration.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Console.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Core.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Data.Common.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Data.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.data.sqlclient\4.4.0\ref\netstandard2.0\System.Data.SqlClient.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Contracts.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Debug.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.DiagnosticSource.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.FileVersionInfo.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Process.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.StackTrace.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.TextWriterTraceListener.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Tools.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.TraceSource.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Tracing.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Drawing.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Drawing.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Dynamic.Runtime.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.Calendars.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.Extensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.FileSystem.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.ZipFile.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.dll; +C:\Users\MarkLocal\.nuget\packages\system.io.filesystem.accesscontrol\4.4.0\ref\netstandard2.0\System.IO.FileSystem.AccessControl.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.DriveInfo.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.Watcher.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.IsolatedStorage.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.MemoryMappedFiles.dll; +C:\Users\MarkLocal\.nuget\packages\system.io.packaging\4.4.0\ref\netstandard1.3\System.IO.Packaging.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Pipes.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.UnmanagedMemoryStream.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Expressions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Parallel.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Queryable.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Http.dll; +C:\Users\MarkLocal\.nuget\packages\system.net.http.winhttphandler\4.4.0\ref\netstandard2.0\System.Net.Http.WinHttpHandler.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.HttpListener.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Mail.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.NameResolution.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.NetworkInformation.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Ping.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Requests.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Security.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.ServicePoint.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Sockets.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebClient.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebHeaderCollection.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebProxy.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebSockets.Client.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebSockets.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Numerics.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Numerics.Vectors.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ObjectModel.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.DispatchProxy.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.ILGeneration.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.Lightweight.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Extensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Metadata.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.TypeExtensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.Reader.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.ResourceManager.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.Writer.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.CompilerServices.VisualC.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Extensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Handles.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.RuntimeInformation.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.WindowsRuntime.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Loader.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Numerics.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Formatters.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Json.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Xml.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.security.accesscontrol\4.4.0\ref\netstandard2.0\System.Security.AccessControl.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Claims.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Algorithms.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Csp.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Encoding.dll; +C:\Users\MarkLocal\.nuget\packages\system.security.cryptography.pkcs\4.4.0\ref\netstandard2.0\System.Security.Cryptography.Pkcs.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.X509Certificates.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.dll; +C:\Users\MarkLocal\.nuget\packages\system.security.permissions\4.4.0\ref\netstandard2.0\System.Security.Permissions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Principal.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.security.principal.windows\4.4.0\ref\netstandard2.0\System.Security.Principal.Windows.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.SecureString.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.duplex\4.4.0\ref\netstandard2.0\System.ServiceModel.Duplex.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.http\4.4.0\ref\netstandard2.0\System.ServiceModel.Http.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.nettcp\4.4.0\ref\netstandard2.0\System.ServiceModel.NetTcp.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.primitives\4.4.0\ref\netstandard2.0\System.ServiceModel.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.security\4.4.0\ref\netstandard2.0\System.ServiceModel.Security.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ServiceModel.Web.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ServiceProcess.dll; +C:\Users\MarkLocal\.nuget\packages\system.serviceprocess.servicecontroller\4.4.0\ref\netstandard2.0\System.ServiceProcess.ServiceController.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.text.encoding.codepages\4.4.0\ref\netstandard2.0\System.Text.Encoding.CodePages.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.Encoding.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.Encoding.Extensions.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.text.encodings.web\4.4.0\lib\netstandard2.0\System.Text.Encodings.Web.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.RegularExpressions.dll; +C:\Users\MarkLocal\.nuget\packages\system.threading.accesscontrol\4.4.0\ref\netstandard2.0\System.Threading.AccessControl.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Overlapped.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Dataflow.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Extensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Parallel.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Thread.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.ThreadPool.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Timer.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Transactions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Transactions.Local.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ValueTuple.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Web.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Web.HttpUtility.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Windows.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.Linq.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.ReaderWriter.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.Serialization.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XDocument.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XmlDocument.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XmlSerializer.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XPath.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XPath.XDocument.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\WindowsBase.dll; From 2abd8959056ca618d3a333a40a02416ca33c6240 Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Mon, 22 Jan 2018 03:46:07 -0600 Subject: [PATCH 02/11] [feature] Add Tests and Address PR Feedback --- .../Common/WebRequestPSCmdlet.Common.cs | 12 +- src/TypeCatalogGen/powershell_win7-x64.inc | 165 ------------- .../WebCmdlets.Tests.ps1 | 225 ++++++++++++++++++ 3 files changed, 231 insertions(+), 171 deletions(-) delete mode 100644 src/TypeCatalogGen/powershell_win7-x64.inc diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs index cf7db9220e8..643349752a7 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs @@ -1095,7 +1095,7 @@ internal virtual void FillRequestStream(HttpRequestMessage request) } } - if (Form != null) + if (null != Form) { // Content headers will be set by MultipartFormDataContent which will throw unless we clear them first WebSession.ContentHeaders.Clear(); @@ -1437,11 +1437,11 @@ protected override void StopProcessing() /// The Field Value to use. /// The > to update. /// If true, collection types in will be enumerated. If false, collections will be treated as single value. - internal void AddMultipartContent (object fieldName, object fieldValue, MultipartFormDataContent formData, bool enumerate) + private void AddMultipartContent (object fieldName, object fieldValue, MultipartFormDataContent formData, bool enumerate) { if (null == formData) { - formData = new MultipartFormDataContent(); + throw new ArgumentNullException("formDate"); } // It is possible that the dictionary keys or values are PSObject wrapped depending on how the dictionary is defined and assigned. @@ -1491,7 +1491,7 @@ internal void AddMultipartContent (object fieldName, object fieldValue, Multipar /// /// The Field Name to use for the . /// The Field Value to use for the . - internal StringContent GetMultipartStringContent (Object fieldName, Object fieldValue) + private StringContent GetMultipartStringContent (Object fieldName, Object fieldValue) { var contentDisposition = new ContentDispositionHeaderValue("form-data"); contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); @@ -1507,7 +1507,7 @@ internal StringContent GetMultipartStringContent (Object fieldName, Object field /// /// The Field Name to use for the . /// The to use for the . - internal StreamContent GetMultipartStreamContent (Object fieldName, Stream stream) + private StreamContent GetMultipartStreamContent (Object fieldName, Stream stream) { var contentDisposition = new ContentDispositionHeaderValue("form-data"); contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); @@ -1524,7 +1524,7 @@ internal StreamContent GetMultipartStreamContent (Object fieldName, Stream strea /// /// The Field Name to use for the . /// The file to use for the . - internal StreamContent GetMultipartFileContent (Object fieldName, FileInfo file) + private StreamContent GetMultipartFileContent (Object fieldName, FileInfo file) { var result = GetMultipartStreamContent(fieldName: fieldName, stream: new FileStream(file.FullName, FileMode.Open)); result.Headers.ContentDisposition.FileName = file.Name; diff --git a/src/TypeCatalogGen/powershell_win7-x64.inc b/src/TypeCatalogGen/powershell_win7-x64.inc deleted file mode 100644 index 4e7a8e18534..00000000000 --- a/src/TypeCatalogGen/powershell_win7-x64.inc +++ /dev/null @@ -1,165 +0,0 @@ -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.applicationinsights\2.4.0\lib\netstandard1.3\Microsoft.ApplicationInsights.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.csharp\2.3.1\lib\netstandard1.3\Microsoft.CodeAnalysis.CSharp.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.common\2.3.1\lib\netstandard1.3\Microsoft.CodeAnalysis.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.CSharp.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.VisualBasic.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.Win32.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.win32.registry.accesscontrol\4.4.0\ref\netstandard2.0\Microsoft.Win32.Registry.AccessControl.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.win32.registry\4.4.0\ref\netstandard2.0\Microsoft.Win32.Registry.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\mscorlib.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\netstandard.dll; -C:\Users\MarkLocal\.nuget\packages\newtonsoft.json\10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.AppContext.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Buffers.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Concurrent.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Immutable.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.NonGeneric.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Specialized.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Annotations.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Composition.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.DataAnnotations.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.EventBasedAsync.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.TypeConverter.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Configuration.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Console.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Core.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Data.Common.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Data.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.data.sqlclient\4.4.0\ref\netstandard2.0\System.Data.SqlClient.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Contracts.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Debug.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.DiagnosticSource.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.FileVersionInfo.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Process.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.StackTrace.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.TextWriterTraceListener.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Tools.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.TraceSource.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Tracing.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Drawing.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Drawing.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Dynamic.Runtime.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.Calendars.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.Extensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.FileSystem.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.ZipFile.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.dll; -C:\Users\MarkLocal\.nuget\packages\system.io.filesystem.accesscontrol\4.4.0\ref\netstandard2.0\System.IO.FileSystem.AccessControl.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.DriveInfo.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.Watcher.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.IsolatedStorage.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.MemoryMappedFiles.dll; -C:\Users\MarkLocal\.nuget\packages\system.io.packaging\4.4.0\ref\netstandard1.3\System.IO.Packaging.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Pipes.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.UnmanagedMemoryStream.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Expressions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Parallel.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Queryable.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Http.dll; -C:\Users\MarkLocal\.nuget\packages\system.net.http.winhttphandler\4.4.0\ref\netstandard2.0\System.Net.Http.WinHttpHandler.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.HttpListener.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Mail.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.NameResolution.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.NetworkInformation.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Ping.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Requests.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Security.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.ServicePoint.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Sockets.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebClient.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebHeaderCollection.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebProxy.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebSockets.Client.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebSockets.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Numerics.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Numerics.Vectors.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ObjectModel.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.DispatchProxy.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.ILGeneration.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.Lightweight.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Extensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Metadata.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.TypeExtensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.Reader.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.ResourceManager.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.Writer.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.CompilerServices.VisualC.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Extensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Handles.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.RuntimeInformation.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.WindowsRuntime.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Loader.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Numerics.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Formatters.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Json.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Xml.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.security.accesscontrol\4.4.0\ref\netstandard2.0\System.Security.AccessControl.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Claims.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Algorithms.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Csp.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Encoding.dll; -C:\Users\MarkLocal\.nuget\packages\system.security.cryptography.pkcs\4.4.0\ref\netstandard2.0\System.Security.Cryptography.Pkcs.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.X509Certificates.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.dll; -C:\Users\MarkLocal\.nuget\packages\system.security.permissions\4.4.0\ref\netstandard2.0\System.Security.Permissions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Principal.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.security.principal.windows\4.4.0\ref\netstandard2.0\System.Security.Principal.Windows.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.SecureString.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.duplex\4.4.0\ref\netstandard2.0\System.ServiceModel.Duplex.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.http\4.4.0\ref\netstandard2.0\System.ServiceModel.Http.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.nettcp\4.4.0\ref\netstandard2.0\System.ServiceModel.NetTcp.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.primitives\4.4.0\ref\netstandard2.0\System.ServiceModel.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.security\4.4.0\ref\netstandard2.0\System.ServiceModel.Security.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ServiceModel.Web.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ServiceProcess.dll; -C:\Users\MarkLocal\.nuget\packages\system.serviceprocess.servicecontroller\4.4.0\ref\netstandard2.0\System.ServiceProcess.ServiceController.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.text.encoding.codepages\4.4.0\ref\netstandard2.0\System.Text.Encoding.CodePages.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.Encoding.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.Encoding.Extensions.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.text.encodings.web\4.4.0\lib\netstandard2.0\System.Text.Encodings.Web.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.RegularExpressions.dll; -C:\Users\MarkLocal\.nuget\packages\system.threading.accesscontrol\4.4.0\ref\netstandard2.0\System.Threading.AccessControl.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Overlapped.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Dataflow.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Extensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Parallel.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Thread.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.ThreadPool.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Timer.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Transactions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Transactions.Local.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ValueTuple.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Web.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Web.HttpUtility.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Windows.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.Linq.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.ReaderWriter.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.Serialization.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XDocument.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XmlDocument.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XmlSerializer.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XPath.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XPath.XDocument.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\WindowsBase.dll; diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 index 8d0856b8af2..70361d0a734 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 @@ -1098,6 +1098,18 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { } Context "Multipart/form-data Tests" { + BeforeAll { + $file1Name = "testfile1.txt" + $file1Path = Join-Path $testdrive $file1Name + $file1Contents = "Test123" + $file1Contents | Set-Content $file1Path + + $file2Name = "testfile2.txt" + $file2Path = Join-Path $testdrive $file2Name + $file2Contents = "Test456" + $file2Contents | Set-Content $file2Path + } + It "Verifies Invoke-WebRequest Supports Multipart String Values" { $body = GetMultipartBody -String $uri = Get-WebListenerUrl -Test 'Multipart' @@ -1107,6 +1119,7 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $result.Headers.'Content-Type' | Should Match 'multipart/form-data' $result.Items.TestString[0] | Should Be 'TestValue' } + It "Verifies Invoke-WebRequest Supports Multipart File Values" { $body = GetMultipartBody -File $uri = Get-WebListenerUrl -Test 'Multipart' @@ -1118,6 +1131,7 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $result.Files[0].ContentType | Should Be 'text/plain' $result.Files[0].Content | Should Match 'TestContent' } + It "Verifies Invoke-WebRequest Supports Mixed Multipart String and File Values" { $body = GetMultipartBody -String -File $uri = Get-WebListenerUrl -Test 'Multipart' @@ -1130,6 +1144,108 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $result.Files[0].ContentType | Should Be 'text/plain' $result.Files[0].Content | Should Match 'TestContent' } + + It "Verifies Invoke-WebRequest -Form supports string values" { + $form = @{TestString = "TestValue"} + $uri = Get-WebListenerUrl -Test 'Multipart' + $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' + $result = $response.Content | ConvertFrom-Json + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Items.TestString.Count | Should Be 1 + $result.Items.TestString[0] | Should Be 'TestValue' + } + + It "Verifies Invoke-WebRequest -Form supports a collection of string values" { + $form = @{TestStrings = "TestValue", "TestValue2"} + $uri = Get-WebListenerUrl -Test 'Multipart' + $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' + $result = $response.Content | ConvertFrom-Json + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Items.TestStrings.Count | Should Be 2 + $result.Items.TestStrings[0] | Should Be 'TestValue' + $result.Items.TestStrings[1] | Should Be 'TestValue2' + } + + It "Verifies Invoke-WebRequest -Form supports file values" { + $form = @{TestFile = [System.IO.FileInfo]$file1Path} + $uri = Get-WebListenerUrl -Test 'Multipart' + $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' + $result = $response.Content | ConvertFrom-Json + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Files.Count | Should Be 1 + + $result.Files[0].Name | Should Be "TestFile" + $result.Files[0].FileName | Should Be $file1Name + $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].Content | Should Match $file1Contents + } + + It "Verifies Invoke-WebRequest -Form supports a collection of file values" { + $form = @{TestFiles = [System.IO.FileInfo]$file1Path, [System.IO.FileInfo]$file2Path} + $uri = Get-WebListenerUrl -Test 'Multipart' + $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' + $result = $response.Content | ConvertFrom-Json + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Files.Count | Should Be 2 + + $result.Files[0].Name | Should Be "TestFiles" + $result.Files[0].FileName | Should Be $file1Name + $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].Content | Should Match $file1Contents + + $result.Files[1].Name | Should Be "TestFiles" + $result.Files[1].FileName | Should Be $file2Name + $result.Files[1].ContentType | Should Be 'application/octet-stream' + $result.Files[1].Content | Should Match $file2Contents + } + + It "Verifies Invoke-WebRequest -Form supports combinations of strings and files" { + $form = @{ + TestStrings = "TestValue", "TestValue2" + TestFiles = [System.IO.FileInfo]$file1Path, [System.IO.FileInfo]$file2Path + } + $uri = Get-WebListenerUrl -Test 'Multipart' + $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' + $result = $response.Content | ConvertFrom-Json + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Items.TestStrings.Count | Should Be 2 + $result.Files.Count | Should Be 2 + + $result.Items.TestStrings[0] | Should Be 'TestValue' + $result.Items.TestStrings[1] | Should Be 'TestValue2' + + $result.Files[0].Name | Should Be "TestFiles" + $result.Files[0].FileName | Should Be $file1Name + $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].Content | Should Match $file1Contents + + $result.Files[1].Name | Should Be "TestFiles" + $result.Files[1].FileName | Should Be $file2Name + $result.Files[1].ContentType | Should Be 'application/octet-stream' + $result.Files[1].Content | Should Match $file2Contents + } + + It "Verifies Invoke-WebRequest -Form is mutually exclusive with -Body" { + $form = @{TestString = "TestValue"} + $body = "test" + $uri = Get-WebListenerUrl -Test 'Multipart' + + {Invoke-WebRequest -Uri $uri -Form $form -Body $Body -ErrorAction 'Stop'} | + ShouldBeErrorId 'WebCmdletBodyFormConflictException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand' + } + + It "Verifies Invoke-WebRequest -Form is mutually exclusive with -InFile" { + $form = @{TestString = "TestValue"} + $uri = Get-WebListenerUrl -Test 'Multipart' + + {Invoke-WebRequest -Uri $uri -Form $form -InFile $file1Path -ErrorAction 'Stop'} | + ShouldBeErrorId 'WebCmdletFormInFileConflictException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand' + } } Context "Invoke-WebRequest -Authentication tests" { @@ -1902,6 +2018,18 @@ Describe "Invoke-RestMethod tests" -Tags "Feature" { } Context "Multipart/form-data Tests" { + BeforeAll { + $file1Name = "testfile1.txt" + $file1Path = Join-Path $testdrive $file1Name + $file1Contents = "Test123" + $file1Contents | Set-Content $file1Path + + $file2Name = "testfile2.txt" + $file2Path = Join-Path $testdrive $file2Name + $file2Contents = "Test456" + $file2Contents | Set-Content $file2Path + } + It "Verifies Invoke-RestMethod Supports Multipart String Values" { $body = GetMultipartBody -String $uri = Get-WebListenerUrl -Test 'Multipart' @@ -1933,6 +2061,103 @@ Describe "Invoke-RestMethod tests" -Tags "Feature" { $result.Files[0].ContentType | Should Be 'text/plain' $result.Files[0].Content | Should Match 'TestContent' } + + It "Verifies Invoke-RestMethod -Form supports string values" { + $form = @{TestString = "TestValue"} + $uri = Get-WebListenerUrl -Test 'Multipart' + $result = Invoke-RestMethod -Uri $uri -Form $form -Method 'POST' + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Items.TestString.Count | Should Be 1 + $result.Items.TestString[0] | Should Be 'TestValue' + } + + It "Verifies Invoke-RestMethod -Form supports a collection of string values" { + $form = @{TestStrings = "TestValue", "TestValue2"} + $uri = Get-WebListenerUrl -Test 'Multipart' + $result = Invoke-RestMethod -Uri $uri -Form $form -Method 'POST' + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Items.TestStrings.Count | Should Be 2 + $result.Items.TestStrings[0] | Should Be 'TestValue' + $result.Items.TestStrings[1] | Should Be 'TestValue2' + } + + It "Verifies Invoke-RestMethod -Form supports file values" { + $form = @{TestFile = [System.IO.FileInfo]$file1Path} + $uri = Get-WebListenerUrl -Test 'Multipart' + $result = Invoke-RestMethod -Uri $uri -Form $form -Method 'POST' + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Files.Count | Should Be 1 + + $result.Files[0].Name | Should Be "TestFile" + $result.Files[0].FileName | Should Be $file1Name + $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].Content | Should Match $file1Contents + } + + It "Verifies Invoke-RestMethod -Form supports a collection of file values" { + $form = @{TestFiles = [System.IO.FileInfo]$file1Path, [System.IO.FileInfo]$file2Path} + $uri = Get-WebListenerUrl -Test 'Multipart' + $result = Invoke-RestMethod -Uri $uri -Form $form -Method 'POST' + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Files.Count | Should Be 2 + + $result.Files[0].Name | Should Be "TestFiles" + $result.Files[0].FileName | Should Be $file1Name + $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].Content | Should Match $file1Contents + + $result.Files[1].Name | Should Be "TestFiles" + $result.Files[1].FileName | Should Be $file2Name + $result.Files[1].ContentType | Should Be 'application/octet-stream' + $result.Files[1].Content | Should Match $file2Contents + } + + It "Verifies Invoke-RestMethod -Form supports combinations of strings and files" { + $form = @{ + TestStrings = "TestValue", "TestValue2" + TestFiles = [System.IO.FileInfo]$file1Path, [System.IO.FileInfo]$file2Path + } + $uri = Get-WebListenerUrl -Test 'Multipart' + $result = Invoke-RestMethod -Uri $uri -Form $form -Method 'POST' + + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Items.TestStrings.Count | Should Be 2 + $result.Files.Count | Should Be 2 + + $result.Items.TestStrings[0] | Should Be 'TestValue' + $result.Items.TestStrings[1] | Should Be 'TestValue2' + + $result.Files[0].Name | Should Be "TestFiles" + $result.Files[0].FileName | Should Be $file1Name + $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].Content | Should Match $file1Contents + + $result.Files[1].Name | Should Be "TestFiles" + $result.Files[1].FileName | Should Be $file2Name + $result.Files[1].ContentType | Should Be 'application/octet-stream' + $result.Files[1].Content | Should Match $file2Contents + } + + It "Verifies Invoke-RestMethod -Form is mutually exclusive with -Body" { + $form = @{TestString = "TestValue"} + $body = "test" + $uri = Get-WebListenerUrl -Test 'Multipart' + + {Invoke-RestMethod -Uri $uri -Form $form -Body $Body -ErrorAction 'Stop'} | + ShouldBeErrorId 'WebCmdletBodyFormConflictException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand' + } + + It "Verifies Invoke-RestMethod -Form is mutually exclusive with -InFile" { + $form = @{TestString = "TestValue"} + $uri = Get-WebListenerUrl -Test 'Multipart' + + {Invoke-RestMethod -Uri $uri -Form $form -InFile $file1Path -ErrorAction 'Stop'} | + ShouldBeErrorId 'WebCmdletFormInFileConflictException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand' + } } #region charset encoding tests From cb249f0b3e12e3cec197e156e1034d805ebd3251 Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Mon, 22 Jan 2018 04:01:56 -0600 Subject: [PATCH 03/11] [feature] Move private below internal --- .../Common/WebRequestPSCmdlet.Common.cs | 205 +++++++++--------- 1 file changed, 102 insertions(+), 103 deletions(-) diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs index 643349752a7..abf5e415bfe 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs @@ -1429,109 +1429,6 @@ protected override void StopProcessing() #region Helper Methods - - /// - /// Adds content to a . Object type detection is used to determine if the value is String, File, or Collection. - /// - /// The Field Name to use. - /// The Field Value to use. - /// The > to update. - /// If true, collection types in will be enumerated. If false, collections will be treated as single value. - private void AddMultipartContent (object fieldName, object fieldValue, MultipartFormDataContent formData, bool enumerate) - { - if (null == formData) - { - throw new ArgumentNullException("formDate"); - } - - // It is possible that the dictionary keys or values are PSObject wrapped depending on how the dictionary is defined and assigned. - // Before processing the field name and value we need to ensure we are working with the base objects and not the PSObject wrappers. - - // Unwrap fieldName PSObjects - if (fieldName is PSObject namePSObject) - { - fieldName = namePSObject.BaseObject; - } - - // Unwrap fieldValue PSObjects - if (fieldValue is PSObject valuePSObject) - { - fieldValue = valuePSObject.BaseObject; - } - - // Treat a single FileInfo as a FileContent - if (fieldValue is FileInfo file) - { - formData.Add(GetMultipartFileContent(fieldName: fieldName, file: file)); - return; - } - - // Treat Strings and other single values as a StringContent. - // If enumeration is false, also treat IEnumerables as StringContents. - // String implements IEnumerable so the explicit check is required. - if (enumerate == false || fieldValue is String || !(fieldValue is IEnumerable)) - { - formData.Add(GetMultipartStringContent(fieldName: fieldName, fieldValue: fieldValue)); - return; - } - - // Treat the value as a collection and enumerate it if enumeration is true - if(enumerate == true && fieldValue is IEnumerable items) - { - foreach (var item in items) - { - // Recruse, but do not enumerate the next level. IEnumerables will be treated as single values. - AddMultipartContent(fieldName: fieldName, fieldValue: item, formData: formData, enumerate: false); - } - } - } - - /// - /// Gets a from the supplied field name and field value. Uses to convert the objects to strings. - /// - /// The Field Name to use for the . - /// The Field Value to use for the . - private StringContent GetMultipartStringContent (Object fieldName, Object fieldValue) - { - var contentDisposition = new ContentDispositionHeaderValue("form-data"); - contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); - - var result = new StringContent(LanguagePrimitives.ConvertTo(fieldValue)); - result.Headers.ContentDisposition = contentDisposition; - - return result; - } - - /// - /// Gets a from the supplied field name and . Uses to convert the fieldname to a string. - /// - /// The Field Name to use for the . - /// The to use for the . - private StreamContent GetMultipartStreamContent (Object fieldName, Stream stream) - { - var contentDisposition = new ContentDispositionHeaderValue("form-data"); - contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); - - var result = new StreamContent(stream); - result.Headers.ContentDisposition = contentDisposition; - result.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); - - return result; - } - - /// - /// Gets a from the supplied field name and file. Calls to create the and then sets the file name. - /// - /// The Field Name to use for the . - /// The file to use for the . - private StreamContent GetMultipartFileContent (Object fieldName, FileInfo file) - { - var result = GetMultipartStreamContent(fieldName: fieldName, stream: new FileStream(file.FullName, FileMode.Open)); - result.Headers.ContentDisposition.FileName = file.Name; - - return result; - } - /// /// Sets the ContentLength property of the request and writes the specified content to the request's RequestStream. /// @@ -1726,6 +1623,108 @@ internal void ParseLinkHeader(HttpResponseMessage response, System.Uri requestUr } } + /// + /// Adds content to a . Object type detection is used to determine if the value is String, File, or Collection. + /// + /// The Field Name to use. + /// The Field Value to use. + /// The > to update. + /// If true, collection types in will be enumerated. If false, collections will be treated as single value. + private void AddMultipartContent (object fieldName, object fieldValue, MultipartFormDataContent formData, bool enumerate) + { + if (null == formData) + { + throw new ArgumentNullException("formDate"); + } + + // It is possible that the dictionary keys or values are PSObject wrapped depending on how the dictionary is defined and assigned. + // Before processing the field name and value we need to ensure we are working with the base objects and not the PSObject wrappers. + + // Unwrap fieldName PSObjects + if (fieldName is PSObject namePSObject) + { + fieldName = namePSObject.BaseObject; + } + + // Unwrap fieldValue PSObjects + if (fieldValue is PSObject valuePSObject) + { + fieldValue = valuePSObject.BaseObject; + } + + // Treat a single FileInfo as a FileContent + if (fieldValue is FileInfo file) + { + formData.Add(GetMultipartFileContent(fieldName: fieldName, file: file)); + return; + } + + // Treat Strings and other single values as a StringContent. + // If enumeration is false, also treat IEnumerables as StringContents. + // String implements IEnumerable so the explicit check is required. + if (enumerate == false || fieldValue is String || !(fieldValue is IEnumerable)) + { + formData.Add(GetMultipartStringContent(fieldName: fieldName, fieldValue: fieldValue)); + return; + } + + // Treat the value as a collection and enumerate it if enumeration is true + if(enumerate == true && fieldValue is IEnumerable items) + { + foreach (var item in items) + { + // Recruse, but do not enumerate the next level. IEnumerables will be treated as single values. + AddMultipartContent(fieldName: fieldName, fieldValue: item, formData: formData, enumerate: false); + } + } + } + + /// + /// Gets a from the supplied field name and field value. Uses to convert the objects to strings. + /// + /// The Field Name to use for the . + /// The Field Value to use for the . + private StringContent GetMultipartStringContent (Object fieldName, Object fieldValue) + { + var contentDisposition = new ContentDispositionHeaderValue("form-data"); + contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); + + var result = new StringContent(LanguagePrimitives.ConvertTo(fieldValue)); + result.Headers.ContentDisposition = contentDisposition; + + return result; + } + + /// + /// Gets a from the supplied field name and . Uses to convert the fieldname to a string. + /// + /// The Field Name to use for the . + /// The to use for the . + private StreamContent GetMultipartStreamContent (Object fieldName, Stream stream) + { + var contentDisposition = new ContentDispositionHeaderValue("form-data"); + contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); + + var result = new StreamContent(stream); + result.Headers.ContentDisposition = contentDisposition; + result.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); + + return result; + } + + /// + /// Gets a from the supplied field name and file. Calls to create the and then sets the file name. + /// + /// The Field Name to use for the . + /// The file to use for the . + private StreamContent GetMultipartFileContent (Object fieldName, FileInfo file) + { + var result = GetMultipartStreamContent(fieldName: fieldName, stream: new FileStream(file.FullName, FileMode.Open)); + result.Headers.ContentDisposition.FileName = file.Name; + + return result; + } + #endregion Helper Methods } } From 3939df91f555caead9a5d5dafa185d38c1dc1cf1 Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Mon, 22 Jan 2018 04:03:38 -0600 Subject: [PATCH 04/11] [feature] Cleanup formatting --- .../WebCmdlet/Common/WebRequestPSCmdlet.Common.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs index abf5e415bfe..0a0b5b49943 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs @@ -1630,7 +1630,7 @@ internal void ParseLinkHeader(HttpResponseMessage response, System.Uri requestUr /// The Field Value to use. /// The > to update. /// If true, collection types in will be enumerated. If false, collections will be treated as single value. - private void AddMultipartContent (object fieldName, object fieldValue, MultipartFormDataContent formData, bool enumerate) + private void AddMultipartContent(object fieldName, object fieldValue, MultipartFormDataContent formData, bool enumerate) { if (null == formData) { @@ -1669,7 +1669,7 @@ private void AddMultipartContent (object fieldName, object fieldValue, Multipart } // Treat the value as a collection and enumerate it if enumeration is true - if(enumerate == true && fieldValue is IEnumerable items) + if (enumerate == true && fieldValue is IEnumerable items) { foreach (var item in items) { @@ -1684,14 +1684,14 @@ private void AddMultipartContent (object fieldName, object fieldValue, Multipart /// /// The Field Name to use for the . /// The Field Value to use for the . - private StringContent GetMultipartStringContent (Object fieldName, Object fieldValue) + private StringContent GetMultipartStringContent(Object fieldName, Object fieldValue) { var contentDisposition = new ContentDispositionHeaderValue("form-data"); contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); var result = new StringContent(LanguagePrimitives.ConvertTo(fieldValue)); result.Headers.ContentDisposition = contentDisposition; - + return result; } @@ -1700,7 +1700,7 @@ private StringContent GetMultipartStringContent (Object fieldName, Object fieldV /// /// The Field Name to use for the . /// The to use for the . - private StreamContent GetMultipartStreamContent (Object fieldName, Stream stream) + private StreamContent GetMultipartStreamContent(Object fieldName, Stream stream) { var contentDisposition = new ContentDispositionHeaderValue("form-data"); contentDisposition.Name = LanguagePrimitives.ConvertTo(fieldName); @@ -1708,7 +1708,7 @@ private StreamContent GetMultipartStreamContent (Object fieldName, Stream stream var result = new StreamContent(stream); result.Headers.ContentDisposition = contentDisposition; result.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); - + return result; } @@ -1717,7 +1717,7 @@ private StreamContent GetMultipartStreamContent (Object fieldName, Stream stream /// /// The Field Name to use for the . /// The file to use for the . - private StreamContent GetMultipartFileContent (Object fieldName, FileInfo file) + private StreamContent GetMultipartFileContent(Object fieldName, FileInfo file) { var result = GetMultipartStreamContent(fieldName: fieldName, stream: new FileStream(file.FullName, FileMode.Open)); result.Headers.ContentDisposition.FileName = file.Name; From c45e693bf5c6bbcf555149e22ce899c971d9fb8d Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Mon, 22 Jan 2018 04:47:26 -0600 Subject: [PATCH 05/11] [feature] Address PR Feedback --- .../WebCmdlets.Tests.ps1 | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 index 70361d0a734..f788d34b247 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 @@ -1102,12 +1102,12 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $file1Name = "testfile1.txt" $file1Path = Join-Path $testdrive $file1Name $file1Contents = "Test123" - $file1Contents | Set-Content $file1Path + $file1Contents | Set-Content $file1Path -Force $file2Name = "testfile2.txt" $file2Path = Join-Path $testdrive $file2Name $file2Contents = "Test456" - $file2Contents | Set-Content $file2Path + $file2Contents | Set-Content $file2Path -Force } It "Verifies Invoke-WebRequest Supports Multipart String Values" { @@ -1151,9 +1151,9 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' $result = $response.Content | ConvertFrom-Json - $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Headers.'Content-Type' | Should BeExactly 'multipart/form-data' $result.Items.TestString.Count | Should Be 1 - $result.Items.TestString[0] | Should Be 'TestValue' + $result.Items.TestString[0] | Should BeExactly 'TestValue' } It "Verifies Invoke-WebRequest -Form supports a collection of string values" { @@ -1162,10 +1162,10 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' $result = $response.Content | ConvertFrom-Json - $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Headers.'Content-Type' | Should BeExactly 'multipart/form-data' $result.Items.TestStrings.Count | Should Be 2 - $result.Items.TestStrings[0] | Should Be 'TestValue' - $result.Items.TestStrings[1] | Should Be 'TestValue2' + $result.Items.TestStrings[0] | Should BeExactly 'TestValue' + $result.Items.TestStrings[1] | Should BeExactly 'TestValue2' } It "Verifies Invoke-WebRequest -Form supports file values" { @@ -1177,9 +1177,9 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $result.Headers.'Content-Type' | Should Match 'multipart/form-data' $result.Files.Count | Should Be 1 - $result.Files[0].Name | Should Be "TestFile" - $result.Files[0].FileName | Should Be $file1Name - $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].Name | Should BeExactly "TestFile" + $result.Files[0].FileName | Should BeExactly $file1Name + $result.Files[0].ContentType | Should BeExactly 'application/octet-stream' $result.Files[0].Content | Should Match $file1Contents } @@ -1189,17 +1189,17 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' $result = $response.Content | ConvertFrom-Json - $result.Headers.'Content-Type' | Should Match 'multipart/form-data' + $result.Headers.'Content-Type' | Should BeExactly 'multipart/form-data' $result.Files.Count | Should Be 2 - $result.Files[0].Name | Should Be "TestFiles" - $result.Files[0].FileName | Should Be $file1Name - $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].Name | Should BeExactly "TestFiles" + $result.Files[0].FileName | Should BeExactly $file1Name + $result.Files[0].ContentType | Should BeExactly 'application/octet-stream' $result.Files[0].Content | Should Match $file1Contents - $result.Files[1].Name | Should Be "TestFiles" - $result.Files[1].FileName | Should Be $file2Name - $result.Files[1].ContentType | Should Be 'application/octet-stream' + $result.Files[1].Name | Should BeExactly "TestFiles" + $result.Files[1].FileName | Should BeExactly $file2Name + $result.Files[1].ContentType | Should BeExactly 'application/octet-stream' $result.Files[1].Content | Should Match $file2Contents } @@ -1216,17 +1216,17 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $result.Items.TestStrings.Count | Should Be 2 $result.Files.Count | Should Be 2 - $result.Items.TestStrings[0] | Should Be 'TestValue' - $result.Items.TestStrings[1] | Should Be 'TestValue2' + $result.Items.TestStrings[0] | Should BeExactly 'TestValue' + $result.Items.TestStrings[1] | Should BeExactly 'TestValue2' $result.Files[0].Name | Should Be "TestFiles" - $result.Files[0].FileName | Should Be $file1Name - $result.Files[0].ContentType | Should Be 'application/octet-stream' + $result.Files[0].FileName | Should BeExactly $file1Name + $result.Files[0].ContentType | Should BeExactly 'application/octet-stream' $result.Files[0].Content | Should Match $file1Contents - $result.Files[1].Name | Should Be "TestFiles" - $result.Files[1].FileName | Should Be $file2Name - $result.Files[1].ContentType | Should Be 'application/octet-stream' + $result.Files[1].Name | Should BeExactly "TestFiles" + $result.Files[1].FileName | Should BeExactly $file2Name + $result.Files[1].ContentType | Should BeExactly 'application/octet-stream' $result.Files[1].Content | Should Match $file2Contents } From 3bcf3aff7bc1a1950a619e755a04a5421773e5a4 Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Mon, 22 Jan 2018 06:55:30 -0600 Subject: [PATCH 06/11] [Feature] add missing -force --- .../Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 index f788d34b247..99daef9590f 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 @@ -2022,12 +2022,12 @@ Describe "Invoke-RestMethod tests" -Tags "Feature" { $file1Name = "testfile1.txt" $file1Path = Join-Path $testdrive $file1Name $file1Contents = "Test123" - $file1Contents | Set-Content $file1Path + $file1Contents | Set-Content $file1Path -Force $file2Name = "testfile2.txt" $file2Path = Join-Path $testdrive $file2Name $file2Contents = "Test456" - $file2Contents | Set-Content $file2Path + $file2Contents | Set-Content $file2Path -Force } It "Verifies Invoke-RestMethod Supports Multipart String Values" { From a64dfebf1750f6351336bae44a29e2bead59f739 Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Mon, 22 Jan 2018 12:53:17 -0600 Subject: [PATCH 07/11] [feature] Revert Content-Type to Match --- .../Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 index 99daef9590f..7892a329cc3 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 @@ -1151,7 +1151,7 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' $result = $response.Content | ConvertFrom-Json - $result.Headers.'Content-Type' | Should BeExactly 'multipart/form-data' + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' $result.Items.TestString.Count | Should Be 1 $result.Items.TestString[0] | Should BeExactly 'TestValue' } @@ -1162,7 +1162,7 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' $result = $response.Content | ConvertFrom-Json - $result.Headers.'Content-Type' | Should BeExactly 'multipart/form-data' + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' $result.Items.TestStrings.Count | Should Be 2 $result.Items.TestStrings[0] | Should BeExactly 'TestValue' $result.Items.TestStrings[1] | Should BeExactly 'TestValue2' @@ -1189,7 +1189,7 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { $response = Invoke-WebRequest -Uri $uri -Form $form -Method 'POST' $result = $response.Content | ConvertFrom-Json - $result.Headers.'Content-Type' | Should BeExactly 'multipart/form-data' + $result.Headers.'Content-Type' | Should Match 'multipart/form-data' $result.Files.Count | Should Be 2 $result.Files[0].Name | Should BeExactly "TestFiles" From aa187ff04b22c65a0527d011b62be1c384591402 Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Mon, 22 Jan 2018 18:13:15 -0600 Subject: [PATCH 08/11] [Feature] Rerun CI --- src/TypeCatalogGen/powershell_win7-x64.inc | 165 +++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 src/TypeCatalogGen/powershell_win7-x64.inc diff --git a/src/TypeCatalogGen/powershell_win7-x64.inc b/src/TypeCatalogGen/powershell_win7-x64.inc new file mode 100644 index 00000000000..4e7a8e18534 --- /dev/null +++ b/src/TypeCatalogGen/powershell_win7-x64.inc @@ -0,0 +1,165 @@ +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.applicationinsights\2.4.0\lib\netstandard1.3\Microsoft.ApplicationInsights.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.csharp\2.3.1\lib\netstandard1.3\Microsoft.CodeAnalysis.CSharp.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.common\2.3.1\lib\netstandard1.3\Microsoft.CodeAnalysis.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.CSharp.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.VisualBasic.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.Win32.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.win32.registry.accesscontrol\4.4.0\ref\netstandard2.0\Microsoft.Win32.Registry.AccessControl.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.win32.registry\4.4.0\ref\netstandard2.0\Microsoft.Win32.Registry.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\mscorlib.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\netstandard.dll; +C:\Users\MarkLocal\.nuget\packages\newtonsoft.json\10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.AppContext.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Buffers.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Concurrent.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Immutable.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.NonGeneric.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Specialized.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Annotations.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Composition.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.DataAnnotations.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.EventBasedAsync.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.TypeConverter.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Configuration.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Console.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Core.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Data.Common.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Data.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.data.sqlclient\4.4.0\ref\netstandard2.0\System.Data.SqlClient.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Contracts.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Debug.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.DiagnosticSource.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.FileVersionInfo.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Process.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.StackTrace.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.TextWriterTraceListener.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Tools.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.TraceSource.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Tracing.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Drawing.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Drawing.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Dynamic.Runtime.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.Calendars.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.Extensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.FileSystem.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.ZipFile.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.dll; +C:\Users\MarkLocal\.nuget\packages\system.io.filesystem.accesscontrol\4.4.0\ref\netstandard2.0\System.IO.FileSystem.AccessControl.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.DriveInfo.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.Watcher.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.IsolatedStorage.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.MemoryMappedFiles.dll; +C:\Users\MarkLocal\.nuget\packages\system.io.packaging\4.4.0\ref\netstandard1.3\System.IO.Packaging.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Pipes.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.UnmanagedMemoryStream.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Expressions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Parallel.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Queryable.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Http.dll; +C:\Users\MarkLocal\.nuget\packages\system.net.http.winhttphandler\4.4.0\ref\netstandard2.0\System.Net.Http.WinHttpHandler.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.HttpListener.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Mail.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.NameResolution.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.NetworkInformation.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Ping.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Requests.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Security.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.ServicePoint.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Sockets.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebClient.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebHeaderCollection.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebProxy.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebSockets.Client.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebSockets.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Numerics.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Numerics.Vectors.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ObjectModel.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.DispatchProxy.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.ILGeneration.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.Lightweight.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Extensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Metadata.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.TypeExtensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.Reader.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.ResourceManager.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.Writer.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.CompilerServices.VisualC.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Extensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Handles.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.RuntimeInformation.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.WindowsRuntime.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Loader.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Numerics.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Formatters.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Json.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Xml.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.security.accesscontrol\4.4.0\ref\netstandard2.0\System.Security.AccessControl.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Claims.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Algorithms.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Csp.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Encoding.dll; +C:\Users\MarkLocal\.nuget\packages\system.security.cryptography.pkcs\4.4.0\ref\netstandard2.0\System.Security.Cryptography.Pkcs.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.X509Certificates.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.dll; +C:\Users\MarkLocal\.nuget\packages\system.security.permissions\4.4.0\ref\netstandard2.0\System.Security.Permissions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Principal.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.security.principal.windows\4.4.0\ref\netstandard2.0\System.Security.Principal.Windows.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.SecureString.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.duplex\4.4.0\ref\netstandard2.0\System.ServiceModel.Duplex.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.http\4.4.0\ref\netstandard2.0\System.ServiceModel.Http.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.nettcp\4.4.0\ref\netstandard2.0\System.ServiceModel.NetTcp.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.primitives\4.4.0\ref\netstandard2.0\System.ServiceModel.Primitives.dll; +C:\Users\MarkLocal\.nuget\packages\system.servicemodel.security\4.4.0\ref\netstandard2.0\System.ServiceModel.Security.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ServiceModel.Web.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ServiceProcess.dll; +C:\Users\MarkLocal\.nuget\packages\system.serviceprocess.servicecontroller\4.4.0\ref\netstandard2.0\System.ServiceProcess.ServiceController.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.text.encoding.codepages\4.4.0\ref\netstandard2.0\System.Text.Encoding.CodePages.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.Encoding.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.Encoding.Extensions.dll; +C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.text.encodings.web\4.4.0\lib\netstandard2.0\System.Text.Encodings.Web.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.RegularExpressions.dll; +C:\Users\MarkLocal\.nuget\packages\system.threading.accesscontrol\4.4.0\ref\netstandard2.0\System.Threading.AccessControl.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Overlapped.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Dataflow.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Extensions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Parallel.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Thread.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.ThreadPool.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Timer.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Transactions.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Transactions.Local.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ValueTuple.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Web.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Web.HttpUtility.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Windows.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.Linq.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.ReaderWriter.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.Serialization.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XDocument.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XmlDocument.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XmlSerializer.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XPath.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XPath.XDocument.dll; +C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\WindowsBase.dll; From b4ac5c453ce809fc094a57c84a79301a4878155f Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Mon, 22 Jan 2018 18:51:49 -0600 Subject: [PATCH 09/11] [Feature] remove errant inc file --- src/TypeCatalogGen/powershell_win7-x64.inc | 165 --------------------- 1 file changed, 165 deletions(-) delete mode 100644 src/TypeCatalogGen/powershell_win7-x64.inc diff --git a/src/TypeCatalogGen/powershell_win7-x64.inc b/src/TypeCatalogGen/powershell_win7-x64.inc deleted file mode 100644 index 4e7a8e18534..00000000000 --- a/src/TypeCatalogGen/powershell_win7-x64.inc +++ /dev/null @@ -1,165 +0,0 @@ -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.applicationinsights\2.4.0\lib\netstandard1.3\Microsoft.ApplicationInsights.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.csharp\2.3.1\lib\netstandard1.3\Microsoft.CodeAnalysis.CSharp.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.codeanalysis.common\2.3.1\lib\netstandard1.3\Microsoft.CodeAnalysis.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.CSharp.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.VisualBasic.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\Microsoft.Win32.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.win32.registry.accesscontrol\4.4.0\ref\netstandard2.0\Microsoft.Win32.Registry.AccessControl.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\microsoft.win32.registry\4.4.0\ref\netstandard2.0\Microsoft.Win32.Registry.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\mscorlib.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\netstandard.dll; -C:\Users\MarkLocal\.nuget\packages\newtonsoft.json\10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.AppContext.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Buffers.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Concurrent.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Immutable.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.NonGeneric.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Collections.Specialized.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Annotations.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Composition.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.DataAnnotations.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.EventBasedAsync.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ComponentModel.TypeConverter.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Configuration.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Console.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Core.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Data.Common.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Data.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.data.sqlclient\4.4.0\ref\netstandard2.0\System.Data.SqlClient.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Contracts.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Debug.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.DiagnosticSource.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.FileVersionInfo.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Process.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.StackTrace.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.TextWriterTraceListener.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Tools.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.TraceSource.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Diagnostics.Tracing.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Drawing.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Drawing.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Dynamic.Runtime.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.Calendars.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Globalization.Extensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.FileSystem.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Compression.ZipFile.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.dll; -C:\Users\MarkLocal\.nuget\packages\system.io.filesystem.accesscontrol\4.4.0\ref\netstandard2.0\System.IO.FileSystem.AccessControl.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.DriveInfo.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.FileSystem.Watcher.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.IsolatedStorage.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.MemoryMappedFiles.dll; -C:\Users\MarkLocal\.nuget\packages\system.io.packaging\4.4.0\ref\netstandard1.3\System.IO.Packaging.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.Pipes.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.IO.UnmanagedMemoryStream.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Expressions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Parallel.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Linq.Queryable.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Http.dll; -C:\Users\MarkLocal\.nuget\packages\system.net.http.winhttphandler\4.4.0\ref\netstandard2.0\System.Net.Http.WinHttpHandler.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.HttpListener.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Mail.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.NameResolution.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.NetworkInformation.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Ping.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Requests.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Security.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.ServicePoint.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.Sockets.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebClient.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebHeaderCollection.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebProxy.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebSockets.Client.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Net.WebSockets.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Numerics.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Numerics.Vectors.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ObjectModel.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.DispatchProxy.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.ILGeneration.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Emit.Lightweight.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Extensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Metadata.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Reflection.TypeExtensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.Reader.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.ResourceManager.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Resources.Writer.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.CompilerServices.VisualC.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Extensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Handles.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.RuntimeInformation.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.InteropServices.WindowsRuntime.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Loader.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Numerics.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Formatters.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Json.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Runtime.Serialization.Xml.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.security.accesscontrol\4.4.0\ref\netstandard2.0\System.Security.AccessControl.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Claims.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Algorithms.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Csp.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Encoding.dll; -C:\Users\MarkLocal\.nuget\packages\system.security.cryptography.pkcs\4.4.0\ref\netstandard2.0\System.Security.Cryptography.Pkcs.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Cryptography.X509Certificates.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.dll; -C:\Users\MarkLocal\.nuget\packages\system.security.permissions\4.4.0\ref\netstandard2.0\System.Security.Permissions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.Principal.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.security.principal.windows\4.4.0\ref\netstandard2.0\System.Security.Principal.Windows.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Security.SecureString.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.duplex\4.4.0\ref\netstandard2.0\System.ServiceModel.Duplex.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.http\4.4.0\ref\netstandard2.0\System.ServiceModel.Http.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.nettcp\4.4.0\ref\netstandard2.0\System.ServiceModel.NetTcp.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.primitives\4.4.0\ref\netstandard2.0\System.ServiceModel.Primitives.dll; -C:\Users\MarkLocal\.nuget\packages\system.servicemodel.security\4.4.0\ref\netstandard2.0\System.ServiceModel.Security.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ServiceModel.Web.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ServiceProcess.dll; -C:\Users\MarkLocal\.nuget\packages\system.serviceprocess.servicecontroller\4.4.0\ref\netstandard2.0\System.ServiceProcess.ServiceController.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.text.encoding.codepages\4.4.0\ref\netstandard2.0\System.Text.Encoding.CodePages.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.Encoding.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.Encoding.Extensions.dll; -C:\Users\MarkLocal\AppData\Local\Microsoft\dotnet\sdk\NuGetFallbackFolder\system.text.encodings.web\4.4.0\lib\netstandard2.0\System.Text.Encodings.Web.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Text.RegularExpressions.dll; -C:\Users\MarkLocal\.nuget\packages\system.threading.accesscontrol\4.4.0\ref\netstandard2.0\System.Threading.AccessControl.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Overlapped.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Dataflow.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Extensions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Tasks.Parallel.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Thread.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.ThreadPool.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Threading.Timer.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Transactions.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Transactions.Local.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.ValueTuple.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Web.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Web.HttpUtility.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Windows.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.Linq.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.ReaderWriter.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.Serialization.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XDocument.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XmlDocument.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XmlSerializer.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XPath.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\System.Xml.XPath.XDocument.dll; -C:\Users\MarkLocal\.nuget\packages\microsoft.netcore.app\2.0.5\ref\netcoreapp2.0\WindowsBase.dll; From ca81f0a7d0250e335bb330d6593a6166e2ba625a Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Tue, 23 Jan 2018 08:06:26 -0600 Subject: [PATCH 10/11] Address PR Feedback --- .../WebCmdlets.Tests.ps1 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 index 7892a329cc3..e9c467b5a09 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 @@ -1098,6 +1098,13 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { } Context "Multipart/form-data Tests" { + <# + Content-Type request headers for multipart/form-data appear as: + multipart/form-data; boundary="0ab0cb90-f01b-4c15-bd4d-53d073efcc1d" + MultipartFormDataContent sets a random GUID for the boundary before submitting the request + to the remote endpoint. Tests in this context for Content-Type match 'multipart/form-data' + as we do not have access to the random GUID. + #> BeforeAll { $file1Name = "testfile1.txt" $file1Path = Join-Path $testdrive $file1Name @@ -2018,6 +2025,13 @@ Describe "Invoke-RestMethod tests" -Tags "Feature" { } Context "Multipart/form-data Tests" { + <# + Content-Type request headers for multipart/form-data appear as: + multipart/form-data; boundary="0ab0cb90-f01b-4c15-bd4d-53d073efcc1d" + MultipartFormDataContent sets a random GUID for the boundary before submitting the request + to the remote endpoint. Tests in this context for Content-Type match 'multipart/form-data' + as we do not have access to the random GUID. + #> BeforeAll { $file1Name = "testfile1.txt" $file1Path = Join-Path $testdrive $file1Name From 9e7832316c51ff4e49827b4b273aa107b99ae744 Mon Sep 17 00:00:00 2001 From: Mark Kraus Date: Wed, 24 Jan 2018 03:44:01 -0600 Subject: [PATCH 11/11] [feature] Address PR Feedback --- .../utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs | 2 +- .../Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs index 0a0b5b49943..748732d7c6b 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs @@ -307,7 +307,7 @@ public virtual string CustomMethod public virtual object Body { get; set; } /// - /// Dictionary for use with RFC-7578 multipart\form-data submissions. + /// Dictionary for use with RFC-7578 multipart/form-data submissions. /// Keys are form fields and their respective values are form values. /// A value may be a collection of form values or single form value. /// diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 index e9c467b5a09..05356b2edf8 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 @@ -1105,6 +1105,10 @@ Describe "Invoke-WebRequest tests" -Tags "Feature" { to the remote endpoint. Tests in this context for Content-Type match 'multipart/form-data' as we do not have access to the random GUID. #> + <# + Kestrel/ASP.NET inconsistently renders the new line for uploaded text files. + File content tests in this context use match as a workaround. + #> BeforeAll { $file1Name = "testfile1.txt" $file1Path = Join-Path $testdrive $file1Name @@ -2032,6 +2036,10 @@ Describe "Invoke-RestMethod tests" -Tags "Feature" { to the remote endpoint. Tests in this context for Content-Type match 'multipart/form-data' as we do not have access to the random GUID. #> + <# + Kestrel/ASP.NET inconsistently renders the new line for uploaded text files. + File content tests in this context use match as a workaround. + #> BeforeAll { $file1Name = "testfile1.txt" $file1Path = Join-Path $testdrive $file1Name