public void Unregister_FactoryAlreadyUnregistered_ThrowsCOMException()
        {
            var existingFactoryDetails = TestCookieServiceFactory.Unregister();

            // Perform the test
            Assert.Throws <COMException>(() => TestCookieServiceFactory.Unregister());

            // Reregister existing default cookie service.
            TestCookieServiceFactory.Register(existingFactoryDetails);
        }
        public void Unregister_ExistingFactoryExist_ExistingFactoryDetailsReturned()
        {
            var existingFactoryDetails = TestCookieServiceFactory.Unregister();

            Assert.NotNull(existingFactoryDetails);
            Assert.AreEqual(new Guid("c375fa80-150f-11d6-a618-0010a401eb10"), existingFactoryDetails.classID);
            Assert.NotNull(existingFactoryDetails.factoryInstance);

            // Reregister existing default cookie service.
            TestCookieServiceFactory.Register(existingFactoryDetails);
        }
        public void Unregister_ExistingFactoryThatHasBeenUnregisteredAndRegisterBefore_ExpectedFactoryDetailsReturned()
        {
            // Setup the test
            var existingFactoryDetails = TestCookieServiceFactory.Unregister();

            Assert.NotNull(existingFactoryDetails);
            Assert.AreEqual(new Guid("c375fa80-150f-11d6-a618-0010a401eb10"), existingFactoryDetails.classID);
            Assert.NotNull(existingFactoryDetails.factoryInstance);
            TestCookieServiceFactory.Register(existingFactoryDetails);

            // Perform the test
            existingFactoryDetails = TestCookieServiceFactory.Unregister();
            Assert.NotNull(existingFactoryDetails);
            Assert.AreEqual(new Guid("c375fa80-150f-11d6-a618-0010a401eb10"), existingFactoryDetails.classID);
            Assert.NotNull(existingFactoryDetails.factoryInstance);

            // Reregister existing default cookie service.
            TestCookieServiceFactory.Register(existingFactoryDetails);
        }
        public void Register_AfterDefaultFactoryHasBeenUnregistered_NewCookieServiceIsUsedInsteadOfDefaultOne()
        {
            FactoryDetails existingFactoryDetails = null;

            try
            {
                existingFactoryDetails = TestCookieServiceFactory.Unregister();
            }
            catch (Exception e)
            {
                throw e;
            }


            // Perform the test - register new factory.
            TestCookieServiceFactory.Register();

            // Test that the new cookies service is functioning correctly.
            Assert.AreEqual(0, TestCookieService.NumberOfTimesCreated);
            var browser = new GeckoWebBrowser();

            browser.Navigate("www.google.com");
            browser.NavigateFinishedNotifier.BlockUntilNavigationFinished();
            int numberOfTimeCookieCalledAfterFirstNavigate = TestCookieService.NumberOfTimesGetCookieCalled;

            browser.Navigate("www.google.com");
            browser.NavigateFinishedNotifier.BlockUntilNavigationFinished();
            int numberOfTimeCookieCalledAfterSecondNavigate = TestCookieService.NumberOfTimesGetCookieCalled;

            Assert.Greater(numberOfTimeCookieCalledAfterSecondNavigate, numberOfTimeCookieCalledAfterFirstNavigate);
            Assert.AreEqual(1, TestCookieService.NumberOfTimesCreated);


            // Put back the original default factory.
            // Note due to internal caching GeckoWebBrowser will still use TestCookieServiceFactory rather than
            // the Original from firefox/xulrunner version. (This is why this unittest is marked Explicit)
            // So whatever cookies service is avaliable when the first navigate is called, is used for all subsequence naviagates.
            // This means that the cookie service ("@mozilla.org/cookieService;1") must be replaced before the first navigate is called
            // to have any effect.
            TestCookieServiceFactory.Unregister();
            TestCookieServiceFactory.Register(existingFactoryDetails);
        }
 public void Register_FactoryAlreadyRegistered_ThrowsCOMException()
 {
     Assert.Throws <COMException>(() => TestCookieServiceFactory.Register());
 }