public async Task Publish_ShouldThrowArgumentExceptionWhenExpoTokenIsInvalid(string token) { var pushClient = new PushClient(); var message = new PushMessage(token); await Assert.ThrowsAsync <ArgumentException>(async() => await pushClient.Publish(message)); }
public async Task Publish_ShouldThrowPushServerExceptionWhenHttpClientReturnsAnError() { var handler = new TestHandler((message, token) => throw new InvalidOperationException()); var httpClient = new HttpClient(handler); var pushClient = new PushClient(httpClient: httpClient); await Assert.ThrowsAsync <PushServerException>(async() => await pushClient.Publish(new PushMessage(Token))); }
public async Task Publish_ShouldThrowHttpRequestExceptionWhenStatusCodeIsNot200() { var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage(HttpStatusCode.Forbidden))); var httpClient = new HttpClient(handler); var pushClient = new PushClient(httpClient: httpClient); await Assert.ThrowsAsync <HttpRequestException>(async() => await pushClient.Publish(new PushMessage(Token))); }
private async Task SendExpoMessage(string token, string title, string message) { try { var client = new PushClient(); var notification = new PushMessage(token, title: title, body: message); await client.Publish(notification); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public async Task Publish_ShouldReturnOkResponse() { var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent( "{\r\n \"data\": [\r\n {\"status\": \"ok\"}\r\n ]\r\n}", Encoding.UTF8, "application/json") })); var httpClient = new HttpClient(handler); var pushClient = new PushClient(httpClient: httpClient); var response = await pushClient.Publish(new PushMessage(Token)); Assert.Equal(PushResponseStatuses.Ok, response.Status); }
public async Task Publish_ShouldThrowPushServerExceptionWhenResponseHasAMismatchedAmoundOfData() { var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent( "{\r\n \"data\": [\r\n {\"status\": \"ok\"},\r\n {\"status\": \"ok\"}\r\n ]\r\n}", Encoding.UTF8, "application/json") })); var httpClient = new HttpClient(handler); var pushClient = new PushClient(httpClient: httpClient); var ex = await Record.ExceptionAsync(async() => await pushClient.Publish(new PushMessage(Token))); Assert.Equal("Mismatched response length. Expected 1, but only 2 received.", ex.Message); }
public async Task Publish_ShouldThrowPushServerExceptionWhenResponseHasNoData() { var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent( "{\r\n \"data\": null\r\n}", Encoding.UTF8, "application/json") })); var httpClient = new HttpClient(handler); var pushClient = new PushClient(httpClient: httpClient); var ex = await Record.ExceptionAsync(async() => await pushClient.Publish(new PushMessage(Token))); Assert.Equal("Invalid server response.", ex.Message); }
public async Task <PushResponse> SendNotification(string expoToken) { string ExpoToken = expoToken; var client = new PushClient(); var notification = new PushMessage(expoToken, title: "A new message from your friend"); try { return(await client.Publish(notification)); } catch (Exception ex) { Console.WriteLine(ex.Message); throw; } }
public async Task Publish_ShouldReturnErrorResponse() { const string error = "DeviceNotRegistered"; var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent( "{\r\n \"data\": [{\r\n \"status\": \"error\",\r\n \"message\": \"\\\"ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]\\\" is not a registered push notification recipient\",\r\n \"details\": {\r\n \"error\": \"" + error + "\"\r\n }\r\n }]\r\n}", Encoding.UTF8, "application/json") })); var httpClient = new HttpClient(handler); var pushClient = new PushClient(httpClient: httpClient); var response = await pushClient.Publish(new PushMessage(Token)); Assert.Equal(PushResponseStatuses.Error, response.Status); Assert.Equal(error, response.Details.Error); Assert.Equal("\"ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]\" is not a registered push notification recipient", response.Message); }
public async Task Publish_ShouldThrowPushServerExceptionWhenResponseHasErrors() { const string code = "INTERNAL_SERVER_ERROR"; const string errorMessage = "An unknown error occurred."; var handler = new TestHandler((message, token) => Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent( "{\r\n \"errors\": [{\r\n \"code\": \"" + code + "\",\r\n \"message\": \"" + errorMessage + "\"\r\n }]\r\n}", Encoding.UTF8, "application/json") })); var httpClient = new HttpClient(handler); var pushClient = new PushClient(httpClient: httpClient); var ex = await Record.ExceptionAsync(async() => await pushClient.Publish(new PushMessage(Token))); var pushEx = ex as PushServerException; Assert.NotNull(pushEx); Assert.Equal("Request failed.", ex.Message); Assert.Equal(code, pushEx.Errors.First().Code); Assert.Equal(errorMessage, pushEx.Errors.First().Message); }
private void btnPublish_Click(object sender, EventArgs e) { if (push.ConnectionStatus != CONNECTION_STATUS.CS_CONNECTREADY) { AddInfo("Connection is not ready"); return; } PB2001 pb2001 = new PB2001(); pb2001.userNo = push.UserNo; pb2001.account_h = txtAccount.Text.ToString()[0]; pb2001.account = Convert.ToInt32(txtAccount.Text.Substring(1, 9)); pb2001.exchange = '0'; pb2001.market = 'O'; pb2001.setSymbol(txtSymbol.Text.Trim()); pb2001.side = (cmbSide.Text.Substring(0, 1).ToUpper() == "B") ? 'B' : 'S'; pb2001.modify_type = 'N'; pb2001.qty = Convert.ToInt16(txtQty.Text); pb2001.price = Convert.ToInt64(txtPrice.Text); pb2001.priceFlag = (cmbOrdType.Text.Substring(0, 1).ToUpper() == "L") ? '2' : '1'; switch (cmbTimeInForce.Text.Trim().ToUpper()) { case "ROD": pb2001.timeInForce = 'R'; break; case "IOC": pb2001.timeInForce = 'I'; break; case "FOK": pb2001.timeInForce = 'F'; break; } pb2001.positionEffect = (cmbPositionEffect.Text.Substring(0, 1).ToUpper() == "O") ? 'O' : 'C'; pb2001.front_office = '0'; byte[] pb = StructToBytes(pb2001); push.Subscribe(pb2001.getAccount()); //PB2001 //byte[] pb = new byte[65]; //ushort userNo = push.UserNo; //byte[] UserNo = ConvertIntToByteArray(userNo); //char account_h = 'A'; //byte Account_h = Convert.ToByte(account_h); //int account = 233620030; //byte[] Account = ConvertIntToByteArray(account); //char exchange = '0'; //byte Exchange = Convert.ToByte(exchange); //char market = 'O'; //byte Market = Convert.ToByte(market); //string symbol = "90000461"; //char[] Symbol = new char[20]; ; //Array.Copy(symbol.ToCharArray(), Symbol, symbol.Length); //byte[] bSymbol = Encoding.Default.GetBytes(Symbol); //char side = 'B'; //byte Side = Convert.ToByte(side); //char modify = 'N'; //byte Modify = Convert.ToByte(modify); //ushort qty = 1; //byte[] Qty = ConvertIntToByteArray(qty); //long price = 500; //byte[] Price = ConvertIntToByteArray(price); //char priceFlag = '2'; //byte PriceFlag = Convert.ToByte(priceFlag); //char timeInForce = 'R'; //byte TimeInForce = Convert.ToByte(timeInForce); //char positionEffect = 'O'; //byte PositionEffect = Convert.ToByte(positionEffect); //char front_office = '0'; //byte Front_office = Convert.ToByte(front_office); //Array.Copy(UserNo, pb, UserNo.Length); //pb[6] = Account_h; //Array.Copy(Account, 0, pb, 7, Account.Length); //pb[23] = Exchange; //pb[24] = Market; //Array.Copy(bSymbol, 0, pb, 25, bSymbol.Length); //pb[45] = Side; //pb[46] = Modify; //Array.Copy(Qty, 0, pb, 47, Qty.Length); //Array.Copy(Price, 0, pb, 49, Price.Length); //pb[57] = PriceFlag; //pb[58] = TimeInForce; //pb[59] = PositionEffect; //pb[64] = Front_office; //var s = System.Runtime.InteropServices.Marshal.SizeOf(pb); //to know struct length //Console.WriteLine(ConvertByteArrayToDouble(bUserNo)); //long RequestId = push.Publish("SSEOrder.Sv", 2001, pb); long RequestId = push.Publish(subTopic1, 2001, pb, false, true); //AddInfo("Request Id SEND: " + RequestId); AddInfo(pb2001.toLog()); //} }
public async Task Publish_ShouldThrowArgumentNullExceptionWhenPushMessageIsEmpty() { var pushClient = new PushClient(); await Assert.ThrowsAsync <ArgumentNullException>(async() => await pushClient.Publish(null)); }