public string CreateToken(int userId, string role)
        {
            var jwtKey = appSettings.Secrets?.JwtKey;

            if (string.IsNullOrWhiteSpace(jwtKey))
            {
                throw new ConfigurationException(nameof(jwtKey));
            }

            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = ASCII.GetBytes(jwtKey);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new[]
                {
                    new Claim(ClaimTypes.Name, userId.ToString()),
                    new Claim(ClaimTypes.Role, role)
                }),
                Expires            = UtcNow.AddHours(appSettings.JwtExpirationTimeHours),
                SigningCredentials = new SigningCredentials(
                    new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token       = tokenHandler.CreateToken(tokenDescriptor);
            var tokenString = tokenHandler.WriteToken(token);

            return(tokenString);
        }
            internal DownloadMetadata2CatalogAsyncTest()
            {
                UtcNow      = DateTime.UtcNow;
                LastCreated = UtcNow.AddHours(-3);
                LastEdited  = UtcNow.AddHours(-2);
                LastDeleted = UtcNow.AddHours(-1);

                Packages = new SortedList <DateTime, IList <FeedPackageDetails> >();

                PackageCatalogItemCreator = new Mock <IPackageCatalogItemCreator>(MockBehavior.Strict);
                Storage          = new Mock <IStorage>(MockBehavior.Strict);
                TelemetryService = new Mock <ITelemetryService>(MockBehavior.Strict);
                Logger           = new Mock <ILogger>();

                CatalogBaseUri  = new Uri("https://nuget.test/v3-catalog0/");
                CatalogIndexUri = new Uri(CatalogBaseUri, "index.json");

                Storage.Setup(x => x.ResolveUri(
                                  It.Is <string>(relativeUri => relativeUri == "index.json")))
                .Returns(CatalogIndexUri);

                FeedPackageDetails = new FeedPackageDetails(
                    new Uri("https://nuget.test/packages/a"),
                    UtcNow.AddMinutes(-45),
                    UtcNow.AddMinutes(-30),
                    UtcNow.AddMinutes(-15),
                    packageId: "a",
                    packageVersion: "1.0.0");
            }
        public void get_delivery_time_should_return_now_plus_delay()
        {
            // arrange
            var when    = UtcNow.AddHours(1d);
            var options = new SendOptions().DelayDeliveryBy(FromHours(1d));

            // act
            var deliveryTime = options.GetDeliveryTime();

            // assert
            deliveryTime.Should().BeOnOrAfter(when);
        }