-
Notifications
You must be signed in to change notification settings - Fork 32
/
UnitTests.cs
54 lines (46 loc) · 2.2 KB
/
UnitTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using Microsoft.Azure.WebJobs.Extensions.EventGrid.Tests.Common;
using Microsoft.Azure.WebJobs.Host.Triggers;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Reflection;
using System.Threading.Tasks;
using Xunit;
using static Microsoft.Azure.WebJobs.Extensions.EventGrid.EventGridTriggerAttributeBindingProvider;
namespace Microsoft.Azure.WebJobs.Extensions.EventGrid.Tests
{
public class UnitTests
{
private void DummyMethod(EventGridEvent e)
{
}
[Fact]
public async Task bindAsyncTest()
{
MethodBase methodbase = this.GetType().GetMethod("DummyMethod", BindingFlags.NonPublic | BindingFlags.Instance);
ParameterInfo[] arrayParam = methodbase.GetParameters();
ITriggerBinding binding = new EventGridTriggerBinding(arrayParam[0], null, null);
// given GventGridEvent
EventGridEvent eve = JsonConvert.DeserializeObject<EventGridEvent>(FakeData.singleEvent);
JObject data = eve.Data;
ITriggerData triggerDataWithEvent = await binding.BindAsync(eve, null);
Assert.Equal(data, triggerDataWithEvent.BindingData["data"]);
ITriggerData triggerDataWithString = await binding.BindAsync(FakeData.singleEvent, null);
Assert.Equal(data, triggerDataWithString.BindingData["data"]);
// test invalid, batch of events
FormatException formatException = await Assert.ThrowsAsync<FormatException>(() => binding.BindAsync(FakeData.arrayOfOneEvent, null));
Assert.Equal($"Unable to parse {FakeData.arrayOfOneEvent} to {typeof(EventGridEvent)}", formatException.Message);
// test invalid, random object
var testObject = new TestClass();
InvalidOperationException invalidException = await Assert.ThrowsAsync<InvalidOperationException>(() => binding.BindAsync(testObject, null));
Assert.Equal($"Unable to bind {testObject} to type {arrayParam[0].ParameterType}", invalidException.Message);
}
private class TestClass
{
public override string ToString()
{
return "test object";
}
}
}
}