public void GetStoreVersion(TimeSpan?timeout = null) { bool conti = false; bool hasFiltered = false; do { hasFiltered = false; List <ManagedEvent> tmp = expectClientRequest(timeout); List <ManagedEvent> results = null; hasFiltered = filterIgnored(tmp, out results); if (results.Count > 1) { testSite.Assert.Fail("too many requests"); } foreach (ManagedEvent e in results) { if (e.ParsedHttpRequest != null) { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == Constraints.StoreUrl.ToLower() && e.ParsedHttpRequest.Method == HttpRequest.HttpMethod.GET) { HttpResponse res = ValidationModel.VerifyRequest(results[0].ParsedHttpRequest); //HttpResponse res = new HttpResponse(System.Net.HttpStatusCode.OK); //if (EnvironmentConfig.TestDeployment) //{ // //// ecxpected a array // if (initialed) // { // res = new HttpResponse(System.Net.HttpStatusCode.OK); // StoreVersion ver = new StoreVersion(); // ver.key = EnvironmentConfig.SUTConfigEntryKey; // ver.version = 0; // res.Body = "[" + ver.ToString() + "]"; // res.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, res.Body.Length.ToString()); // } //} sts.SendMessage(results[0].Sender, Encoding.UTF8.GetBytes(res.ToString())); return; } else { testSite.Assert.Fail("Failed to expect Get Data store version request"); } } else { conti = true; } } } while (conti || hasFiltered); }
protected override void TestInitialize() { base.TestInitialize(); sutAdapter = BaseTestSite.GetAdapter <ISUTControlAdapter>(); EnvironmentConfig.LoadParameters(BaseTestSite); server = new TestServer(); server.Initialize(BaseTestSite); bool isDeploy = EnvironmentConfig.TestDeployment; StackTrace trace = new System.Diagnostics.StackTrace(); StackFrame[] frames = trace.GetFrames(); ValidationModel.Initialize(BaseTestSite, isDeploy); ValidationModel.Reset(); }
public void GetRelyingPartyTrusts(TimeSpan?timeout = null) { bool conti = false; bool hasFiltered = false; do { hasFiltered = false; List <ManagedEvent> tmp = expectClientRequest(timeout); List <ManagedEvent> results = null; hasFiltered = filterIgnored(tmp, out results); if (results.Count > 1) { testSite.Assert.Fail("too many requests"); } foreach (ManagedEvent e in results) { if (e.ParsedHttpRequest != null) { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == Constraints.RelyingPartyTrustUrl.ToLower() && e.ParsedHttpRequest.Method == HttpRequest.HttpMethod.GET) { HttpResponse res = ValidationModel.VerifyRequest(results[0].ParsedHttpRequest); //if (EnvironmentConfig.TestDeployment) //{ // res = new HttpResponse(System.Net.HttpStatusCode.OK); // ProxyTrust pt = new ProxyTrust(); // pt.Identifier = Constraints.DefaultProxyRelyingPartyTrustIdentifier; // res.Body = pt.ToString(); // res.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, res.Body.Length.ToString()); // } //} sts.SendMessage(results[0].Sender, Encoding.UTF8.GetBytes(res.ToString())); return; } else { testSite.Assert.Fail("Failed to expect Get Proxy Trust identifer request"); } } else { conti = true; } } } while (conti || hasFiltered); }
public void GetSTSConfiguration(TimeSpan?timeout = null) { bool conti = false; bool hasFiltered = false; do { hasFiltered = false; List <ManagedEvent> tmp = expectClientRequest(timeout); List <ManagedEvent> results = null; hasFiltered = filterIgnored(tmp, out results); if (results.Count > 1) { testSite.Assert.Fail("too many requests"); } foreach (ManagedEvent e in results) { if (e.ParsedHttpRequest != null) { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == Constraints.GetSTSConfigurationUrl.ToLower() && e.ParsedHttpRequest.Method == HttpRequest.HttpMethod.GET) { HttpResponse res = ValidationModel.VerifyRequest(results[0].ParsedHttpRequest); //HttpResponse res = new HttpResponse(System.Net.HttpStatusCode.OK); //STSConfiguration conf = createValidStsConfigurationResponse(); //res.Body = Utility.Encode(conf.ToString()); //res.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, res.Body.Length.ToString()); sts.SendMessage(results[0].Sender, Encoding.UTF8.GetBytes(res.ToString())); return; } else { testSite.Assert.Fail("Failed to expect Get STS Configuration request"); } } else { conti = true; } } } while (conti || hasFiltered); }
public void PostProxyGlobalConfiguration(TimeSpan?timeout = null) { bool conti = false; bool hasFiltered = false; do { hasFiltered = false; List <ManagedEvent> tmp = expectClientRequest(timeout); List <ManagedEvent> results = null; hasFiltered = filterIgnored(tmp, out results); if (results.Count > 1) { testSite.Assert.Fail("too many requests"); } foreach (ManagedEvent e in results) { if (e.ParsedHttpRequest != null) { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == (Constraints.StoreUrl.ToLower() + "/" + (EnvironmentConfig.IsWin2016 ? EnvironmentConfig.SUTConfigEntryKey_2016 : EnvironmentConfig.SUTConfigEntryKey_2012R2).ToLower()) && e.ParsedHttpRequest.Method == HttpRequest.HttpMethod.POST) { HttpResponse res = ValidationModel.VerifyRequest(results[0].ParsedHttpRequest); sts.SendMessage(results[0].Sender, Encoding.UTF8.GetBytes(res.ToString())); return; } else { testSite.Assert.Fail("Failed to expect Get Data store entry request"); } } else { conti = true; } } } while (conti || hasFiltered); }
public void GetFederationMetadata(TimeSpan?timeout = null) { bool conti = false; bool hasFiltered = false; do { hasFiltered = false; List <ManagedEvent> tmp = expectClientRequest(timeout); List <ManagedEvent> results = null; hasFiltered = filterIgnored(tmp, out results); if (results.Count > 1) { testSite.Assert.Fail("too many requests"); } foreach (ManagedEvent e in results) { if (e.ParsedHttpRequest != null) { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == Constraints.FederationMetadataUrl.ToLower() && e.ParsedHttpRequest.Method == HttpRequest.HttpMethod.GET) { ValidationModel.VerifyRequest(results[0].ParsedHttpRequest); string temp = null; using (System.IO.StreamReader sr = new System.IO.StreamReader(@"c:\temp\metadataresponse.txt")) { temp = sr.ReadToEnd(); } HttpResponse res = new HttpResponse(); res.Parse(temp); string tosend = res.ToString(); string[] frags = res.Body.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); //if (0 != string.Compare(tosend, temp)) //{ //} XmlDocument doc = new XmlDocument(); doc.LoadXml(frags[1]); string cert = doc.ChildNodes[0].ChildNodes[2].ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0].InnerText; X509Certificate2 cert2 = new X509Certificate2("c:\\sign.pfx", "123"); doc.ChildNodes[0].ChildNodes[2].ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0].InnerText = Convert.ToBase64String(cert2.GetRawCertData()); using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { doc.Save(ms); string newBody = frags[0] + "\r\n" + Encoding.UTF8.GetString(ms.ToArray()) + "\r\n" + frags[2] + "\r\n\r\n"; res.Body = newBody; } sts.SendMessage(results[0].Sender, Encoding.UTF8.GetBytes(tosend)); return; } else { testSite.Assert.Fail("Failed to expect Get Federation Metadata request"); } } else { conti = true; } } } while (conti || hasFiltered); }
public void PostProxyTrust(TimeSpan?timeout = null) { List <ManagedEvent> results = null; // 4 times means 1st unauthorizaed request with saparated body and then request with token and saparated body int maxTryTimes = 4; ManagedEvent cache = null; ManagedEvent req = null; do { results = expectClientRequest(timeout); bool wantToProcess = true; foreach (ManagedEvent mge in results) { ManagedEvent result = mge; if (!wantToProcess) { break; } if (result.ParsedHttpRequest == null && result.EventType == EventType.IncomingRequest && cache != null) { if (cache.ParsedHttpRequest.Body == null) { cache.ParsedHttpRequest.Body = ""; } cache.ParsedHttpRequest.Body += result.Text; if (int.Parse(cache.ParsedHttpRequest.GetHeaderFieldValue(System.Net.HttpRequestHeader.ContentLength)) <= cache.ParsedHttpRequest.Body.Length) { result = cache; cache = null; } } if (result.ParsedHttpRequest != null && result.ParsedHttpRequest.RequestUrl.Path.ToLower() == Microsoft.Protocols.TestTools.StackSdk.Identity.ADFSPIP.Constraints.ProxyTrustUrl.ToLower() && result.ParsedHttpRequest.Method == HttpRequest.HttpMethod.POST) { if (result.ParsedHttpRequest.Body == null) { string expect = result.ParsedHttpRequest.GetHeaderFieldValue(System.Net.HttpRequestHeader.Expect); if (expect != null && expect.ToLower() == "100-continue") { sts.SendMessage(result.Sender, Encoding.UTF8.GetBytes(new HttpResponse(System.Net.HttpStatusCode.Continue).ToString())); cache = result; } } else { wantToProcess = false; maxTryTimes = 0; req = result; break; } // } } else if (result.EventType != EventType.IncomingRequest) { testSite.Assert.Fail("Failed to expect Establish Trust request"); } } maxTryTimes--; } while (maxTryTimes > 0); HttpResponse res = ValidationModel.VerifyRequest(req.ParsedHttpRequest); sts.SendMessage(req.Sender, Encoding.UTF8.GetBytes(res.ToString())); }
public void GetProxyGlobalConfiguration(TimeSpan?timeout = null) { bool conti = false; bool hasFiltered = false; do { hasFiltered = false; List <ManagedEvent> tmp = expectClientRequest(timeout); List <ManagedEvent> results = null; hasFiltered = filterIgnored(tmp, out results); if (results.Count > 1) { testSite.Assert.Fail("too many requests"); } foreach (ManagedEvent e in results) { if (e.ParsedHttpRequest != null) { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == (Constraints.StoreUrl.ToLower() + "/" + (EnvironmentConfig.IsWin2016 ? EnvironmentConfig.SUTConfigEntryKey_2016 : EnvironmentConfig.SUTConfigEntryKey_2012R2).ToLower())) { HttpResponse res = ValidationModel.VerifyRequest(results[0].ParsedHttpRequest); //// we support return a specific configuration to test sequence //if (EnvironmentConfig.TestDeployment) //{ // if (initialed) // { // res = new HttpResponse(System.Net.HttpStatusCode.OK); // StoreEntry entry = new StoreEntry(); // entry.key = EnvironmentConfig.SUTConfigEntryKey; // entry.version = 0; // using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) // { // createGlobalConfiguration().Save(ms); // entry.value = Convert.ToBase64String(ms.ToArray()); // } // res.Body = entry.ToString(); // res.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, res.Body.Length.ToString()); // } // else // { // res = new HttpResponse(System.Net.HttpStatusCode.NotFound); // res.SetHeaderField(System.Net.HttpResponseHeader.ContentLength, "0"); // } //} sts.SendMessage(results[0].Sender, Encoding.UTF8.GetBytes(res.ToString())); return; } else { testSite.Assert.Fail("Failed to expect Get Data store entry request"); } } else { conti = true; } } } while (conti || hasFiltered); }
/// <summary> /// normally we will filter message not under test /// </summary> /// <param name="events"></param> /// <param name="ret"></param> /// <returns></returns> private bool filterIgnored(List <ManagedEvent> events, out List <ManagedEvent> ret) { ret = new List <ManagedEvent>(); foreach (ManagedEvent e in events) { if (e.ParsedHttpRequest != null) { bool isFiltered = false; foreach (string str in filterUrls) { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower().Contains(str.ToLower())) { isFiltered = true; break; } } if (isFiltered) { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == Constraints.RenewTrustUrl.ToLower()) { continue; } else if (EnvironmentConfig.TestDeployment) { } else { if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == Constraints.StoreUrl.ToLower() && e.ParsedHttpRequest.Method == HttpRequest.HttpMethod.GET) { HttpResponse res = ValidationModel.VerifyRequest(e.ParsedHttpRequest); sts.SendMessage(e.Sender, Encoding.UTF8.GetBytes(res.ToString())); continue; } else if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == (Constraints.StoreUrl.ToLower() + "/" + (EnvironmentConfig.IsWin2016 ? EnvironmentConfig.SUTConfigEntryKey_2016 : EnvironmentConfig.SUTConfigEntryKey_2012R2).ToLower()) && e.ParsedHttpRequest.Method == HttpRequest.HttpMethod.GET) { HttpResponse res = ValidationModel.VerifyRequest(e.ParsedHttpRequest); sts.SendMessage(e.Sender, Encoding.UTF8.GetBytes(res.ToString())); continue; } else if (e.ParsedHttpRequest.RequestUrl.Path.ToLower() == Constraints.GetSTSConfigurationUrl.ToLower() && e.ParsedHttpRequest.Method == HttpRequest.HttpMethod.GET) { HttpResponse res = ValidationModel.VerifyRequest(e.ParsedHttpRequest); sts.SendMessage(e.Sender, Encoding.UTF8.GetBytes(res.ToString())); continue; } else { } } } } ret.Add(e); } if (events.Count != ret.Count) { return(true); } else { return(false); } }