Commit 269f3061 269f306190c59535d84cf7323f8998147bbee875 by Christian Gerdes

Nytt webtest plugin ClientCertificatePlugin som sätter ett angivet client cert p…

…å alla request och automatiskt importerar det till certstore på maskinen om det inte finns.
1 parent 0f8854a0
1 using System.Reflection; 1 using System.Resources;
2 using System.Reflection;
2 using System.Runtime.CompilerServices; 3 using System.Runtime.CompilerServices;
3 using System.Runtime.InteropServices; 4 using System.Runtime.InteropServices;
4 5
...@@ -9,8 +10,8 @@ using System.Runtime.InteropServices; ...@@ -9,8 +10,8 @@ using System.Runtime.InteropServices;
9 [assembly: AssemblyDescription("Plugins for Web and Load Tests")] 10 [assembly: AssemblyDescription("Plugins for Web and Load Tests")]
10 [assembly: AssemblyConfiguration("")] 11 [assembly: AssemblyConfiguration("")]
11 [assembly: AssemblyCompany("LIGHTS IN LINE AB")] 12 [assembly: AssemblyCompany("LIGHTS IN LINE AB")]
12 [assembly: AssemblyProduct("Visual Studio 2010 Ultimate")] 13 [assembly: AssemblyProduct("Visual Studio 2015 Enterprise")]
13 [assembly: AssemblyCopyright("© LIGHTS IN LINE AB 2014")] 14 [assembly: AssemblyCopyright("© LIGHTS IN LINE AB 2016")]
14 [assembly: AssemblyTrademark("All Rights Reserved")] 15 [assembly: AssemblyTrademark("All Rights Reserved")]
15 [assembly: AssemblyCulture("")] 16 [assembly: AssemblyCulture("")]
16 17
...@@ -34,3 +35,5 @@ using System.Runtime.InteropServices; ...@@ -34,3 +35,5 @@ using System.Runtime.InteropServices;
34 // [assembly: AssemblyVersion("1.0.*")] 35 // [assembly: AssemblyVersion("1.0.*")]
35 [assembly: AssemblyVersion("1.3.0.0")] 36 [assembly: AssemblyVersion("1.3.0.0")]
36 [assembly: AssemblyFileVersion("1.3.0.0")] 37 [assembly: AssemblyFileVersion("1.3.0.0")]
38 [assembly: NeutralResourcesLanguage("sv-SE")]
39
......
...@@ -8,6 +8,7 @@ using Microsoft.VisualStudio.TestTools.LoadTesting; ...@@ -8,6 +8,7 @@ using Microsoft.VisualStudio.TestTools.LoadTesting;
8 using System.IO; 8 using System.IO;
9 using System.ComponentModel; 9 using System.ComponentModel;
10 using System.Text.RegularExpressions; 10 using System.Text.RegularExpressions;
11 using System.Security.Cryptography.X509Certificates;
11 12
12 namespace LIL_VSTT_Plugins 13 namespace LIL_VSTT_Plugins
13 { 14 {
...@@ -540,6 +541,178 @@ namespace LIL_VSTT_Plugins ...@@ -540,6 +541,178 @@ namespace LIL_VSTT_Plugins
540 } 541 }
541 } 542 }
542 543
544 /// <summary>
545 /// WebTest Client Certificate
546 /// </summary>
547 [DisplayName("Client Certificate")]
548 [Description("(C) Copyright 2016 LIGHTS IN LINE AB\r\nSätter webtestet att använda ett specifikt client cert för SSL. Certifikatet behöver inte installeras i certstore först.")]
549 public class ClientCertificatePlugin : WebTestPlugin
550 {
551 [DisplayName("Certificate Path")]
552 [Description("Sökvägen till certifikatfilen (P12/PFX med privat nyckel)")]
553 [DefaultValue("")]
554 public string pCertificatePath { get; set; }
555
556 [DisplayName("Certificate Path Parameter")]
557 [Description("Ange namn på parameter som ska användas för sökvägen till certifikatfilen (P12/PFX). Om parametern saknas eller är tom används Certificate Path")]
558 [DefaultValue("")]
559 public string pCertificatePathParameter { get; set; }
560
561 [DisplayName("Certificate Password")]
562 [Description("Ange lösenordet för att öppna certifikatfilen")]
563 [DefaultValue("")]
564 public string pCertificatePassword { get; set; }
565
566 [DisplayName("Certificate Password Parameter")]
567 [Description("Ange namn på parameter som ska användas för lösenordet till certifikatfilen. Om parametern saknas eller är tom används Certificate Password")]
568 [DefaultValue("")]
569 public string pCertificatePasswordParameter { get; set; }
570
571 [DisplayName("Log Certificate Data")]
572 [Description("Sätt till True om certifikatinfo ska loggas i början av varje test")]
573 [DefaultValue(false)]
574 public bool pDebug { get; set; }
575
576 [DisplayName("Install trusted certificates")]
577 [Description("Sätt till True om certifikat ska installeras automatiskt om det är giltigt")]
578 [DefaultValue(false)]
579 public bool pInstallTrusted { get; set; }
580
581 [DisplayName("Install untrusted certificates")]
582 [Description("Sätt till True om ogiltiga som giltiga certifikat ska installeras automatiskt")]
583 [DefaultValue(false)]
584 public bool pInstallUntrusted { get; set; }
585
586 private bool haveCert = false;
587 private X509Certificate myClientCert;
588
589 public override void PreWebTest(object sender, PreWebTestEventArgs e)
590 {
591 base.PreWebTest(sender, e);
592 String certPath, certPass;
593 // Ladda in certifikatet och sätt CertPolicy
594
595 if (!String.IsNullOrWhiteSpace(pCertificatePathParameter) && e.WebTest.Context.ContainsKey(pCertificatePathParameter) && !String.IsNullOrWhiteSpace(e.WebTest.Context[pCertificatePathParameter].ToString()) )
596 {
597 certPath = e.WebTest.Context[pCertificatePathParameter].ToString();
598 } else
599 {
600 certPath = pCertificatePath;
601 }
602
603 if (!String.IsNullOrWhiteSpace(pCertificatePasswordParameter) && e.WebTest.Context.ContainsKey(pCertificatePasswordParameter) && !String.IsNullOrWhiteSpace(e.WebTest.Context[pCertificatePasswordParameter].ToString()))
604 {
605 certPass = e.WebTest.Context[pCertificatePasswordParameter].ToString();
606 }
607 else
608 {
609 certPass = pCertificatePassword;
610 }
611
612 if(string.IsNullOrWhiteSpace(certPass))
613 {
614 // Cant continue, cert is missing
615 if (pDebug) e.WebTest.AddCommentToResult("No certificate loaded, since both Certificate Path and Certificate Path Parameter are empty");
616 return;
617 }
618
619 try {
620 myClientCert = new X509Certificate(certPath, certPass);
621 } catch (Exception ex)
622 {
623 if (pDebug) e.WebTest.AddCommentToResult("Exception during loading of certificate: " + certPath + " Exception: " + ex.Message);
624 return;
625 }
626
627 if(myClientCert == null) {
628 if (pDebug) e.WebTest.AddCommentToResult("Certificate File " + certPath + " could not be loaded.");
629 return;
630 } else
631 {
632 if (pDebug) e.WebTest.AddCommentToResult("Certificate File " + certPath);
633 }
634
635 if (!string.IsNullOrWhiteSpace(myClientCert.GetCertHashString()))
636 {
637 if (pDebug) e.WebTest.AddCommentToResult("Loaded client certificate for Subject: [" + myClientCert.Subject + "] Issued by: [" + myClientCert.Issuer + "] Expires: [" + myClientCert.GetExpirationDateString() + "]");
638
639 // Check if the certificate is trusted (i.e. chain can be validated)
640 bool myCertTrusted = false;
641 X509Certificate2 cer = new X509Certificate2(certPath, certPass, X509KeyStorageFlags.PersistKeySet);
642 cer.FriendlyName = "VSTT";
643 if (cer.Verify())
644 {
645 if (pDebug) e.WebTest.AddCommentToResult("Certificate is TRUSTED");
646 myCertTrusted = true;
647 } else
648 {
649 if (pDebug) e.WebTest.AddCommentToResult("Waring: Certificate is NOT TRUSTED by client. Might not be trusted on server either. Check that the Issuer/CA root and intermediary certificates are installed on the client and server.");
650 myCertTrusted = false;
651 }
652
653 // Check if we have a private key
654 if (!cer.HasPrivateKey)
655 {
656 // Cant use it without private key
657 if (pDebug) e.WebTest.AddCommentToResult("Certificate HAS NO PRIVATE KEY, cannot use it without one.");
658 return;
659 } else
660 {
661 if (pDebug) e.WebTest.AddCommentToResult("Certificate HAS PRIVATE KEY");
662 }
663
664 // Check that the certificate exists in the cert store
665 X509Store cuStore = new X509Store();
666 cuStore.Open(OpenFlags.ReadWrite);
667 if(cuStore.Certificates.Contains(cer)) {
668 if (pDebug) e.WebTest.AddCommentToResult("Certificate is INSTALLED");
669 } else
670 {
671 if (pDebug) e.WebTest.AddCommentToResult("Certificate is NOT INSTALLED");
672 if(pInstallTrusted && myCertTrusted || pInstallUntrusted)
673 {
674 // Try to install certificate
675 if (myCertTrusted || !myCertTrusted)
676 {
677 // Install in user store
678 try {
679 cuStore.Add(cer);
680 if (pDebug) e.WebTest.AddCommentToResult("Certificate HAS BEEN INSTALLED in the Windows Certificate Store");
681 } catch (Exception ex)
682 {
683 if (pDebug) e.WebTest.AddCommentToResult("Error: COULD NOT INSTALL in the Windows Certificate Store, Exception: " + ex.Message);
684 return;
685 }
686 }
687 }
688 }
689
690 // Set the PreRequest method to add the certificate on requests
691 haveCert = true;
692 if (pDebug) e.WebTest.AddCommentToResult("Certificate will be ADDED TO REQUESTS");
693 } else
694 {
695 if (pDebug) e.WebTest.AddCommentToResult("Certificate File " + certPath + " contains no SHA1 hash. Not using it.");
696 return;
697 }
698 }
699
700 public override void PreRequest(object sender, PreRequestEventArgs e)
701 {
702 base.PreRequest(sender, e);
703 if (haveCert)
704 {
705 if (!e.Request.ClientCertificates.Contains(myClientCert))
706 {
707 e.Request.ClientCertificates.Add(myClientCert);
708 }
709 e.WebTest.Context["Client Certificate"] = myClientCert.Subject;
710 } else
711 {
712 e.WebTest.Context["Client Certificate"] = "No certificate was added";
713 }
714 }
715 }
543 716
544 /* 717 /*
545 /// <summary> 718 /// <summary>
...@@ -549,6 +722,16 @@ namespace LIL_VSTT_Plugins ...@@ -549,6 +722,16 @@ namespace LIL_VSTT_Plugins
549 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFörklaring")] 722 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFörklaring")]
550 public class myPlugin : WebTestPlugin 723 public class myPlugin : WebTestPlugin
551 { 724 {
725 private string paramName;
726 [DisplayName("Parameter namn")]
727 [Description("Ange namnet på parametern i ditt webtest, tex TimeStampParameter1")]
728 [DefaultValue("TimeStampParameter1")]
729 public string ParamNameVal
730 {
731 get { return paramName; }
732 set { paramName = value; }
733 }
734
552 public override void PreWebTest(object sender, PreWebTestEventArgs e) 735 public override void PreWebTest(object sender, PreWebTestEventArgs e)
553 { 736 {
554 base.PreWebTest(sender, e); 737 base.PreWebTest(sender, e);
......
...@@ -46,6 +46,10 @@ ...@@ -46,6 +46,10 @@
46 <Prefer32Bit>false</Prefer32Bit> 46 <Prefer32Bit>false</Prefer32Bit>
47 </PropertyGroup> 47 </PropertyGroup>
48 <ItemGroup> 48 <ItemGroup>
49 <Reference Include="LIL_VSTT_Plugins, Version=1.3.0.0, Culture=neutral, processorArchitecture=MSIL">
50 <HintPath>..\LIL_VSTT_Plugins\bin\Debug\LIL_VSTT_Plugins.dll</HintPath>
51 <SpecificVersion>False</SpecificVersion>
52 </Reference>
49 <Reference Include="Microsoft.VisualStudio.QualityTools.LoadTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 53 <Reference Include="Microsoft.VisualStudio.QualityTools.LoadTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
50 <Private>False</Private> 54 <Private>False</Private>
51 </Reference> 55 </Reference>
...@@ -87,6 +91,10 @@ ...@@ -87,6 +91,10 @@
87 <None Include="WebTest21.webtest"> 91 <None Include="WebTest21.webtest">
88 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 92 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
89 </None> 93 </None>
94 <None Include="WebTest4.webtest">
95 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
96 <SubType>Designer</SubType>
97 </None>
90 <None Include="WebTest3.webtest"> 98 <None Include="WebTest3.webtest">
91 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 99 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
92 </None> 100 </None>
...@@ -97,12 +105,6 @@ ...@@ -97,12 +105,6 @@
97 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 105 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
98 </None> 106 </None>
99 </ItemGroup> 107 </ItemGroup>
100 <ItemGroup>
101 <ProjectReference Include="..\LIL_VSTT_Plugins\LIL_VSTT_Plugins.csproj">
102 <Project>{06A22593-601E-4386-917A-9835DE30E14E}</Project>
103 <Name>LIL_VSTT_Plugins</Name>
104 </ProjectReference>
105 </ItemGroup>
106 <Choose> 108 <Choose>
107 <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'"> 109 <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
108 <ItemGroup> 110 <ItemGroup>
......
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <WebTest Name="WebTest3" Id="5f8fe34b-e853-4a88-95cb-a8e963383b09" Owner="" Priority="2147483647" Enabled="True" CssProjectStructure="" CssIteration="" Timeout="0" WorkItemIds="" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" Description="" CredentialUserName="" CredentialPassword="" PreAuthenticate="True" Proxy="default" StopOnError="False" RecordedResultFile="" ResultsLocale=""> 2 <WebTest Name="WebTest3" Id="f36a8078-a24b-41a0-ac62-678ed0b4ac50" Owner="" Priority="2147483647" Enabled="True" CssProjectStructure="" CssIteration="" Timeout="0" WorkItemIds="" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" Description="" CredentialUserName="" CredentialPassword="" PreAuthenticate="True" Proxy="default" StopOnError="False" RecordedResultFile="" ResultsLocale="">
3 <Items> 3 <Items>
4 <Request Method="GET" Guid="359feba0-105f-4dbf-a630-32d640c10817" Version="1.1" Url="https://new.vinnarum.com/" ThinkTime="0" Timeout="300" ParseDependentRequests="False" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" IgnoreHttpStatusCode="False" /> 4 <Request Method="GET" Guid="359feba0-105f-4dbf-a630-32d640c10817" Version="1.1" Url="https://new.vinnarum.com/" ThinkTime="0" Timeout="300" ParseDependentRequests="False" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" IgnoreHttpStatusCode="False" />
5 <Request Method="GET" Guid="359feba0-105f-4dbf-a630-32d640c10817" Version="1.1" Url="https://new.vinnarum.com/" ThinkTime="0" Timeout="300" ParseDependentRequests="False" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" IgnoreHttpStatusCode="False" /> 5 <Request Method="GET" Guid="359feba0-105f-4dbf-a630-32d640c10817" Version="1.1" Url="https://new.vinnarum.com/" ThinkTime="0" Timeout="300" ParseDependentRequests="False" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" IgnoreHttpStatusCode="False" />
......
1 <?xml version="1.0" encoding="utf-8"?>
2 <WebTest Name="WebTest4" Id="5f8fe34b-e853-4a88-95cb-a8e963383b09" Owner="" Priority="2147483647" Enabled="True" CssProjectStructure="" CssIteration="" Timeout="0" WorkItemIds="" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" Description="" CredentialUserName="" CredentialPassword="" PreAuthenticate="True" Proxy="default" StopOnError="False" RecordedResultFile="" ResultsLocale="">
3 <Items>
4 <Request Method="POST" Guid="60e123b6-6947-47f0-85cb-473647f73db1" Version="1.1" Url="https://ppdmzkw2/nak1/na_epersondata/V2/namnsokning" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" IgnoreHttpStatusCode="False">
5 <StringHttpBody ContentType="text/xml" InsertByteOrderMark="False">PABzAG8AYQBwAGUAbgB2ADoARQBuAHYAZQBsAG8AcABlACAAeABtAGwAbgBzADoAcwBvAGEAcABlAG4AdgA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AeABtAGwAcwBvAGEAcAAuAG8AcgBnAC8AcwBvAGEAcAAvAGUAbgB2AGUAbABvAHAAZQAvACIAIAB4AG0AbABuAHMAOgB4AHMAaQA9ACIAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwAuAG8AcgBnAC8AMgAwADAAMQAvAFgATQBMAFMAYwBoAGUAbQBhAC0AaQBuAHMAdABhAG4AYwBlACIAIAB4AG0AbABuAHMAOgB2ADEAPQAiAGgAdAB0AHAAOgAvAC8AeABtAGwAcwAuAHMAawBhAHQAdABlAHYAZQByAGsAZQB0AC4AcwBlAC8AcwBlAC8AcwBrAGEAdAB0AGUAdgBlAHIAawBlAHQALwBmAG8AbABrAGIAbwBrAGYAbwByAGkAbgBnAC8AbgBhAC8AZQBwAGUAcgBzAG8AbgBkAGEAdABhAC8AVgAxACIAPgANAAoAIAAgADwAcwBvAGEAcABlAG4AdgA6AEgAZQBhAGQAZQByACAALwA+AA0ACgAgACAAPABzAG8AYQBwAGUAbgB2ADoAQgBvAGQAeQA+AA0ACgAgACAAIAAgADwAdgAxADoATgBhAG0AbgBzAG8AawBuAGkAbgBnAFIAZQBxAHUAZQBzAHQAPgANAAoAIAAgACAAIAAgACAAPAB2ADEAOgBCAGUAcwB0AGEAbABsAG4AaQBuAGcAPgANAAoAIAAgACAAIAAgACAAIAAgADwAdgAxADoATwByAGcATgByAD4AMQA2ADIAMAAyADEAMAAwADQANwA0ADgAPAAvAHYAMQA6AE8AcgBnAE4AcgA+AA0ACgAgACAAIAAgACAAIAAgACAAPAB2ADEAOgBCAGUAcwB0AGEAbABsAG4AaQBuAGcAcwBJAGQAPgAwADAAMAAwADAAMAA3ADkALQBGAE8AMAAxAC0AMAAwADAAMQA8AC8AdgAxADoAQgBlAHMAdABhAGwAbABuAGkAbgBnAHMASQBkAD4ADQAKACAAIAAgACAAIAAgADwALwB2ADEAOgBCAGUAcwB0AGEAbABsAG4AaQBuAGcAPgANAAoAIAAgACAAIAAgACAAPAB2ADEAOgBTAG8AawB2AGkAbABsAGsAbwByAE4AYQBtAG4APgANAAoAIAAgACAAIAAgACAAIAAgADwAdgAxADoAQQBkAHIAZQBzAHMAPgBNAEEARwBBAFMASQBOAFMARwBBAFQAQQBOACAANQAgAEEAIABMAEcASAAgADEAMAAwADMAPAAvAHYAMQA6AEEAZAByAGUAcwBzAD4ADQAKACAAIAAgACAAIAAgACAAIAA8AHYAMQA6AEUAZgB0AGUAcgBNAGUAbABsAGEAbgBOAGEAbQBuAD4ATgB1AHQAZQBtAGIAZQBpADwALwB2ADEAOgBFAGYAdABlAHIATQBlAGwAbABhAG4ATgBhAG0AbgA+AA0ACgAgACAAIAAgACAAIAAgACAAPAB2ADEAOgBGAG8AZABlAGwAcwBlAHQAaQBkAEYAcgBvAG0AIAB4AHMAaQA6AG4AaQBsAD0AIgB0AHIAdQBlACIAPgA8AC8AdgAxADoARgBvAGQAZQBsAHMAZQB0AGkAZABGAHIAbwBtAD4ADQAKACAAIAAgACAAIAAgACAAIAA8AHYAMQA6AEYAbwBkAGUAbABzAGUAdABpAGQAVABvAG0AIAB4AHMAaQA6AG4AaQBsAD0AIgB0AHIAdQBlACIAPgA8AC8AdgAxADoARgBvAGQAZQBsAHMAZQB0AGkAZABUAG8AbQA+AA0ACgAgACAAIAAgACAAIAAgACAAPAB2ADEAOgBGAG8AcgBuAGEAbQBuAD4AQQBiAGQAaQBrAGgAYQBkAGUAcgAgAE0AbwBoAGEAbQBlAGQAPAAvAHYAMQA6AEYAbwByAG4AYQBtAG4APgANAAoAIAAgACAAIAAgACAAIAAgADwAdgAxADoASwBvAG4AIAB4AHMAaQA6AG4AaQBsAD0AIgB0AHIAdQBlACIAPgA8AC8AdgAxADoASwBvAG4APgANAAoAIAAgACAAIAAgACAAIAAgADwAdgAxADoAUABvAHMAdABuAHUAbQBtAGUAcgBGAHIAbwBtACAAeABzAGkAOgBuAGkAbAA9ACIAdAByAHUAZQAiAD4APAAvAHYAMQA6AFAAbwBzAHQAbgB1AG0AbQBlAHIARgByAG8AbQA+AA0ACgAgACAAIAAgACAAIAAgACAAPAB2ADEAOgBQAG8AcwB0AG4AdQBtAG0AZQByAFQAbwBtACAAeABzAGkAOgBuAGkAbAA9ACIAdAByAHUAZQAiAD4APAAvAHYAMQA6AFAAbwBzAHQAbgB1AG0AbQBlAHIAVABvAG0APgANAAoAIAAgACAAIAAgACAAIAAgADwAdgAxADoAUABvAHMAdABvAHIAdAA+ADwALwB2ADEAOgBQAG8AcwB0AG8AcgB0AD4ADQAKACAAIAAgACAAIAAgADwALwB2ADEAOgBTAG8AawB2AGkAbABsAGsAbwByAE4AYQBtAG4APgANAAoAIAAgACAAIAA8AC8AdgAxADoATgBhAG0AbgBzAG8AawBuAGkAbgBnAFIAZQBxAHUAZQBzAHQAPgANAAoAIAAgADwALwBzAG8AYQBwAGUAbgB2ADoAQgBvAGQAeQA+AA0ACgA8AC8AcwBvAGEAcABlAG4AdgA6AEUAbgB2AGUAbABvAHAAZQA+AA==</StringHttpBody>
6 </Request>
7 </Items>
8 <WebTestPlugins>
9 <WebTestPlugin Classname="LIL_VSTT_Plugins.ServiceManagerWebTestPlugin, LIL_VSTT_Plugins, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="Service Manager Config" Description="(C) Copyright 2015 LIGHTS IN LINE AB&#xD;&#xA;Sätter config värden i Service Manager instansen för hela testet.">
10 <RuleParameters>
11 <RuleParameter Name="exp100" Value="True" />
12 <RuleParameter Name="maxIdle" Value="100" />
13 <RuleParameter Name="keepAlive" Value="False" />
14 <RuleParameter Name="timeOut" Value="5000" />
15 <RuleParameter Name="interVal" Value="1000" />
16 <RuleParameter Name="useNagle" Value="False" />
17 <RuleParameter Name="useTls12" Value="True" />
18 </RuleParameters>
19 </WebTestPlugin>
20 <WebTestPlugin Classname="LIL_VSTT_Plugins.ClientCertificatePlugin, LIL_VSTT_Plugins, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="Client Certificate" Description="(C) Copyright 2016 LIGHTS IN LINE AB&#xD;&#xA;Sätter webtestet att använda ett specifikt client cert för SSL. Certifikatet behöver inte installeras i certstore först.">
21 <RuleParameters>
22 <RuleParameter Name="pCertificatePath" Value="U:\projekt\2015\Folke - flapp\SoapUI\kommunA.p12" />
23 <RuleParameter Name="pCertificatePathParameter" Value="" />
24 <RuleParameter Name="pCertificatePassword" Value="3129445131123535" />
25 <RuleParameter Name="pCertificatePasswordParameter" Value="" />
26 <RuleParameter Name="pDebug" Value="False" />
27 <RuleParameter Name="pInstallTrusted" Value="True" />
28 <RuleParameter Name="pInstallUntrusted" Value="True" />
29 </RuleParameters>
30 </WebTestPlugin>
31 </WebTestPlugins>
32 </WebTest>
...\ No newline at end of file ...\ No newline at end of file