diff --git a/NuGetGallery.sln b/NuGetGallery.sln
index af638bc77a..099882cdfe 100644
--- a/NuGetGallery.sln
+++ b/NuGetGallery.sln
@@ -134,6 +134,26 @@ Global
{8AC9E39E-366C-47E5-80AE-38E71CD31386}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8AC9E39E-366C-47E5-80AE-38E71CD31386}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8AC9E39E-366C-47E5-80AE-38E71CD31386}.Release|x86.ActiveCfg = Release|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF}.Release|x86.ActiveCfg = Release|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -141,6 +161,8 @@ Global
GlobalSection(NestedProjects) = preSolution
{1DACF781-5CD0-4123-8BAC-CD385D864BE5} = {05998089-58F5-4A84-8C11-C5C6244A6F89}
{FDC76BEF-3360-45AC-A13E-AE8F14D343D5} = {05998089-58F5-4A84-8C11-C5C6244A6F89}
+ {0A6B1A52-4D26-4946-9DDD-416D01A1ADBF} = {05998089-58F5-4A84-8C11-C5C6244A6F89}
+ {8FB56455-C688-44AE-95F1-48FFCB199BFE} = {05998089-58F5-4A84-8C11-C5C6244A6F89}
{7F92C174-5310-4090-A6A3-3CC7C67C19D6} = {B9B19787-DCC0-489E-9173-36A32C6B6848}
{0EA1CBE8-DEFB-4D97-86E2-33657204C764} = {B9B19787-DCC0-489E-9173-36A32C6B6848}
{4405C24C-7F57-4826-831F-D5D7E139F02E} = {B9B19787-DCC0-489E-9173-36A32C6B6848}
diff --git a/PackageNames.csv b/PackageNames.csv
new file mode 100644
index 0000000000..ad528e639a
--- /dev/null
+++ b/PackageNames.csv
@@ -0,0 +1,3 @@
+PackageNames
+jQuery
+EntityFramework
diff --git a/tests/NuGetGallery.FunctionalTests/EditPackageTest.cs b/tests/NuGetGallery.FunctionalTests/EditPackageTest.cs
new file mode 100644
index 0000000000..7ec502e50d
--- /dev/null
+++ b/tests/NuGetGallery.FunctionalTests/EditPackageTest.cs
@@ -0,0 +1,90 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18051
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace NuGetGallery.FunctionalTests
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Text;
+ using Microsoft.VisualStudio.TestTools.WebTesting;
+ using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
+
+
+ [DeploymentItem("tests\\nugetgallery.functionaltests\\PackageNames.csv")]
+ [DataSource("PackageNames", "Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\PackageNames.csv", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, Microsoft.VisualStudio.TestTools.WebTesting.DataBindingSelectColumns.SelectOnlyBoundColumns, "PackageNames#csv")]
+ [DataBinding("PackageNames", "PackageNames#csv", "PackageNames", "PackageNames.PackageNames#csv.PackageNames")]
+ public class EditPackageTest : WebTest
+ {
+
+ public EditPackageTest()
+ {
+ this.PreAuthenticate = true;
+ }
+
+ public override IEnumerator GetRequestEnumerator()
+ {
+ // Initialize validation rules that apply to all requests in the WebTest
+ //if ((this.Context.ValidationLevel >= Microsoft.VisualStudio.TestTools.WebTesting.ValidationLevel.Low))
+ //{
+ // ValidateResponseUrl validationRule1 = new ValidateResponseUrl();
+ // this.ValidateResponse += new EventHandler(validationRule1.Validate);
+ //}
+ //if ((this.Context.ValidationLevel >= Microsoft.VisualStudio.TestTools.WebTesting.ValidationLevel.Low))
+ //{
+ // ValidationRuleResponseTimeGoal validationRule2 = new ValidationRuleResponseTimeGoal();
+ // validationRule2.Tolerance = 0D;
+ // this.ValidateResponseOnPageComplete += new EventHandler(validationRule2.Validate);
+ //}
+
+ //Do initial login to be able to perform package management.
+ WebTestRequest logonGet = AssertAndValidationHelper.GetLogonGetRequest();
+ yield return logonGet;
+ logonGet = null;
+ WebTestRequest logonPost = AssertAndValidationHelper.GetLogonPostRequest(this);
+ yield return logonPost;
+ logonPost = null;
+
+ WebTestRequest request1 = new WebTestRequest("https://staging.nuget.org/packages/SimpleTestPackageA/12.0.0/Edit");
+ request1.ExpectedResponseUrl = "https://staging.nuget.org/Users/Account/LogOn?ReturnUrl=%2fpackages%2fSimpleTestP" +
+ "ackageA%2f12.0.0%2fEdit";
+ // request1.QueryStringParameters.Add("Parameter1", this.Context["PackageNames.PackageNames#csv.PackageNames"].ToString());
+ ExtractHiddenFields extractionRule1 = new ExtractHiddenFields();
+ extractionRule1.Required = true;
+ extractionRule1.HtmlDecode = true;
+ extractionRule1.ContextParameterName = "1";
+ request1.ExtractValues += new EventHandler(extractionRule1.Extract);
+ yield return request1;
+ request1 = null;
+
+
+
+ WebTestRequest request3 = new WebTestRequest("https://staging.nuget.org/packages/SimpleTestPackageA/12.0.0/Edit");
+ request3.Method = "POST";
+ request3.ExpectedResponseUrl = "https://staging.nuget.org/packages/SimpleTestPackageA/12.0.0";
+ FormPostHttpBody request3Body = new FormPostHttpBody();
+ request3Body.FormPostParameters.Add("__RequestVerificationToken", this.Context["$HIDDEN1.__RequestVerificationToken"].ToString());
+ request3Body.FormPostParameters.Add("Edit.VersionTitle", "Edit Package Demo1");
+ request3Body.FormPostParameters.Add("Edit.Description", "My package description.");
+ request3Body.FormPostParameters.Add("Edit.Summary", "");
+ request3Body.FormPostParameters.Add("Edit.IconUrl", "");
+ request3Body.FormPostParameters.Add("Edit.ProjectUrl", "");
+ request3Body.FormPostParameters.Add("Edit.Authors", "bhuvana");
+ request3Body.FormPostParameters.Add("Edit.Copyright", "");
+ request3Body.FormPostParameters.Add("Edit.Tags", "demo");
+ request3Body.FormPostParameters.Add("Edit.ReleaseNotes", "");
+ request3.Body = request3Body;
+ WebTestRequest request3Dependent1 = new WebTestRequest("https://staging.nuget.org/api/v2/service-alert");
+ request3Dependent1.QueryStringParameters.Add("cachebust", "1377492797562", false, false);
+ request3.DependentRequests.Add(request3Dependent1);
+ yield return request3;
+ request3 = null;
+ }
+ }
+}
diff --git a/tests/NuGetGallery.FunctionalTests/NuGetGallery.FunctionalTests.csproj b/tests/NuGetGallery.FunctionalTests/NuGetGallery.FunctionalTests.csproj
index b1693d3424..417d19a52e 100644
--- a/tests/NuGetGallery.FunctionalTests/NuGetGallery.FunctionalTests.csproj
+++ b/tests/NuGetGallery.FunctionalTests/NuGetGallery.FunctionalTests.csproj
@@ -117,6 +117,9 @@
Always
+
+ PreserveNewest
+
diff --git a/tests/NuGetGallery.FunctionalTests/PackageNames.csv b/tests/NuGetGallery.FunctionalTests/PackageNames.csv
new file mode 100644
index 0000000000..ad528e639a
--- /dev/null
+++ b/tests/NuGetGallery.FunctionalTests/PackageNames.csv
@@ -0,0 +1,3 @@
+PackageNames
+jQuery
+EntityFramework
diff --git a/tests/NuGetGallery.FunctionalTests/WebUITests/PackageManagement/WebTest1.e4305e86-77a2-4d80-a0e4-432e0a405492.rec.webtestresult b/tests/NuGetGallery.FunctionalTests/WebUITests/PackageManagement/WebTest1.e4305e86-77a2-4d80-a0e4-432e0a405492.rec.webtestresult
new file mode 100644
index 0000000000..9adc6461fb
Binary files /dev/null and b/tests/NuGetGallery.FunctionalTests/WebUITests/PackageManagement/WebTest1.e4305e86-77a2-4d80-a0e4-432e0a405492.rec.webtestresult differ
diff --git a/tests/NuGetGallery.FunctionalTests/WebUITests/PackageManagement/WebTest1.webtest b/tests/NuGetGallery.FunctionalTests/WebUITests/PackageManagement/WebTest1.webtest
new file mode 100644
index 0000000000..8d637494f3
--- /dev/null
+++ b/tests/NuGetGallery.FunctionalTests/WebUITests/PackageManagement/WebTest1.webtest
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file