@@ -118,28 +118,70 @@ namespace {{testPackageName}}.Api {
118
118
exceptionMissingApiToken.Message);
119
119
}
120
120
121
- // /// <summary >
122
- // /// Test that the provided api token issuer is well-formed
123
- // /// </summary >
121
+ /// <summary >
122
+ /// Test that api token issuer value is normalized
123
+ /// </summary >
124
+ [Theory]
125
+ [InlineData(null, null)]
126
+ [InlineData("tokenissuer.fga.example", "https://tokenissuer.fga.example")]
127
+ [InlineData("http://tokenissuer.fga.example", "http://tokenissuer.fga.example")]
128
+ [InlineData("https://tokenissuer.fga.example", "https://tokenissuer.fga.example")]
129
+ public void ApiTokenIssuerIsNormalized(string issuer, string expected) {
130
+ var config = new CredentialsConfig() {
131
+ ClientId = " some-id" ,
132
+ ClientSecret = " some-secret" ,
133
+ ApiTokenIssuer = issuer,
134
+ ApiAudience = " some-audience" ,
135
+ } ;
136
+
137
+ Assert.Equal(expected, config.ApiTokenIssuer);
138
+ }
139
+
140
+ /// <summary >
141
+ /// Test that providing malformed token issuer should error
142
+ /// </summary >
124
143
[Fact]
125
- public void ValidApiTokenIssuerWellFormed () {
144
+ public void ApiTokenIssuerIsMalformed () {
126
145
var config = new Configuration.Configuration() {
127
146
ApiHost = _host,
128
147
Credentials = new Credentials() {
129
148
Method = CredentialsMethod.ClientCredentials,
130
149
Config = new CredentialsConfig() {
131
150
ClientId = " some-id" ,
132
151
ClientSecret = " some-secret" ,
133
- ApiTokenIssuer = " https ://tokenissuer.{{sampleApiDomain}} " ,
152
+ ApiTokenIssuer = " file ://tokenissuer.fga.example " ,
134
153
ApiAudience = " some-audience" ,
135
154
}
136
155
}
137
156
};
138
157
void ActionMalformedApiTokenIssuer() => config.EnsureValid();
139
158
var exception = Assert.Throws<FgaValidationError >(ActionMalformedApiTokenIssuer);
140
- Assert.Equal("Configuration.ApiTokenIssuer does not form a valid URI (https://https ://tokenissuer.{ {sampleApiDomain } } )", exception.Message);
159
+ Assert.Equal("Configuration.ApiTokenIssuer does not form a valid URI (https://file ://tokenissuer.fga.example )", exception.Message);
141
160
}
142
161
162
+ /// <summary >
163
+ /// Test that the provided api token issuer is well-formed
164
+ /// </summary >
165
+ [Theory]
166
+ [InlineData("tokenissuer.fga.example")]
167
+ [InlineData("http://tokenissuer.fga.example")]
168
+ [InlineData("https://tokenissuer.fga.example")]
169
+ public void ValidApiTokenIssuerWellFormed(string issuer) {
170
+ var config = new Configuration.Configuration() {
171
+ ApiHost = _host,
172
+ Credentials = new Credentials() {
173
+ Method = CredentialsMethod.ClientCredentials,
174
+ Config = new CredentialsConfig() {
175
+ ClientId = " some-id" ,
176
+ ClientSecret = " some-secret" ,
177
+ ApiTokenIssuer = issuer,
178
+ ApiAudience = " some-audience" ,
179
+ }
180
+ }
181
+ };
182
+ config.EnsureValid();
183
+ }
184
+
143
185
/// <summary >
144
186
/// Test that the authorization header is being sent
145
187
/// </summary >
@@ -295,7 +337,7 @@ namespace {{testPackageName}}.Api {
295
337
.SetupSequence<Task <HttpResponseMessage >>(
296
338
"SendAsync",
297
339
ItExpr.Is<HttpRequestMessage >(req =>
298
- req.RequestUri == new Uri($"https:// { config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
340
+ req.RequestUri == new Uri($"{ config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
299
341
req.Method == HttpMethod.Post &&
300
342
req.Content.Headers.ContentType.ToString().Equals("application/x-www-form-urlencoded")),
301
343
ItExpr.IsAny<CancellationToken >()
@@ -350,7 +392,7 @@ namespace {{testPackageName}}.Api {
350
392
"SendAsync",
351
393
Times.Exactly(1),
352
394
ItExpr.Is<HttpRequestMessage >(req =>
353
- req.RequestUri == new Uri($"https:// { config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
395
+ req.RequestUri == new Uri($"{ config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
354
396
req.Method == HttpMethod.Post &&
355
397
req.Content.Headers.ContentType.ToString().Equals("application/x-www-form-urlencoded")),
356
398
ItExpr.IsAny<CancellationToken >()
@@ -394,7 +436,7 @@ namespace {{testPackageName}}.Api {
394
436
.SetupSequence<Task <HttpResponseMessage >>(
395
437
"SendAsync",
396
438
ItExpr.Is<HttpRequestMessage >(req =>
397
- req.RequestUri == new Uri($"https:// { config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
439
+ req.RequestUri == new Uri($"{ config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
398
440
req.Method == HttpMethod.Post &&
399
441
req.Content.Headers.ContentType.ToString().Equals("application/x-www-form-urlencoded")),
400
442
ItExpr.IsAny<CancellationToken >()
@@ -449,7 +491,7 @@ namespace {{testPackageName}}.Api {
449
491
"SendAsync",
450
492
Times.Exactly(2),
451
493
ItExpr.Is<HttpRequestMessage >(req =>
452
- req.RequestUri == new Uri($"https:// { config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
494
+ req.RequestUri == new Uri($"{ config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
453
495
req.Method == HttpMethod.Post &&
454
496
req.Content.Headers.ContentType.ToString().Equals("application/x-www-form-urlencoded")),
455
497
ItExpr.IsAny<CancellationToken >()
@@ -493,7 +535,7 @@ namespace {{testPackageName}}.Api {
493
535
.SetupSequence<Task <HttpResponseMessage >>(
494
536
"SendAsync",
495
537
ItExpr.Is<HttpRequestMessage >(req =>
496
- req.RequestUri == new Uri($"https:// { config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
538
+ req.RequestUri == new Uri($"{ config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
497
539
req.Method == HttpMethod.Post &&
498
540
req.Content.Headers.ContentType.ToString().Equals("application/x-www-form-urlencoded")),
499
541
ItExpr.IsAny<CancellationToken >()
@@ -545,7 +587,7 @@ namespace {{testPackageName}}.Api {
545
587
"SendAsync",
546
588
Times.Exactly(3),
547
589
ItExpr.Is<HttpRequestMessage >(req =>
548
- req.RequestUri == new Uri($"https:// { config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
590
+ req.RequestUri == new Uri($"{ config.Credentials.Config.ApiTokenIssuer} /oauth/token") &&
549
591
req.Method == HttpMethod.Post &&
550
592
req.Content.Headers.ContentType.ToString().Equals("application/x-www-form-urlencoded")),
551
593
ItExpr.IsAny<CancellationToken >()
0 commit comments