Exemplo n.º 1
0
        public void Notifo_ShouldNotSendTokenToBackend_IfApiKeyIsNotPresent()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();

            handler.SetupAnyRequest()
            .ReturnsResponse(HttpStatusCode.NoContent);

            var client = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetPushEventsProvider(eventsProvider);

            eventsProvider.RaiseOnTokenRefreshEvent();

            handler.VerifyAnyRequest(Times.Never());

            var settingsMock = mocker.GetMock <ISettings>();

            settingsMock.VerifySet(x => x.IsTokenRefreshed = false);
        }
Exemplo n.º 2
0
        public void Register_ShouldNotRefreshToken_IfRefreshIsAlreadyRunning()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();

            handler.SetupAnyRequest()
            .Returns(async() =>
            {
                await Task.Delay(100);
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.Unauthorized
                });
            });

            var client = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);
            mocker.Setup <ISettings, string>(x => x.Token).Returns("test token");

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetPushEventsProvider(eventsProvider)
            .SetApiKey("test api key");

            eventsProvider.RaiseOnTokenRefreshEvent();
            notifoMobilePush.Register();

            handler.VerifyAnyRequest(Times.Once());
        }
Exemplo n.º 3
0
        public void Register_ShouldSetTokenRefreshedTrue_IfRefreshWasSuccessful()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();

            handler.SetupAnyRequest()
            .ReturnsResponse(HttpStatusCode.NoContent);

            var client = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);
            mocker.Setup <ISettings, string>(x => x.Token).Returns("test token");

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetPushEventsProvider(eventsProvider)
            .SetApiKey("test api key")
            .Register();

            var settingsMock = mocker.GetMock <ISettings>();

            settingsMock.VerifySet(x => x.IsTokenRefreshed = true);
        }
Exemplo n.º 4
0
        public void Register_ShouldSetTokenRefreshedFalse_IfHttpServiceThrewException()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();

            handler.SetupAnyRequest()
            .Throws(new Exception());

            var client = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);
            mocker.Setup <ISettings, string>(x => x.Token).Returns("test token");

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetPushEventsProvider(eventsProvider)
            .SetApiKey("test api key")
            .Register();

            var settingsMock = mocker.GetMock <ISettings>();

            settingsMock.VerifySet(x => x.IsTokenRefreshed = false);
        }
Exemplo n.º 5
0
        public void Notifo_ShouldSendTokenToBackend_IfTokenRefreshEventRaised()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();

            handler.SetupAnyRequest()
            .ReturnsResponse(HttpStatusCode.NoContent);

            var client = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetBaseUrl("https://test.com/")
            .SetPushEventsProvider(eventsProvider)
            .SetApiKey("test api key");

            eventsProvider.RaiseOnTokenRefreshEvent();

            handler.VerifyRequest("https://test.com/api/me/mobilepush", Times.Once());

            var settingsMock = mocker.GetMock <ISettings>();

            settingsMock.VerifySet(x => x.IsTokenRefreshed = true);
        }
Exemplo n.º 6
0
        public void SetEventsProvider_ShouldNotSubscribeMutipleTimes_ForTheSameProvider()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();

            handler.SetupAnyRequest()
            .ReturnsResponse(HttpStatusCode.NoContent);

            var client = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetApiKey("test api key")
            .SetPushEventsProvider(eventsProvider)
            .SetPushEventsProvider(eventsProvider);

            eventsProvider.RaiseOnTokenRefreshEvent();

            handler.VerifyAnyRequest(Times.Once());
        }
Exemplo n.º 7
0
        public void OnNotificationOpened_ShouldSubscribeAndUnsubscribe_IfEventsProviderSupplied()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();
            var client  = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush.SetPushEventsProvider(eventsProvider);

            int invokeCount = 0;

            void EventHandler(object s, NotificationEventArgs e) => invokeCount += 1;

            notifoMobilePush.OnNotificationOpened += EventHandler;

            eventsProvider.RaiseOnNotificationOpenedEvent();
            invokeCount.Should().Be(1);

            notifoMobilePush.OnNotificationOpened -= EventHandler;

            eventsProvider.RaiseOnNotificationOpenedEvent();
            invokeCount.Should().Be(1);
        }
Exemplo n.º 8
0
        public void SetEventsProvider_ShouldUnsubscribeCurrentProvider_IfNewProviderSupplied()
        {
            var eventsProviderA = new EventsProviderMock();
            var eventsProviderB = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();

            handler.SetupAnyRequest()
            .ReturnsResponse(HttpStatusCode.NoContent);

            var client = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetApiKey("test api key")
            .SetPushEventsProvider(eventsProviderA);

            int invokeOpenCount = 0;

            void EventOpenHandler(object s, NotificationEventArgs e) => invokeOpenCount += 1;

            int invokeReceivedCount = 0;

            void EventReceivedHandler(object s, NotificationEventArgs e) => invokeReceivedCount += 1;

            notifoMobilePush.OnNotificationOpened   += EventOpenHandler;
            notifoMobilePush.OnNotificationReceived += EventReceivedHandler;

            notifoMobilePush.SetPushEventsProvider(eventsProviderB);
            notifoMobilePush.OnNotificationOpened   += EventOpenHandler;
            notifoMobilePush.OnNotificationReceived += EventReceivedHandler;

            eventsProviderA.RaiseOnTokenRefreshEvent();
            eventsProviderB.RaiseOnTokenRefreshEvent();

            handler.VerifyAnyRequest(Times.Once());

            eventsProviderA.RaiseOnNotificationOpenedEvent();
            eventsProviderB.RaiseOnNotificationOpenedEvent();

            invokeOpenCount.Should().Be(1);

            eventsProviderA.RaiseOnNotificationReceivedEvent();
            eventsProviderB.RaiseOnNotificationReceivedEvent();

            invokeReceivedCount.Should().Be(1);
        }
Exemplo n.º 9
0
        public void Notifo_ShouldPersistNewToken_WhenTokenRefreshEventRaised()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();
            var client  = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetPushEventsProvider(eventsProvider);

            eventsProvider.RaiseOnTokenRefreshEvent();

            var settingsMock = mocker.GetMock <ISettings>();

            settingsMock.VerifySet(x => x.Token = "test token");
        }
Exemplo n.º 10
0
        public void Notifo_ShouldNotSendTokenToBackend_IfTokenRefreshEventNotRaised()
        {
            var eventsProvider = new EventsProviderMock();

            var handler = new Mock <HttpMessageHandler>();

            handler.SetupAnyRequest()
            .ReturnsResponse(HttpStatusCode.NoContent);

            var client = handler.CreateClient();

            var mocker = new AutoMocker();

            mocker.Use(client);

            var notifoMobilePush = mocker.CreateInstance <NotifoMobilePushImplementation>();

            notifoMobilePush
            .SetPushEventsProvider(eventsProvider)
            .SetApiKey("test api key");

            handler.VerifyAnyRequest(Times.Never());
        }