Skip to content

Commit d00d8a3

Browse files
Merge pull request #3986 from StephenBonikowsky/stebon/3.1.0/cherrypicking
Unit test for SecurityTokenSerializer
2 parents e44be06 + 25bf438 commit d00d8a3

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
6+
using System;
7+
using System.Collections.Generic;
8+
using System.Collections.ObjectModel;
9+
using System.IdentityModel.Selectors;
10+
using System.IdentityModel.Tokens;
11+
using System.IO;
12+
using System.Xml;
13+
using Infrastructure.Common;
14+
using Xunit;
15+
16+
public class SecurityTokenSerializerTest
17+
{
18+
[WcfFact]
19+
public static void Methods_NonNullParam_InvokeAndReturn()
20+
{
21+
var xmlReader = XmlReader.Create(new MemoryStream());
22+
var xmlWriter = XmlWriter.Create(new MemoryStream());
23+
var dummyToken = new DummySecurityToken();
24+
var keyIdentifier = new SecurityKeyIdentifier();
25+
var keyIdentifierClause = new SecurityKeyIdentifierClauseImp("DummyClause");
26+
var sts = new SecurityTokenSerializerImp();
27+
28+
Assert.NotNull(sts);
29+
Assert.True(sts.CanReadKeyIdentifier(xmlReader));
30+
Assert.True(sts.CanReadKeyIdentifierClause(xmlReader));
31+
Assert.True(sts.CanReadToken(xmlReader));
32+
Assert.True(sts.CanWriteKeyIdentifier(keyIdentifier));
33+
Assert.True(sts.CanWriteKeyIdentifierClause(keyIdentifierClause));
34+
Assert.True(sts.CanWriteToken(dummyToken));
35+
36+
SecurityToken token = sts.ReadToken(xmlReader, SecurityTokenResolver.CreateDefaultSecurityTokenResolver(new ReadOnlyCollection<SecurityToken>(new List<SecurityToken>() { dummyToken}), false));
37+
SecurityKeyIdentifier identifier = sts.ReadKeyIdentifier(xmlReader);
38+
SecurityKeyIdentifierClause identifierClause = sts.ReadKeyIdentifierClause(xmlReader);
39+
Assert.IsType<DummySecurityToken>(token);
40+
Assert.IsType<SecurityKeyIdentifier>(identifier);
41+
Assert.IsType<SecurityKeyIdentifierClauseImp>(identifierClause);
42+
43+
sts.WriteToken(xmlWriter, dummyToken);
44+
sts.WriteKeyIdentifier(xmlWriter, keyIdentifier);
45+
sts.WriteKeyIdentifierClause(xmlWriter, keyIdentifierClause);
46+
Assert.True(sts.WriteTokenCoreCalled);
47+
Assert.True(sts.WriteKeyIdentifierCoreCalled);
48+
Assert.True(sts.WriteKeyIdentifierClauseCoreCalled);
49+
}
50+
51+
[WcfFact]
52+
public static void Methods_NullParam_Throws()
53+
{
54+
var sts = new SecurityTokenSerializerImp();
55+
56+
Assert.NotNull(sts);
57+
Assert.Throws<ArgumentNullException>(() => sts.CanReadKeyIdentifier(null));
58+
Assert.Throws<ArgumentNullException>(() => sts.CanReadKeyIdentifierClause(null));
59+
Assert.Throws<ArgumentNullException>(() => sts.CanReadToken(null));
60+
Assert.Throws<ArgumentNullException>(() => sts.CanWriteKeyIdentifier(null));
61+
Assert.Throws<ArgumentNullException>(() => sts.CanWriteKeyIdentifierClause(null));
62+
Assert.Throws<ArgumentNullException>(() => sts.CanWriteToken(null));
63+
Assert.Throws<ArgumentNullException>(() => sts.ReadToken(null, null));
64+
Assert.Throws<ArgumentNullException>(() => sts.ReadKeyIdentifier(null));
65+
Assert.Throws<ArgumentNullException>(() => sts.ReadKeyIdentifierClause(null));
66+
Assert.Throws<ArgumentNullException>(() => sts.WriteToken(null, null));
67+
Assert.Throws<ArgumentNullException>(() => sts.WriteKeyIdentifier(null, null));
68+
Assert.Throws<ArgumentNullException>(() => sts.WriteKeyIdentifierClause(null, null));
69+
Assert.False(sts.WriteTokenCoreCalled);
70+
Assert.False(sts.WriteKeyIdentifierCoreCalled);
71+
Assert.False(sts.WriteKeyIdentifierClauseCoreCalled);
72+
}
73+
}
74+
75+
public class SecurityTokenSerializerImp : SecurityTokenSerializer
76+
{
77+
public bool WriteTokenCoreCalled = false;
78+
public bool WriteKeyIdentifierCoreCalled = false;
79+
public bool WriteKeyIdentifierClauseCoreCalled = false;
80+
81+
protected override bool CanReadKeyIdentifierClauseCore(XmlReader reader)
82+
{
83+
return true;
84+
}
85+
86+
protected override bool CanReadKeyIdentifierCore(XmlReader reader)
87+
{
88+
return true;
89+
}
90+
91+
protected override bool CanReadTokenCore(XmlReader reader)
92+
{
93+
return true;
94+
}
95+
96+
protected override bool CanWriteKeyIdentifierClauseCore(SecurityKeyIdentifierClause keyIdentifierClause)
97+
{
98+
return true;
99+
}
100+
101+
protected override bool CanWriteKeyIdentifierCore(SecurityKeyIdentifier keyIdentifier)
102+
{
103+
return true;
104+
}
105+
106+
protected override bool CanWriteTokenCore(SecurityToken token)
107+
{
108+
return true;
109+
}
110+
111+
protected override SecurityKeyIdentifierClause ReadKeyIdentifierClauseCore(XmlReader reader)
112+
{
113+
return new SecurityKeyIdentifierClauseImp("DummyClause");
114+
}
115+
116+
protected override SecurityKeyIdentifier ReadKeyIdentifierCore(XmlReader reader)
117+
{
118+
return new SecurityKeyIdentifier();
119+
}
120+
121+
protected override SecurityToken ReadTokenCore(XmlReader reader, SecurityTokenResolver tokenResolver)
122+
{
123+
return new DummySecurityToken();
124+
}
125+
126+
protected override void WriteKeyIdentifierClauseCore(XmlWriter writer, SecurityKeyIdentifierClause keyIdentifierClause)
127+
{
128+
WriteKeyIdentifierClauseCoreCalled = true;
129+
}
130+
131+
protected override void WriteKeyIdentifierCore(XmlWriter writer, SecurityKeyIdentifier keyIdentifier)
132+
{
133+
WriteKeyIdentifierCoreCalled = true;
134+
}
135+
136+
protected override void WriteTokenCore(XmlWriter writer, SecurityToken token)
137+
{
138+
WriteTokenCoreCalled = true;
139+
}
140+
}
141+
142+
public class SecurityKeyIdentifierClauseImp : SecurityKeyIdentifierClause
143+
{
144+
public SecurityKeyIdentifierClauseImp(string clauseType) : base(clauseType)
145+
{
146+
}
147+
148+
public SecurityKeyIdentifierClauseImp(string clauseType, byte[] nonce, int length) : base(clauseType, nonce, length)
149+
{
150+
}
151+
}

0 commit comments

Comments
 (0)