public void AddBewitGeneration_WithMyPayload_ShouldAddBewitTokenGeneratorForMyPayload()
        {
            //Arrange
            const string secret   = "112";
            var          services = new ServiceCollection();

            //Act
            services.AddBewitGeneration(new BewitOptions
            {
                Secret = secret
            }, b => b.AddPayload <Foo>());

            //Assert
            ServiceProvider serviceProvider = null;

            try
            {
                serviceProvider = services.BuildServiceProvider();
                IBewitTokenGenerator <Foo> bewitTokenGenerator =
                    serviceProvider.GetService <IBewitTokenGenerator <Foo> >();
                bewitTokenGenerator.Should().NotBeNull();
                bewitTokenGenerator.Should()
                .BeOfType <BewitTokenGenerator <Foo> >();
            }
            finally
            {
                serviceProvider?.Dispose();
            }
        }
        public void AddBewitGeneration_WithPersistance_ShouldAddPersistedBewitTokenGenerator()
        {
            //Arrange
            const string secret   = "112";
            var          services = new ServiceCollection();

            //Act
            services.AddSingleton <INonceRepository>(new Mock <INonceRepository>().Object);
            services.AddBewitGeneration(new BewitOptions
            {
                Secret = secret
            },
                                        builder =>
            {
                builder.AddPayload <Foo>();
            });

            //Assert
            ServiceProvider serviceProvider = null;

            try
            {
                serviceProvider = services.BuildServiceProvider();
                IBewitTokenGenerator <Foo> bewitTokenGenerator =
                    serviceProvider.GetService <IBewitTokenGenerator <Foo> >();
                bewitTokenGenerator.Should().NotBeNull();
                bewitTokenGenerator.Should()
                .BeOfType <BewitTokenGenerator <Foo> >();
            }
            finally
            {
                serviceProvider?.Dispose();
            }
        }
        public void AddBewitGeneration_WithValidConfiguration_ShouldAddBewitTokenGeneratorForMyPayload()
        {
            //Arrange
            var services = new ServiceCollection();
            IConfigurationRoot configuration = new ConfigurationBuilder()
                                               .AddInMemoryCollection(new[]
            {
                new KeyValuePair <string, string>("Bewit:Secret", "123")
            })
                                               .Build();

            //Act
            services.AddBewitGeneration(configuration, b => b.AddPayload <Foo>());

            //Assert
            ServiceProvider serviceProvider = null;

            try
            {
                serviceProvider = services.BuildServiceProvider();
                IBewitTokenGenerator <Foo> bewitTokenGenerator =
                    serviceProvider.GetService <IBewitTokenGenerator <Foo> >();
                bewitTokenGenerator.Should().NotBeNull();
                bewitTokenGenerator.Should()
                .BeOfType <BewitTokenGenerator <Foo> >();
            }
            finally
            {
                serviceProvider?.Dispose();
            }
        }
Exemplo n.º 4
0
 public Mutation(
     IBewitTokenGenerator <FooPayload> fooPayloadGenerator,
     IBewitTokenGenerator <BarPayload> barPayloadGenerator)
 {
     _fooPayloadGenerator = fooPayloadGenerator;
     _barPayloadGenerator = barPayloadGenerator;
 }
Exemplo n.º 5
0
        public static async Task <string> CreateToken <T>(
            IServiceProvider serviceProvider, T payload)
        {
            IBewitTokenGenerator <T> bewitGenerator = serviceProvider
                                                      .GetService <IBewitTokenGenerator <T> >();

            return((await bewitGenerator
                    .GenerateBewitTokenAsync(payload, default))
                   .ToString());
        }
Exemplo n.º 6
0
        public async Task InvokeAsync(
            IMiddlewareContext context,
            IBewitTokenGenerator <TPayload> tokenGenerator)
        {
            await _next(context).ConfigureAwait(false);

            if (context.Result is TPayload result)
            {
                BewitToken <TPayload> bewit
                    = await tokenGenerator.GenerateBewitTokenAsync(
                          result,
                          context.RequestAborted);

                context.Result = (string)bewit;
            }
        }
Exemplo n.º 7
0
        public static async Task <string> CreateBadToken()
        {
            var bewitOptions = new BewitOptions
            {
                Secret = "badSecret", TokenDuration = TimeSpan.FromMinutes(5)
            };

            ServiceProvider serviceProvider = new ServiceCollection()
                                              .AddBewitGeneration(bewitOptions, b => b.AddPayload <string>())
                                              .BuildServiceProvider();

            IBewitTokenGenerator <string> bewitGenerator = serviceProvider
                                                           .GetService <IBewitTokenGenerator <string> >();

            return((await bewitGenerator
                    .GenerateBewitTokenAsync("badPayload", default))
                   .ToString());
        }
Exemplo n.º 8
0
        public async Task InvokeAsync(
            IMiddlewareContext context,
            IBewitTokenGenerator <string> tokenGenerator)
        {
            await _next(context).ConfigureAwait(false);

            if (context.Result is string result)
            {
                var uri = new Uri(result);

                BewitToken <string> bewit =
                    await tokenGenerator.GenerateBewitTokenAsync(
                        uri.PathAndQuery, context.RequestAborted);

                var parametersToAdd = new Dictionary <string, string>
                {
                    { "bewit", WebUtility.UrlEncode((string)bewit) }
                };
                var newUri =
                    QueryHelpers.AddQueryString(result, parametersToAdd);

                context.Result = newUri;
            }
        }