Skip to content

Commit

Permalink
[SignalR extensions] Fix test failure due to token expiration (#39930)
Browse files Browse the repository at this point in the history
* Fix test failure due to token expiration

* Don't skip the test
  • Loading branch information
Y-Sindo committed Nov 14, 2023
1 parent 34bcf5a commit 8ba43b2
Showing 1 changed file with 21 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,23 @@

using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Text;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs.Extensions.SignalRService;
using Microsoft.Extensions.Primitives;
using Microsoft.IdentityModel.Tokens;
using Xunit;

namespace SignalRServiceExtension.Tests
namespace Microsoft.Azure.WebJobs.Extensions.SignalRService.Tests
{
public class DefaultSecurityTokenValidatorTests
{
private const string IssuerToken = "myfunctionauthtest";
public static IEnumerable<object[]> TestData = new List<object[]>
{
new object []
{
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYWFhIiwiZXhwIjoxNjk5ODE5MDI1fQ.joh9CXSfRpgZhoraozdQ0Z1DxmUhlXF4ENt_1Ttz7x8",
"Bearer "+ GenerateJwtToken(IssuerToken, "issuer", "audience", 10),
SecurityTokenStatus.Valid
},
new object[]
Expand All @@ -32,18 +34,17 @@ public class DefaultSecurityTokenValidatorTests
}
};

[Theory(Skip = "the valid case is failing on main")]
[Theory]
[MemberData(nameof(TestData))]
public void ValidateSecurityTokenFacts(string tokenString, SecurityTokenStatus expectedStatus)
{
var ctx = new DefaultHttpContext();
var req = ctx.Request;
req.Headers.Add("Authorization", new StringValues(tokenString));

var issuerToken = "bXlmdW5jdGlvbmF1dGh0ZXN0"; // base64 encoded for "myfunctionauthtest";
Action<TokenValidationParameters> configureTokenValidationParameters = parameters =>
{
parameters.IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String(issuerToken));
parameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(IssuerToken));
parameters.RequireSignedTokens = true;
parameters.ValidateAudience = false;
parameters.ValidateIssuer = false;
Expand All @@ -56,5 +57,19 @@ public void ValidateSecurityTokenFacts(string tokenString, SecurityTokenStatus e

Assert.Equal(expectedStatus, securityTokenResult.Status);
}

public static string GenerateJwtToken(string secretKey, string issuer, string audience, int expireMinutes)
{
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: issuer,
audience: audience,
expires: DateTime.Now.AddMinutes(expireMinutes),
signingCredentials: credentials
);

return new JwtSecurityTokenHandler().WriteToken(token);
}
}
}

0 comments on commit 8ba43b2

Please sign in to comment.