public async Task SerializesExpectedProperties_BaseType() { var mockTransport = new MockTransport(new MockResponse(200)); var options = new EventGridPublisherClientOptions { Transport = mockTransport }; EventGridPublisherClient client = new EventGridPublisherClient( new Uri("http://localHost"), new AzureKeyCredential("fakeKey"), options); var egEvent = new EventGridEvent( "record", "Microsoft.MockPublisher.TestEvent", "TestPayload", new DerivedTestPayload { Name = "name", Age = 10, DerivedProperty = 5 }, typeof(TestPayload)); // since the data has not yet been serialized (CloudEvent not constructed from Parse method), GetData returns the passed in instance. Assert.AreEqual(5, egEvent.GetData <DerivedTestPayload>().DerivedProperty); // GetData returns as BinaryData so it will always serialize first even if cloudEvent was not constructed by calling Parse. Assert.IsNull(egEvent.GetData().ToObjectFromJson <DerivedTestPayload>().DerivedProperty); List <EventGridEvent> eventsList = new List <EventGridEvent>() { egEvent }; await client.SendEventsAsync(eventsList); egEvent = DeserializeRequest(mockTransport.SingleRequest).First(); Assert.IsNull(egEvent.GetData <DerivedTestPayload>().DerivedProperty); Assert.IsNull(egEvent.GetData().ToObjectFromJson <DerivedTestPayload>().DerivedProperty); }
public async Task SerializesExpectedProperties_DerivedType() { var mockTransport = new MockTransport(new MockResponse(200)); var options = new EventGridPublisherClientOptions { Transport = mockTransport }; EventGridPublisherClient client = new EventGridPublisherClient( new Uri("http://localHost"), new AzureKeyCredential("fakeKey"), options); var egEvent = new EventGridEvent( "record", "Microsoft.MockPublisher.TestEvent", "TestPayload", new DerivedTestPayload { Name = "name", Age = 10, DerivedProperty = 5 }); Assert.AreEqual(5, egEvent.GetData <DerivedTestPayload>().DerivedProperty); Assert.AreEqual(5, egEvent.GetData().ToObjectFromJson <DerivedTestPayload>().DerivedProperty); List <EventGridEvent> eventsList = new List <EventGridEvent>() { egEvent }; await client.SendEventsAsync(eventsList); egEvent = DeserializeRequest(mockTransport.SingleRequest).First(); Assert.AreEqual(5, egEvent.GetData <DerivedTestPayload>().DerivedProperty); Assert.AreEqual(5, egEvent.GetData().ToObjectFromJson <DerivedTestPayload>().DerivedProperty); }
public async Task RunAsync([EventGridTrigger] EventGridEvent e) { var type = Type.GetType(e.EventType); if (type != null && typeof(DomainEvent).IsAssignableFrom(type)) { await handler.HandleAsync((DomainEvent)e.GetData(serializer) !); } else { var table = await this.table.GetValueAsync(); await table.ExecuteAsync(TableOperation.Insert(e.ToEntity())); } }