Skip to content

Commit c16f8bb

Browse files
committed
using assert.istype
1 parent f4d5707 commit c16f8bb

File tree

1 file changed

+78
-7
lines changed

1 file changed

+78
-7
lines changed

tests/A2A.UnitTests/Models/SecuritySchemeTests.cs

Lines changed: 78 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,13 @@ public void ApiKeySecurityScheme_SerializesAndDeserializesCorrectly()
5252

5353
// Act
5454
var json = JsonSerializer.Serialize(scheme, s_jsonOptions);
55-
var deserialized = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions) as ApiKeySecurityScheme;
55+
var d = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions);
5656

5757
// Assert
5858
Assert.Contains("\"type\": \"apiKey\"", json);
5959
Assert.Contains("\"description\":", json);
60+
61+
var deserialized = Assert.IsType<ApiKeySecurityScheme>(d);
6062
Assert.NotNull(deserialized);
6163
Assert.Equal("API key for authentication", deserialized.Description);
6264
Assert.Equal("X-API-Key", deserialized.Name);
@@ -71,11 +73,13 @@ public void HttpAuthSecurityScheme_SerializesAndDeserializesCorrectly()
7173

7274
// Act
7375
var json = JsonSerializer.Serialize(scheme, s_jsonOptions);
74-
var deserialized = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions) as HttpAuthSecurityScheme;
76+
var d = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions);
7577

7678
// Assert
7779
Assert.Contains("\"type\": \"http\"", json);
7880
Assert.DoesNotContain("\"description\"", json);
81+
82+
var deserialized = Assert.IsType<HttpAuthSecurityScheme>(d);
7983
Assert.NotNull(deserialized);
8084
Assert.Equal("bearer", deserialized.Scheme);
8185
Assert.Null(deserialized.Description);
@@ -93,11 +97,53 @@ public void OAuth2SecurityScheme_SerializesAndDeserializesCorrectly()
9397

9498
// Act
9599
var json = JsonSerializer.Serialize(scheme, s_jsonOptions);
96-
var deserialized = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions) as OAuth2SecurityScheme;
100+
var d = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions);
97101

98102
// Assert
99-
Assert.Contains("\"type\": \"oauth2\"", json);
100103
Assert.Contains("\"description\": \"OAuth2 authentication\"", json);
104+
105+
var deserialized = Assert.IsType<OAuth2SecurityScheme>(d); Assert.Contains("\"type\": \"oauth2\"", json);
106+
Assert.NotNull(deserialized);
107+
Assert.Equal("OAuth2 authentication", deserialized.Description);
108+
Assert.NotNull(deserialized.Flows);
109+
Assert.Null(deserialized.Flows.ClientCredentials);
110+
Assert.Null(deserialized.Flows.Implicit);
111+
Assert.Null(deserialized.Flows.AuthorizationCode);
112+
Assert.NotNull(deserialized.Flows.Password);
113+
Assert.Equal("https://example.com/token", deserialized.Flows.Password.TokenUrl.ToString());
114+
Assert.NotNull(deserialized.Flows.Password.Scopes);
115+
Assert.Equal(2, deserialized.Flows.Password.Scopes.Count);
116+
Assert.Contains("read", deserialized.Flows.Password.Scopes.Keys);
117+
Assert.Contains("write", deserialized.Flows.Password.Scopes.Keys);
118+
Assert.Equal("Read access", deserialized.Flows.Password.Scopes["read"]);
119+
Assert.Equal("Write access", deserialized.Flows.Password.Scopes["write"]);
120+
}
121+
122+
[Fact]
123+
public void OAuth2SecurityScheme_DeserializesFromRawJsonCorrectly()
124+
{
125+
// Arrange
126+
var rawJson = """
127+
{
128+
"type": "oauth2",
129+
"description": "OAuth2 authentication",
130+
"flows": {
131+
"password": {
132+
"tokenUrl": "https://example.com/token",
133+
"scopes": {
134+
"read": "Read access",
135+
"write": "Write access"
136+
}
137+
}
138+
}
139+
}
140+
""";
141+
142+
// Act
143+
var d = JsonSerializer.Deserialize<SecurityScheme>(rawJson, s_jsonOptions);
144+
145+
// Assert
146+
var deserialized = Assert.IsType<OAuth2SecurityScheme>(d);
101147
Assert.NotNull(deserialized);
102148
Assert.Equal("OAuth2 authentication", deserialized.Description);
103149
Assert.NotNull(deserialized.Flows);
@@ -122,11 +168,13 @@ public void OpenIdConnectSecurityScheme_SerializesAndDeserializesCorrectly()
122168

123169
// Act
124170
var json = JsonSerializer.Serialize(scheme, s_jsonOptions);
125-
var deserialized = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions) as OpenIdConnectSecurityScheme;
171+
var d = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions);
126172

127173
// Assert
128174
Assert.Contains("\"type\": \"openIdConnect\"", json);
129175
Assert.Contains("\"description\": \"OpenID Connect authentication\"", json);
176+
177+
var deserialized = Assert.IsType<OpenIdConnectSecurityScheme>(d);
130178
Assert.NotNull(deserialized);
131179
Assert.Equal("OpenID Connect authentication", deserialized.Description);
132180
Assert.Equal("https://example.com/.well-known/openid_configuration", deserialized.OpenIdConnectUrl.ToString());
@@ -140,10 +188,33 @@ public void MutualTlsSecurityScheme_DeserializesFromBaseSecurityScheme()
140188

141189
// Act
142190
var json = JsonSerializer.Serialize(scheme, s_jsonOptions);
143-
var deserialized = JsonSerializer.Deserialize<SecurityScheme>(json);
191+
var d = JsonSerializer.Deserialize<SecurityScheme>(json, s_jsonOptions);
144192

145193
// Assert
146-
Assert.IsType<MutualTlsSecurityScheme>(deserialized);
194+
var deserialized = Assert.IsType<MutualTlsSecurityScheme>(d);
195+
Assert.NotNull(deserialized);
147196
Assert.Equal("Mutual TLS authentication", deserialized.Description);
148197
}
198+
199+
[Fact]
200+
public void OpenIdConnectSecurityScheme_DeserializesFromRawJsonCorrectly()
201+
{
202+
// Arrange
203+
var rawJson = """
204+
{
205+
"type": "openIdConnect",
206+
"description": "OpenID Connect authentication",
207+
"openIdConnectUrl": "https://example.com/.well-known/openid_configuration"
208+
}
209+
""";
210+
211+
// Act
212+
var d = JsonSerializer.Deserialize<SecurityScheme>(rawJson, s_jsonOptions);
213+
214+
// Assert
215+
var deserialized = Assert.IsType<OpenIdConnectSecurityScheme>(d);
216+
Assert.NotNull(deserialized);
217+
Assert.Equal("OpenID Connect authentication", deserialized.Description);
218+
Assert.Equal("https://example.com/.well-known/openid_configuration", deserialized.OpenIdConnectUrl.ToString());
219+
}
149220
}

0 commit comments

Comments
 (0)