StyleCop clean.
[dotnetoauth.git] / src / DotNetOpenAuth.Test / OpenId / Extensions / ProviderAuthenticationPolicy / PolicyRequestTests.cs
blob253d8ec576a684fd815d3e760929f7d75837e2ae
1 //-----------------------------------------------------------------------
2 // <copyright file="PolicyRequestTests.cs" company="Andrew Arnott">
3 // Copyright (c) Andrew Arnott. All rights reserved.
4 // </copyright>
5 //-----------------------------------------------------------------------
7 namespace DotNetOpenAuth.Test.OpenId.Extensions.ProviderAuthenticationPolicy {
8 using System;
9 using System.Collections.Generic;
10 using System.Globalization;
11 using System.Linq;
12 using System.Text;
13 using DotNetOpenAuth.Messaging;
14 using DotNetOpenAuth.Messaging.Reflection;
15 using DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy;
16 using Microsoft.VisualStudio.TestTools.UnitTesting;
18 [TestClass]
19 public class PolicyRequestTests : OpenIdTestBase {
20 [TestMethod]
21 public void Ctor() {
22 PolicyRequest req = new PolicyRequest();
23 Assert.IsNull(req.MaximumAuthenticationAge);
24 Assert.IsNotNull(req.PreferredPolicies);
25 Assert.AreEqual(0, req.PreferredPolicies.Count);
28 [TestMethod]
29 public void MaximumAuthenticationAgeTest() {
30 PolicyRequest req = new PolicyRequest();
31 req.MaximumAuthenticationAge = TimeSpan.FromHours(1);
32 Assert.IsNotNull(req.MaximumAuthenticationAge);
33 Assert.AreEqual(TimeSpan.FromHours(1), req.MaximumAuthenticationAge);
34 req.MaximumAuthenticationAge = null;
35 Assert.IsNull(req.MaximumAuthenticationAge);
38 [TestMethod]
39 public void AddPolicies() {
40 PolicyRequest resp = new PolicyRequest();
41 resp.PreferredPolicies.Add(AuthenticationPolicies.MultiFactor);
42 resp.PreferredPolicies.Add(AuthenticationPolicies.PhishingResistant);
43 Assert.AreEqual(2, resp.PreferredPolicies.Count);
44 Assert.AreEqual(AuthenticationPolicies.MultiFactor, resp.PreferredPolicies[0]);
45 Assert.AreEqual(AuthenticationPolicies.PhishingResistant, resp.PreferredPolicies[1]);
48 [TestMethod]
49 public void AddPolicyMultipleTimes() {
50 // Although this isn't really the desired behavior (we'd prefer to see an
51 // exception thrown), since we're using a List<string> internally we can't
52 // expect anything better (for now). But if this is ever fixed, by all means
53 // change this test to expect an exception or something else.
54 PolicyRequest resp = new PolicyRequest();
55 resp.PreferredPolicies.Add(AuthenticationPolicies.MultiFactor);
56 resp.PreferredPolicies.Add(AuthenticationPolicies.MultiFactor);
57 Assert.AreEqual(2, resp.PreferredPolicies.Count);
60 [TestMethod]
61 public void AddAuthLevelTypes() {
62 PolicyRequest req = new PolicyRequest();
63 req.PreferredAuthLevelTypes.Add(Constants.AssuranceLevels.NistTypeUri);
64 Assert.AreEqual(1, req.PreferredAuthLevelTypes.Count);
65 Assert.IsTrue(req.PreferredAuthLevelTypes.Contains(Constants.AssuranceLevels.NistTypeUri));
68 [TestMethod]
69 public void EqualsTest() {
70 PolicyRequest req = new PolicyRequest();
71 PolicyRequest req2 = new PolicyRequest();
72 Assert.AreEqual(req, req2);
73 Assert.AreNotEqual(req, null);
74 Assert.AreNotEqual(null, req);
76 // Test PreferredPolicies list comparison
77 req.PreferredPolicies.Add(AuthenticationPolicies.PhishingResistant);
78 Assert.AreNotEqual(req, req2);
79 req2.PreferredPolicies.Add(AuthenticationPolicies.MultiFactor);
80 Assert.AreNotEqual(req, req2);
81 req2.PreferredPolicies.Clear();
82 req2.PreferredPolicies.Add(AuthenticationPolicies.PhishingResistant);
83 Assert.AreEqual(req, req2);
85 // Test PreferredPolicies list comparison when that list is not in the same order.
86 req.PreferredPolicies.Add(AuthenticationPolicies.MultiFactor);
87 Assert.AreNotEqual(req, req2);
88 req2.PreferredPolicies.Insert(0, AuthenticationPolicies.MultiFactor);
89 Assert.AreEqual(req, req2);
91 // Test MaximumAuthenticationAge comparison.
92 req.MaximumAuthenticationAge = TimeSpan.FromHours(1);
93 Assert.AreNotEqual(req, req2);
94 req2.MaximumAuthenticationAge = req.MaximumAuthenticationAge;
95 Assert.AreEqual(req, req2);
97 // Test PreferredAuthLevelTypes comparison.
98 req.PreferredAuthLevelTypes.Add("authlevel1");
99 Assert.AreNotEqual(req, req2);
100 req2.PreferredAuthLevelTypes.Add("authlevel2");
101 Assert.AreNotEqual(req, req2);
102 req.PreferredAuthLevelTypes.Add("authlevel2");
103 req2.PreferredAuthLevelTypes.Add("authlevel1");
104 Assert.AreEqual(req, req2);
107 [TestMethod]
108 public void Serialize() {
109 PolicyRequest req = new PolicyRequest();
110 IMessageWithEvents reqEvents = req;
112 var fields = new MessageDictionary(req);
113 reqEvents.OnSending();
114 Assert.AreEqual(1, fields.Count);
115 Assert.IsTrue(fields.ContainsKey("preferred_auth_policies"));
116 Assert.AreEqual(string.Empty, fields["preferred_auth_policies"]);
118 req.MaximumAuthenticationAge = TimeSpan.FromHours(1);
119 reqEvents.OnSending();
120 Assert.AreEqual(2, fields.Count);
121 Assert.IsTrue(fields.ContainsKey("max_auth_age"));
122 Assert.AreEqual(TimeSpan.FromHours(1).TotalSeconds.ToString(CultureInfo.InvariantCulture), fields["max_auth_age"]);
124 req.PreferredPolicies.Add("http://pol1/");
125 reqEvents.OnSending();
126 Assert.AreEqual("http://pol1/", fields["preferred_auth_policies"]);
128 req.PreferredPolicies.Add("http://pol2/");
129 reqEvents.OnSending();
130 Assert.AreEqual("http://pol1/ http://pol2/", fields["preferred_auth_policies"]);
132 req.PreferredAuthLevelTypes.Add("http://authtype1/");
133 reqEvents.OnSending();
134 Assert.AreEqual(4, fields.Count);
135 Assert.IsTrue(fields.ContainsKey("auth_level.ns.alias1"));
136 Assert.AreEqual("http://authtype1/", fields["auth_level.ns.alias1"]);
137 Assert.IsTrue(fields.ContainsKey("preferred_auth_level_types"));
138 Assert.AreEqual("alias1", fields["preferred_auth_level_types"]);
140 req.PreferredAuthLevelTypes.Add(Constants.AssuranceLevels.NistTypeUri);
141 reqEvents.OnSending();
142 Assert.AreEqual(5, fields.Count);
143 Assert.IsTrue(fields.ContainsKey("auth_level.ns.alias2"));
144 Assert.AreEqual("http://authtype1/", fields["auth_level.ns.alias2"]);
145 Assert.IsTrue(fields.ContainsKey("auth_level.ns.nist"));
146 Assert.AreEqual(Constants.AssuranceLevels.NistTypeUri, fields["auth_level.ns.nist"]);
147 Assert.AreEqual("alias2 nist", fields["preferred_auth_level_types"]);