private Task <ProcessResult> OnRemoveUserSubscription(RequestPacket request)
        {
            var subid = UserSubscription.GetIdFromPacket(request);

            if (string.IsNullOrWhiteSpace(subid))
            {
                var errorData = new ErrorResponseData(ErrorResponseCodes.UserSubscriptionNotFound, $"The {nameof(UserSubscription)} with the id '{subid}' was not found.", false);
                return(Task.FromResult(new ProcessResult(errorData)));
            }

            var sub = _dataProvider.GetUserSubscription(subid);

            if (sub?.SubscriberUserId != request.Context.User.Id)
            {
                var errorData = new ErrorResponseData(ErrorResponseCodes.UserSubscriptionNotFound, $"The {nameof(UserSubscription)} with the id '{subid}' was not found.", false);
                return(Task.FromResult(new ProcessResult(errorData)));
            }

            _dataProvider.RemoveUserSubscription(sub.Id);

            return(Task.FromResult(ProcessResult.Processed));
        }
        private void Serializes_ErrorResponseData(ISerializer serializer)
        {
            var error = new ErrorResponseData(ErrorResponseCodes.UnauthorizedRequest, "crap", true);

            var pack = new ResponsePacket(error);

            using (var ms = new MemoryStream())
                using (var writer = new BinaryWriter(ms))
                    using (var reader = new BinaryReader(ms)) {
                        pack.Serialize(writer, serializer);

                        ms.Position = 0;

                        var p2 = new TestDataPacket();
                        p2.Deserialize(reader, serializer);

                        Assert.AreEqual(error.Code, p2.As <ErrorResponseData>().Code);
                        Assert.AreEqual(error.Message, p2.As <ErrorResponseData>().Message);
                        Assert.AreEqual(error.IsCritical, p2.As <ErrorResponseData>().IsCritical);
                        Assert.AreEqual(error.GetType(), p2.Data.GetType());
                        Assert.AreEqual(typeof(ErrorResponseData).AssemblyQualifiedName, p2.DataType);
                    }
        }