2 // KeyIdentifierTest.cs - NUnit Test Cases for KeyIdentifier
5 // Sebastien Pouliot (spouliot@motus.com)
7 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
10 using NUnit
.Framework
;
11 using Microsoft
.Web
.Services
.Security
;
15 namespace MonoTests
.MS
.Web
.Services
.Security
{
18 public class KeyIdentifierTest
: Assertion
{
20 private static byte[] array
= { 0x00 }
;
21 private const string ValueXml
= "<wsse:KeyIdentifier xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/07/secext\">AA==</wsse:KeyIdentifier>";
22 private const string ValueTypeXml
= "<wsse:KeyIdentifier xmlns:vt=\"http://www.go-mono.com/\" ValueType=\"vt:mono\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/07/secext\">AA==</wsse:KeyIdentifier>";
23 private const string WellKnownValueTypeXml
= "<wsse:KeyIdentifier ValueType=\"wsse:well-known\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/07/secext\">AA==</wsse:KeyIdentifier>";
24 private const string BadCustomValueTypeXml
= "<wsse:KeyIdentifier ValueType=\"custom\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/07/secext\">AA==</wsse:KeyIdentifier>";
27 public void ConstructorByteArray ()
29 KeyIdentifier ki
= new KeyIdentifier (array
);
30 Assert ("Value", (ki
.Value
[0] == array
[0]));
31 AssertNull ("ValueType", ki
.ValueType
);
35 [ExpectedException (typeof (ArgumentNullException
))]
36 public void ConstructorByteArrayNull ()
38 byte[] array
= null; // resolve ambiguity
39 KeyIdentifier ki
= new KeyIdentifier (array
);
42 private XmlQualifiedName
GetQName ()
44 return new XmlQualifiedName ("mono", "http://www.go-mono.com/");
48 public void ConstructorXmlQualifiedName ()
50 KeyIdentifier ki
= new KeyIdentifier (array
, GetQName ());
51 Assert ("Value", (ki
.Value
[0] == array
[0]));
52 AssertNotNull ("ValueType", ki
.ValueType
);
53 Assert ("ValueType.IsEmpty", !ki
.ValueType
.IsEmpty
);
54 AssertEquals ("ValueType.Name", "mono", ki
.ValueType
.Name
);
55 AssertEquals ("ValueType.Namespace", "http://www.go-mono.com/", ki
.ValueType
.Namespace
);
59 public void ConstructorXmlQualifiedNameNull ()
61 KeyIdentifier ki
= new KeyIdentifier (array
, null);
62 Assert ("Value", (ki
.Value
[0] == array
[0]));
63 AssertNull ("ValueType", ki
.ValueType
);
67 [ExpectedException (typeof (ArgumentNullException
))]
68 public void ConstructorXmlElementNull ()
70 XmlElement xel
= null; // resolve ambiguity
71 KeyIdentifier ki
= new KeyIdentifier (xel
);
75 [ExpectedException (typeof (ArgumentNullException
))]
76 public void ValueNull ()
78 KeyIdentifier ki
= new KeyIdentifier (array
);
83 public void ValueTypeNull ()
85 KeyIdentifier ki
= new KeyIdentifier (array
);
90 public void GetXml_ValueOnly ()
92 KeyIdentifier ki
= new KeyIdentifier (array
);
93 XmlDocument doc
= new XmlDocument ();
94 XmlElement xel
= ki
.GetXml (doc
);
95 AssertEquals ("GetXml_ValueOnly", ValueXml
, xel
.OuterXml
);
99 public void GetXml_ValueAndValueType ()
101 KeyIdentifier ki
= new KeyIdentifier (array
, GetQName ());
102 XmlDocument doc
= new XmlDocument ();
103 XmlElement xel
= ki
.GetXml (doc
);
104 AssertEquals ("GetXml_ValueAndValueType", ValueTypeXml
, xel
.OuterXml
);
108 public void GetXml_WellKnownValueType ()
110 KeyIdentifier ki
= new KeyIdentifier (array
, new XmlQualifiedName ("well-known", WSSecurity
.NamespaceURI
));
111 XmlDocument doc
= new XmlDocument ();
112 XmlElement xel
= ki
.GetXml (doc
);
113 AssertEquals ("GetXml_ValueAndValueType", WellKnownValueTypeXml
, xel
.OuterXml
);
117 [ExpectedException (typeof (ArgumentNullException
))]
118 public void GetXmlNull ()
120 KeyIdentifier ki
= new KeyIdentifier (array
);
125 public void LoadXml_Value ()
127 KeyIdentifier ki
= new KeyIdentifier (array
);
128 XmlDocument doc
= new XmlDocument ();
129 doc
.LoadXml (ValueXml
);
130 ki
.LoadXml (doc
.DocumentElement
);
132 XmlElement xel
= ki
.GetXml (doc
);
133 AssertEquals ("LoadXml_Value", ValueXml
, xel
.OuterXml
);
137 public void LoadXml_ValueType ()
139 KeyIdentifier ki
= new KeyIdentifier (array
);
140 XmlDocument doc
= new XmlDocument ();
141 doc
.LoadXml (ValueTypeXml
);
142 ki
.LoadXml (doc
.DocumentElement
);
144 XmlElement xel
= ki
.GetXml (doc
);
145 AssertEquals ("LoadXml_ValueType", ValueTypeXml
, xel
.OuterXml
);
149 public void LoadXml_WellKnownValueType ()
151 KeyIdentifier ki
= new KeyIdentifier (array
);
152 XmlDocument doc
= new XmlDocument ();
153 doc
.LoadXml (WellKnownValueTypeXml
);
154 ki
.LoadXml (doc
.DocumentElement
);
156 XmlElement xel
= ki
.GetXml (doc
);
157 AssertEquals ("LoadXml_ValueType", WellKnownValueTypeXml
, xel
.OuterXml
);
161 [ExpectedException (typeof (SecurityFormatException
))]
162 public void LoadXml_BadCustomValueType ()
164 KeyIdentifier ki
= new KeyIdentifier (array
);
165 XmlDocument doc
= new XmlDocument ();
166 doc
.LoadXml (BadCustomValueTypeXml
);
167 ki
.LoadXml (doc
.DocumentElement
);
169 XmlElement xel
= ki
.GetXml (doc
);
170 AssertEquals ("LoadXml_ValueType", BadCustomValueTypeXml
, xel
.OuterXml
);
174 [ExpectedException (typeof (ArgumentException
))]
175 public void LoadXml_BadLocalName ()
177 KeyIdentifier ki
= new KeyIdentifier (array
);
178 XmlDocument doc
= new XmlDocument ();
179 doc
.LoadXml ("<wsse:KeyId xmlns:vt=\"http://www.go-mono.com/\" ValueType=\"vt:mono\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/07/secext\">AA==</wsse:KeyId>");
180 ki
.LoadXml (doc
.DocumentElement
);
184 [ExpectedException (typeof (ArgumentException
))]
185 public void LoadXml_BadNamespace ()
187 KeyIdentifier ki
= new KeyIdentifier (array
);
188 XmlDocument doc
= new XmlDocument ();
189 doc
.LoadXml ("<wsse:KeyIdentifier xmlns:vt=\"http://www.go-mono.com/\" ValueType=\"vt:mono\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2202/07/secext\">AA==</wsse:KeyIdentifier>");
190 ki
.LoadXml (doc
.DocumentElement
);
194 [ExpectedException (typeof (ArgumentNullException
))]
195 public void LoadXmlNull ()
197 KeyIdentifier ki
= new KeyIdentifier (array
);