Beispiel #1
0
        /// <summary>
        /// Returns all subscriptions in the system along with if the device has signed up for it.
        /// </summary>
        /// <param name="deviceId">The device id of the device to be searched.</param>
        /// <returns>Returns the list of device subscriptions.</returns>
        public Collection <DeviceSubscriptionInfo> GetDeviceSubscriptions(string deviceId)
        {
            // Initialize the list.
            Collection <DeviceSubscriptionInfo> devSubList = new Collection <DeviceSubscriptionInfo>();

            // Get all subscriptions in the system.
            Collection <SubscriptionInfo> subList = this.subInfoMgr.GetSubscriptionsInfo();

            foreach (SubscriptionInfo sub in subList)
            {
                DeviceSubscriptionInfo dsi = new DeviceSubscriptionInfo();
                dsi.Name        = sub.Name;
                dsi.Description = sub.Description;
                SubscriptionDataModel sdm = this.sds.SelectByDeviceIdAndSubscription(deviceId, sub.Name);

                // If the sdm is null, device has not signed up
                if (sdm == null)
                {
                    dsi.IsSubscribed = "false";
                }
                else
                {
                    dsi.IsSubscribed = "true";
                }

                devSubList.Add(dsi);
            }

            return(devSubList);
        }
Beispiel #2
0
        public void When_ToSubsciptionEntitiesIsCalledOnSubscriptionDataModelList_Then_SubscriptionEntityListIsReturned()
        {
            var subscriptionDataModel1 = new SubscriptionDataModel
            {
                AccessToken              = "Token",
                Username                 = "******",
                CreationTime             = DateTime.Now,
                TotalNotificationsPushed = 1
            };

            var subscriptionDataModel2 = new SubscriptionDataModel
            {
                AccessToken              = "Token",
                Username                 = "******",
                CreationTime             = DateTime.Now,
                TotalNotificationsPushed = 1
            };

            var subscriptionDataModels = new List <SubscriptionDataModel>();

            subscriptionDataModels.Add(subscriptionDataModel1);
            subscriptionDataModels.Add(subscriptionDataModel2);

            var entities = subscriptionDataModels.ToSubscriptionEntities();

            // Assert
            Assert.AreEqual(subscriptionDataModels.Count, entities.Count);
            Assert.AreEqual(subscriptionDataModels.First().Username, entities.First().Username);
            Assert.AreEqual(subscriptionDataModels.Last().Username, entities.Last().Username);
        }
        public void When_GetSubscriptionIsCalled_AndSubscriptionIsNotPresent_Then_SubscriptionListIsEmpty()
        {
            var repository = new SubscriptionRepository();

            var subscription1 = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "testtoken",
                TotalNotificationsPushed = 0,
            };

            repository.Add(subscription1);

            var subscription2 = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "newtoken",
                TotalNotificationsPushed = 0,
            };

            repository.Add(subscription2);

            var result = repository.GetSubscription("bbc1");

            // Assert
            Assert.IsNull(result);
        }
        public void When_GetSubscriptionIsCalled_AndSubscriptionIsPresent_Then_SubscriptionIsReturned()
        {
            var repository = new SubscriptionRepository();

            var subscription1 = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "testtoken",
                TotalNotificationsPushed = 0,
            };

            repository.Add(subscription1);

            var subscription2 = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "newtoken",
                TotalNotificationsPushed = 0,
            };

            repository.Add(subscription2);

            var result = repository.GetSubscription("bbc");

            // Assert
            Assert.AreEqual(subscription1.Username, result.Username);
            Assert.AreEqual(subscription1.AccessToken, result.AccessToken);
        }
        public void When_UpdateIsCalled_AndSubscriptionIsNotPresent_Then_FalseIsReturned()
        {
            var repository = new SubscriptionRepository();

            var subscription1 = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "testtoken",
                TotalNotificationsPushed = 0,
            };

            repository.Add(subscription1);

            var subscription2 = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "newtoken",
                TotalNotificationsPushed = 0,
            };

            repository.Add(subscription2);

            var result = repository.Update(new SubscriptionDataModel {
                AccessToken = "newToken", Username = "******"
            });

            // Assert
            Assert.IsFalse(result);
        }
Beispiel #6
0
 public static SubscriptionEntity ToSubscriptionEntity(this SubscriptionDataModel model)
 {
     return(new SubscriptionEntity
     {
         AccessToken = model.AccessToken,
         CreationTime = model.CreationTime,
         TotalNotificationsPushed = model.TotalNotificationsPushed,
         Username = model.Username
     });
 }
        public void When_AddIsCalled_AndSubscriptionIsNull_Then_SubscriptionIsNotAddedAndNullIsReturned()
        {
            SubscriptionDataModel subscription = null;

            var repository = new SubscriptionRepository();
            var result     = repository.Add(subscription);

            // Assert
            Assert.IsNull(result);
        }
Beispiel #8
0
        public bool Update(SubscriptionDataModel subscription)
        {
            var toUpdate = _subscriptions.FirstOrDefault(_ => _.Username == subscription.Username);

            if (toUpdate == null)
            {
                return(false);
            }

            toUpdate.TotalNotificationsPushed = subscription.TotalNotificationsPushed;
            return(true);
        }
        public void When_AddIsCalled_Then_SubscriptionIsAdded()
        {
            var subscription = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "testtoken",
                TotalNotificationsPushed = 1,
            };

            var repository = new SubscriptionRepository();
            var result     = repository.Add(subscription);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(0, subscription.TotalNotificationsPushed);
            Assert.AreEqual(DateTime.Now.ToString("dd MM yyyy"), subscription.CreationTime.ToString("dd MM yyyy"));
        }
Beispiel #10
0
        public void When_ToSubsciptionEntityIsCalledOnSubscriptionDataModel_Then_SubscriptionEntityIsReturned()
        {
            var subscriptionDataModel = new SubscriptionDataModel
            {
                AccessToken              = "Token",
                Username                 = "******",
                CreationTime             = DateTime.Now,
                TotalNotificationsPushed = 1
            };

            var entity = subscriptionDataModel.ToSubscriptionEntity();

            // Assert
            Assert.AreEqual(subscriptionDataModel.Username, entity.Username);
            Assert.AreEqual(subscriptionDataModel.AccessToken, entity.AccessToken);
            Assert.AreEqual(subscriptionDataModel.CreationTime, entity.CreationTime);
            Assert.AreEqual(subscriptionDataModel.TotalNotificationsPushed, entity.TotalNotificationsPushed);
        }
Beispiel #11
0
        /// <summary>
        /// Signup the device to the subscription.
        /// </summary>
        /// <param name="deviceId">The device id of the device being added.</param>
        /// <param name="subscription">Name of the subscription being signed up.</param>
        /// <returns>Returns success if the signup is successful. Error otherwise.</returns>
        public PushMessageError AddSubscription(string deviceId, string subscription)
        {
            PushMessageError err = this.Validate(deviceId, subscription);

            if (err != PushMessageError.Success)
            {
                return(err);
            }

            SubscriptionDataModel sdm = this.sds.SelectByDeviceIdAndSubscription(deviceId, subscription);

            if (sdm == null)
            {
                sdm = new SubscriptionDataModel(subscription, deviceId);
                this.sds.Insert(sdm);
            }

            return(PushMessageError.Success);
        }
        public async Task When_SendNotificationsIsCalled_AndSubscriptionAreNotNotified_Then_FailureMessageIsReceived()
        {
            // Setup
            var subscription = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "testtoken"
            };

            _repository.Setup(_ => _.GetSubscription("bbc")).Returns(subscription);
            _client.Setup(_ => _.PostAsync("https://api.pushbullet.com/v2/pushes", null, It.IsAny <StringContent>())).ReturnsAsync(new HttpResponseMessage {
                StatusCode = System.Net.HttpStatusCode.BadGateway
            });

            var result = await _service.SendNotification(new NotificationEntity { Username = "******", NoteText = "Text", NoteTitle = "Title" });

            // Assert
            Assert.AreEqual(false, result.IsSent);
            Assert.AreEqual("Unable to send notification", result.StatusText);
        }
Beispiel #13
0
        /// <summary>
        /// Delete the device signup.
        /// </summary>
        /// <param name="deviceId">Device id of the device to be deleted.</param>
        /// <param name="subscription">Subscription name.</param>
        /// <returns>Returns success if deletion is successful or error otherwise.</returns>
        public PushMessageError DeleteSubscription(string deviceId, string subscription)
        {
            PushMessageError err = this.Validate(deviceId, subscription);

            if (err != PushMessageError.Success)
            {
                return(err);
            }

            SubscriptionDataModel sdm = this.sds.SelectByDeviceIdAndSubscription(deviceId, subscription);

            if (sdm != null)
            {
                // Delete it from the d/b
                this.sds.Delete(sdm);
                return(PushMessageError.Success);
            }

            return(PushMessageError.ErrorDeviceNotRegisteredForSubscription);
        }
Beispiel #14
0
        public SubscriptionDataModel Add(SubscriptionDataModel subscription)
        {
            if (subscription == null)
            {
                return(subscription);
            }

            lock (_lock)
            {
                if (_subscriptions.Any(_ => _.Username == subscription.Username))
                {
                    throw new DuplicateSubscriptionException();
                }

                subscription.CreationTime             = DateTime.Now;
                subscription.TotalNotificationsPushed = 0;
                _subscriptions.Add(subscription);
            }

            return(subscription);
        }
        public void When_AddIsCalled_AndSubscriptionIsAlreadyAdded_Then_DuplicateSubscriptionExceptionIsThrown()
        {
            var subscription = new SubscriptionDataModel
            {
                Username    = "******",
                AccessToken = "testtoken",
                TotalNotificationsPushed = 1,
            };

            var repository = new SubscriptionRepository();
            var result     = repository.Add(subscription);

            try
            {
                result = repository.Add(subscription);
            }
            catch (Exception ex)
            {
                // Assert
                Assert.IsTrue(ex is DuplicateSubscriptionException);
            }
        }
Beispiel #16
0
 public bool Remove(SubscriptionDataModel subscription)
 {
     throw new NotImplementedException();
 }