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); }
public async Task ValidateBewitTokenAsync_WithLegitPayload_ShouldStoreNonceAndReturnBewitToken() { //Arrange Token insertedToken = Token.Create("724e7acc-be57-49a1-8195-46a03c6271c6", DateTime.MaxValue); var repository = new Mock <INonceRepository>(); repository .Setup(r => r.TakeOneAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .Returns((string tok, CancellationToken c) => { if (tok == insertedToken.Nonce) { Token tmpToken = insertedToken; insertedToken = null; return(new ValueTask <Token>(tmpToken)); } return(new ValueTask <Token>((Token)null)); }); BewitPayloadContext context = new BewitPayloadContext(typeof(Bar)) .SetCryptographyService(MockHelper.GetMockedCrpytoService <Bar>) .SetVariablesProvider(() => new MockHelper.MockedVariablesProvider()) .SetRepository(() => repository.Object); var provider = new BewitTokenValidator <Bar>(context); var payload = new Bar { Baz = "foo" }; BewitToken <Bar> token = new BewitToken <Bar>("eyJQYXlsb2FkIjp7IkJheiI6ImZvbyJ9LCJIYXNoIjoiNzI0ZTdhY2MtYmU1Ny00OWExLTgxOTUtNDZhMDNjNjI3MWM2X18yMDE3LTAxLTAxVDAxOjAyOjAxLjAwMTAwMDBaX197XCJCYXpcIjpcImZvb1wifSIsIk5vbmNlIjoiNzI0ZTdhY2MtYmU1Ny00OWExLTgxOTUtNDZhMDNjNjI3MWM2IiwiRXhwaXJhdGlvbkRhdGUiOiIyMDE3LTAxLTAxVDAxOjAyOjAxLjAwMVoifQ=="); //Act Bar payload2 = await provider.ValidateBewitTokenAsync( token, CancellationToken.None); //Assert payload2.Should().NotBeNull(); payload2.Should().NotBe(payload); payload2.Should().BeEquivalentTo(payload); }