public async Task ValidateBewit_WithAlteredPayload_ShouldThrow() { //Arrange ICryptographyService cryptoService = MockHelper.GetMockedCrpytoService <Foo>(); var nonceRepository = new DefaultNonceRepository(); var provider = new BewitTokenValidatorAccessor <Foo>( cryptoService, new MockHelper.MockedVariablesProvider(), nonceRepository); var bewit = new Bewit <Foo>( "724e7acc-be57-49a1-8195-46a03c6271c6", new DateTime(2017, 1, 1, 1, 2, 1, 1, DateTimeKind.Utc), new Foo { Bar = 2 }, "724e7acc-be57-49a1-8195-46a03c6271c6__2017-01-01T01:02:01.0010000Z__{\"Bar\":1}"); await nonceRepository.InsertOneAsync(bewit, default); //Act Func <Task> validateBewit = async() => await provider.InvokeValidateBewitAsync(bewit, CancellationToken.None); //Assert await validateBewit.Should().ThrowAsync <BewitInvalidException>(); }
public async Task ValidateBewit_WithPayload_ShouldGenerateBewit() { //Arrange ICryptographyService cryptoService = MockHelper.GetMockedCrpytoService <Foo>(); var nonceRepository = new DefaultNonceRepository(); var provider = new BewitTokenValidatorAccessor <Foo>( cryptoService, new MockHelper.MockedVariablesProvider(), nonceRepository); var payload = new Foo { Bar = 1 }; var bewit = new Bewit <Foo>( "724e7acc-be57-49a1-8195-46a03c6271c6", new DateTime(2017, 1, 1, 1, 2, 1, 1, DateTimeKind.Utc), payload, "724e7acc-be57-49a1-8195-46a03c6271c6__2017-01-01T01:02:01.0010000Z__{\"Bar\":1}"); await nonceRepository.InsertOneAsync(bewit, default); //Act Bewit <Foo> bewit2 = await provider.InvokeValidateBewitAsync(bewit, CancellationToken.None); //Assert bewit2.Should().Be(bewit); }
public async Task ValidateBewitToken_WithPayload_ShouldReturnPayload() { //Arrange ICryptographyService cryptoService = MockHelper.GetMockedCrpytoService <Foo>(); var nonceRepository = new DefaultNonceRepository(); BewitPayloadContext context = new BewitPayloadContext(typeof(Foo)) .SetCryptographyService(() => cryptoService) .SetVariablesProvider(() => new MockHelper.MockedVariablesProvider()) .SetRepository(() => nonceRepository); var provider = new BewitTokenValidator <Foo>(context); var payload = new Foo { Bar = 1 }; var bewit = new Bewit <Foo>( "724e7acc-be57-49a1-8195-46a03c6271c6", new DateTime(2016, 1, 1, 1, 1, 1, 1, DateTimeKind.Utc), payload, "724e7acc-be57-49a1-8195-46a03c6271c6__2016-01-01T01:01:01.0010000Z__{\"Bar\":1}"); await nonceRepository.InsertOneAsync(bewit, default); var bewitToken = new BewitToken <Foo>( "eyJQYXlsb2FkIjp7IkJhciI6MX0sIkhhc2giOiI3MjRlN2FjYy1iZTU3LTQ5YTEtODE5NS00NmEwM2M2MjcxYzZfXzIwMTctMDEtMDFUMDE6MDI6MDEuMDAxMDAwMFpfX3tcIkJhclwiOjF9IiwiTm9uY2UiOiI3MjRlN2FjYy1iZTU3LTQ5YTEtODE5NS00NmEwM2M2MjcxYzYiLCJFeHBpcmF0aW9uRGF0ZSI6IjIwMTctMDEtMDFUMDE6MDI6MDEuMDAxWiJ9"); //Act Foo payload2 = await provider.ValidateBewitTokenAsync(bewitToken, CancellationToken.None); //Assert payload2.Bar.Should().Be(payload.Bar); }
internal static TestServer CreateServer <T>(BewitOptions options) { NonceRepository = new DefaultNonceRepository(); VariablesProvider = new MockedVariablesProvider(); IWebHostBuilder hostBuilder = new WebHostBuilder() .ConfigureServices(services => { services.AddMvc(); services .AddTransient <BewitAttribute>() .AddSingleton(options) .AddBewitValidation(options, b => b.AddPayload <T>() .SetVariablesProvider(() => VariablesProvider)); }) .Configure(app => app.UseRouting().UseEndpoints(c => c.MapControllers())); var server = new TestServer(hostBuilder); return(server); }