public void Encode_With_PayloadWithClaims_Should_Return_Token() { var algorithm = new HMACSHA256Algorithm(); var claims = new Dictionary <string, object>(); var builder = new JwtBuilder(); var secret = _fixture.Create <string>(); var nbClaims = _fixture.Create <int>(); var claimKeys = new string[nbClaims]; var claimValues = new string[nbClaims]; for (var i = 0; i < nbClaims; ++i) { claimKeys[i] = _fixture.Create <string>(); claimValues[i] = _fixture.Create <string>(); claims.Add(claimKeys[i], claimValues[i]); } var token = builder.WithAlgorithm(algorithm) .WithSecret(secret) .AddClaims(claims) .Encode(); var decodedToken = new UTF8Encoding(false).GetString( new JwtBase64UrlEncoder().Decode(token.Split('.')[1])); token.Should() .NotBeNullOrEmpty("because the token should contains some data"); token.Split('.') .Should() .HaveCount(3, "because the token should consist of three parts"); decodedToken.Should() .ContainAll(claimKeys, "because all used keys should be retrieved in the token"); decodedToken.Should() .ContainAll(claimValues, "because all values associated with the claims should be retrieved in the token"); }