private object CallHandleStatusMessageMethod(PubnubApi.PNStatus status) { var type = typeof(RealtimeRouter); var constructorInfo = type.GetConstructor( BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { }, null); var instance = (RealtimeRouter)constructorInfo.Invoke(null); var method = type.GetMethod("HandleStatusMessage", BindingFlags.NonPublic | BindingFlags.Instance); var result = method.Invoke(instance, new object[] { status }); return(result); }
private void HandleStatusMessageValidOperation(PubnubApi.PNOperationType operationType) { //Arrange var status = new PubnubApi.PNStatus { Operation = operationType }; //Act var result = CallHandleStatusMessageMethod(status); //Assert Assert.IsNull(result); }
public void TestHandleStatusMessageGeneralException() { //Arrange var status = new PubnubApi.PNStatus { Error = true, ErrorData = new PubnubApi.PNErrorData("Test", null) }; //Act var result = CallHandleStatusMessageMethod(status); //Assert Assert.AreEqual(typeof(KinveyException), result.GetType()); var ke = result as KinveyException; Assert.AreEqual(EnumErrorCategory.ERROR_REALTIME, ke.ErrorCategory); Assert.AreEqual(EnumErrorCode.ERROR_REALTIME_ERROR, ke.ErrorCode); }
public void TestHandleStatusMessageNotAuthorizedException() { //Arrange var status = new PubnubApi.PNStatus { Error = true, StatusCode = 403, ErrorData = new PubnubApi.PNErrorData("Test", null) }; // Act var result = CallHandleStatusMessageMethod(status); //Assert Assert.AreEqual(typeof(KinveyException), result.GetType()); var ke = result as KinveyException; Assert.AreEqual(EnumErrorCategory.ERROR_REALTIME, ke.ErrorCategory); Assert.AreEqual(EnumErrorCode.ERROR_REALTIME_CRITICAL_NOT_AUTHORIZED_ON_CHANNEL, ke.ErrorCode); }
KinveyException HandleStatusMessage(PubnubApi.PNStatus status) { KinveyException ke = default(KinveyException); if (status.Error) { // Status indicates an error with PubNub var errorData = status.ErrorData; if (status.StatusCode == 403) { ke = new KinveyException(EnumErrorCategory.ERROR_REALTIME, EnumErrorCode.ERROR_REALTIME_CRITICAL_NOT_AUTHORIZED_ON_CHANNEL, errorData.Information, errorData.Throwable); } else { ke = new KinveyException(EnumErrorCategory.ERROR_REALTIME, EnumErrorCode.ERROR_REALTIME_ERROR, errorData.Information, errorData.Throwable); } } else { // TODO Figure out which status operations need to be logged. switch (status.Operation) { // Publish/Subscribe case PubnubApi.PNOperationType.PNPublishOperation: break; case PubnubApi.PNOperationType.PNSubscribeOperation: break; case PubnubApi.PNOperationType.PNUnsubscribeOperation: break; // Channel Group and Channels case PubnubApi.PNOperationType.ChannelGroupAllGet: break; case PubnubApi.PNOperationType.ChannelGroupAuditAccess: break; case PubnubApi.PNOperationType.ChannelGroupGet: break; case PubnubApi.PNOperationType.ChannelGroupGrantAccess: break; case PubnubApi.PNOperationType.ChannelGroupRevokeAccess: break; case PubnubApi.PNOperationType.PNAddChannelsToGroupOperation: break; case PubnubApi.PNOperationType.PNChannelGroupsOperation: break; case PubnubApi.PNOperationType.PNChannelsForGroupOperation: break; case PubnubApi.PNOperationType.PNRemoveChannelsFromGroupOperation: break; case PubnubApi.PNOperationType.PNRemoveGroupOperation: break; // Access Manager case PubnubApi.PNOperationType.PNAccessManagerAudit: break; case PubnubApi.PNOperationType.PNAccessManagerGrant: break; // Presence case PubnubApi.PNOperationType.Presence: break; case PubnubApi.PNOperationType.PresenceUnsubscribe: break; // Push case PubnubApi.PNOperationType.PushGet: break; case PubnubApi.PNOperationType.PushRegister: break; case PubnubApi.PNOperationType.PushRemove: break; case PubnubApi.PNOperationType.PushUnregister: break; // Miscellaneous case PubnubApi.PNOperationType.Leave: break; case PubnubApi.PNOperationType.None: break; case PubnubApi.PNOperationType.RevokeAccess: break; case PubnubApi.PNOperationType.PNFireOperation: break; case PubnubApi.PNOperationType.PNGetStateOperation: break; case PubnubApi.PNOperationType.PNHeartbeatOperation: break; case PubnubApi.PNOperationType.PNHereNowOperation: break; case PubnubApi.PNOperationType.PNHistoryOperation: break; case PubnubApi.PNOperationType.PNSetStateOperation: break; case PubnubApi.PNOperationType.PNTimeOperation: break; case PubnubApi.PNOperationType.PNWhereNowOperation: break; default: break; } } return(ke); }