public void InvalidInputTest() { var ex = Assert.Throws <FizzException>(() => new FizzIngestionClient(null, new FizzMockActionDispatcher())); Assert.AreEqual(ex.Message, "invalid_event_log"); ex = Assert.Throws <FizzException>(() => new FizzIngestionClient(new FizzInMemoryEventLog(), null)); Assert.AreEqual(ex.Message, "invalid_dispatcher"); var ingestion = new FizzIngestionClient( new FizzInMemoryEventLog(), new FizzMockActionDispatcher() ); ex = Assert.Throws <FizzException>(() => ingestion.Open(null, FizzUtils.Now(), new FizzMockAuthRestClient())); Assert.AreEqual(ex.Message, "invalid_user_id"); ex = Assert.Throws <FizzException>(() => ingestion.Open("userA", FizzUtils.Now(), null)); Assert.AreEqual(ex.Message, "invalid_client"); }
public async Task EventsIngestionTest() { var ingestion = new FizzIngestionClient( new FizzInMemoryEventLog(), new FizzMockActionDispatcher() ); var checkpoint1 = new TaskCompletionSource <object>(); var checkpoint2 = new TaskCompletionSource <object>(); var checkpoint3 = new TaskCompletionSource <object>(); var checkpoint4 = new TaskCompletionSource <object>(); // User Info string userId = "userA"; string buildVer = "build1234"; string custom01 = "custom_dim_01"; string custom02 = "custom_dim_02"; string custom03 = "custom_dim_03"; // Text Message Sent string content = "test message"; string channelId = "global"; string nick = "testNick"; // Product Purchased string productId = "com.fizz.productA"; double amount = 0.5; string currency = "usd"; var client = new FizzMockAuthRestClient(); client.OnPost += (host, path, body) => { JSONArray events = JSONNode.Parse(body).AsArray; for (int ei = 0; ei < events.Count; ei++) { JSONNode node = events[ei]; Assert.AreEqual((string)node["user_id"], userId); Assert.AreEqual((string)node["build"], buildVer); Assert.AreEqual((string)node["custom_01"], custom01); Assert.AreEqual((string)node["custom_02"], custom02); Assert.AreEqual((string)node["custom_03"], custom03); var type = (FizzEventType)Enum.Parse(typeof(FizzEventType), node["type"]); if (type == FizzEventType.session_started) { checkpoint1.SetResult(null); } else if (type == FizzEventType.text_msg_sent) { Assert.AreEqual((string)node["content"], content); Assert.AreEqual((string)node["channel_id"], channelId); Assert.AreEqual((string)node["nick"], nick); checkpoint2.SetResult(null); } else if (type == FizzEventType.product_purchased) { Assert.AreEqual((string)node["product_id"], productId); Assert.AreEqual(node["amount"].AsDouble, amount); Assert.AreEqual((string)node["currency"], currency); checkpoint3.SetResult(null); } else if (type == FizzEventType.session_ended) { checkpoint4.SetResult(null); } } }; ingestion.BuildVer = buildVer; ingestion.CustomDimesion01 = custom01; ingestion.CustomDimesion02 = custom02; ingestion.CustomDimesion03 = custom03; ingestion.Open(userId, client.session._serverTS, client); ingestion.TextMessageSent(channelId, content, nick); ingestion.ProductPurchased(productId, amount, currency); ingestion.Close(null); await checkpoint1.Task; await checkpoint2.Task; await checkpoint3.Task; await checkpoint4.Task; }