Example #1
0
        public void TestPhunCacheCanGetAndSetValueFromCache()
        {
            // Arrange
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();
            var fakeConfig = new Mock<ICmsConfiguration>();

            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            fakeRepository.Setup(r => r.Exists(It.IsAny<ContentModel>())).Returns(false);
            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/testfailed"));
            mockRequest.Setup(rq => rq.Path).Returns("/testfailed");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            context.Setup(c => c.Cache).Returns(HttpRuntime.Cache);
            mockRequest.Setup(rq => rq.QueryString).Returns(new NameValueCollection());
            fakeConfig.Setup(cf => cf.IsResourceRoute(It.IsAny<string>())).Returns(false);

            // Act
            var cache = new PhunCache(context.Object);
            var expected = new ContentConnector();
            var initialCount = HttpRuntime.Cache.Count;
            cache.set("connector", expected);
            var afterCount = HttpRuntime.Cache.Count;

            // Assert
            Assert.AreEqual(initialCount + 1, afterCount);
            var result = cache.get("connector");
            Assert.AreEqual(expected, result);
        }
Example #2
0
        public void TestPhunApiContentUrlReturnsContentDownloadPath()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();
            var fakeConfig = new Mock<ICmsConfiguration>();
            var expected = "/asdf/download/content/testz";

            fakeRepository.Setup(r => r.Exists(It.IsAny<ContentModel>())).Returns(true);
            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/testz"));
            mockRequest.Setup(rq => rq.Path).Returns("/testz");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            context.Setup(c => c.Cache).Returns(HttpRuntime.Cache);
            mockRequest.Setup(rq => rq.QueryString).Returns(new NameValueCollection());
            fakeConfig.Setup(cf => cf.ContentRouteNormalized).Returns("asdf");
            fakeUtility.Setup(u => u.Config).Returns(fakeConfig.Object);

            var api = new PhunApi(context.Object, connector);
            api.utility = fakeUtility.Object;

            // Act
            var result = api.contentUrl("/testz");

            // Assert
            Assert.AreEqual(expected, result);
        }
        public void TestCreateOrUpdateThrowsRootPathError()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();

            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;

            // Act
            connector.CreateOrUpdate(null, null, new Uri("http://localhost/test"));
        }
        public void TestCreateReturnErrorForExistingContent()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();

            fakeRepository.Setup(r => r.Exists(It.IsAny<ContentModel>())).Returns(true);
            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;

            // Act
            connector.Create("/test", string.Empty, new Uri("http://localhost/test"));
        }
        public void TestCreateOrUpdateCanCreateEmptyFile()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();

            fakeRepository.Setup(r => r.Save(It.Is<ContentModel>(cm => cm.Data == null))).Verifiable();
            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            fakeUtility.Setup(u => u.Normalize(It.IsAny<string>())).Returns("/test");
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;

            // Act
            var result = connector.CreateOrUpdate("/test", null, new Uri("http://localhost/test"));

            // Assert
            fakeRepository.VerifyAll();
            Assert.IsNull(result.Data);
        }
Example #6
0
        public void TestPhunApiBundlesCallUtilityRenderBundles()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();

            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/testz"));
            mockRequest.Setup(rq => rq.Path).Returns("/testz");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            fakeUtility.Setup(u => u.PhunCmsRenderBundles(true, true, true, true, true)).Verifiable();

            var api = new PhunApi(context.Object, connector);
            api.utility = fakeUtility.Object;

            // Act
            api.bundles();

            // Assert
            fakeUtility.VerifyAll();
        }
        public void TestRetrieveThrowsNotFoundException()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();

            fakeRepository.Setup(r => r.Retrieve(It.IsAny<ContentModel>(), It.IsAny<bool>())).Returns(new ContentModel());
            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            fakeUtility.Setup(u => u.Normalize(It.IsAny<string>())).Returns("/test");
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;

            // Act
            connector.Retrieve("/test", new Uri("http://localhost/test"));
        }
        public void TestRetrieveReturnsValidContent()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();
            var expected = 100;

            fakeRepository.Setup(r => r.Retrieve(It.IsAny<ContentModel>(), It.IsAny<bool>())).Returns(new ContentModel() { DataLength = expected });
            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            fakeUtility.Setup(u => u.Normalize(It.IsAny<string>())).Returns("/test");
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;

            // Act
            var result = connector.Retrieve("/test", new Uri("http://localhost/test"));

            // Assert
            Assert.AreEqual(expected, result.DataLength);
        }
        public void TestRetrieveFolderReturnAZipFile()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();

            fakeRepository.Setup(r => r.GetFolder(It.IsAny<ContentModel>())).Returns(System.IO.Path.GetTempFileName());
            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;

            // Act
            var result = connector.Retrieve("/test/", new Uri("http://localhost/test"));

            // Assert
            Assert.IsNotNull(result.Data);
            Assert.IsTrue(result.Path.EndsWith(".zip"));
        }
Example #10
0
        public void TestPhunApiRequireReturnAnInstanceOfRegisteredApiObject()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();

            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/testz"));
            mockRequest.Setup(rq => rq.Path).Returns("/testz");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            fakeUtility.Setup(u => u.PhunPartialEditable(It.IsAny<Uri>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<object>())).Verifiable();

            var api = new PhunApi(context.Object, connector);
            api.utility = fakeUtility.Object;
            Bootstrapper.Default.RegisterRequireJsModule<ContentConnector>("connector");

            // Act
            var result = api.require("connector");
            Bootstrapper.Default.ApiList.Clear();

            // Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(ContentConnector));
        }
        public void TestListReturnsQueryable()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();

            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            fakeUtility.Setup(u => u.Normalize(It.IsAny<string>())).Returns("/test");
            fakeRepository.Setup(r => r.Exists(It.IsAny<ContentModel>())).Returns(true);
            fakeRepository.Setup(r => r.List(It.IsAny<ContentModel>()))
                          .Returns(new List<ContentModel>().AsQueryable());
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;

            // Act
            var result = connector.List("/test", new Uri("http://localhost/test"));

            // Assert
            Assert.IsNotNull(result);
        }
Example #12
0
        public void TestPhunApiTenantHostReturnInternalProperty()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();
            var expected = "testing";

            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/testz"));
            mockRequest.Setup(rq => rq.Path).Returns("/testz");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            fakeUtility.Setup(u => u.PhunPartialEditable(It.IsAny<Uri>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<object>())).Verifiable();

            var api = new PhunApi(context.Object, connector);
            api.utility = fakeUtility.Object;
            api.host = expected;

            // Act
            var result = api.tenantHost;

            // Assert
            Assert.AreEqual(expected, result);
        }
Example #13
0
        public void TestPhunApiResourceUrlCallUtilityGetResourcePath()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();

            fakeRepository.Setup(r => r.Exists(It.IsAny<ContentModel>())).Returns(true);
            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/testz"));
            mockRequest.Setup(rq => rq.Path).Returns("/testz");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            context.Setup(c => c.Cache).Returns(HttpRuntime.Cache);
            mockRequest.Setup(rq => rq.QueryString).Returns(new NameValueCollection());
            fakeUtility.Setup(u => u.GetResourcePath("/testz")).Verifiable();

            var api = new PhunApi(context.Object, connector);
            api.utility = fakeUtility.Object;

            // Act
            api.resourceUrl("/testz");

            // Assert
            fakeUtility.VerifyAll();
        }
Example #14
0
        public void TestPhunApiRequireReturnInteralProperties()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();
            var expectedFileSystem = new Mock<IFileSystem>();
            var expectedPath = new Mock<IPath>();

            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/testz"));
            mockRequest.Setup(rq => rq.Path).Returns("/testz");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            fakeUtility.Setup(u => u.PhunPartialEditable(It.IsAny<Uri>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<object>())).Verifiable();

            var api = new PhunApi(context.Object, connector);
            api.utility = fakeUtility.Object;
            api.phunFileSystem = expectedFileSystem.Object;
            api.phunPath = expectedPath.Object;

            // Act
            // Assert
            Assert.AreEqual(expectedFileSystem.Object, api.require("fs"));
            Assert.AreEqual(expectedPath.Object, api.require("path"));
            Assert.AreEqual(null, api.require("unknown"));
        }
        public void TestDeleteSuccessfullyCallRepositoryRemove()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();

            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            fakeUtility.Setup(u => u.Normalize(It.IsAny<string>())).Returns("/test");
            fakeRepository.Setup(r => r.Remove(It.IsAny<ContentModel>())).Verifiable();
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;

            // Act
            connector.Delete("/test", new Uri("http://localhost/test"));

            // Assert
            fakeRepository.VerifyAll();
        }
        public void TestRenderPageRenderResource()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var fakeRepository = new Mock<IContentRepository>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();
            var fakeConfig = new Mock<ICmsConfiguration>();
            var fakeResourceFile = new Mock<ResourceVirtualFile>();

            fakeUtility.Setup(u => u.GetTenantHost(It.IsAny<Uri>())).Returns("localhost");
            fakeRepository.Setup(r => r.Exists(It.IsAny<ContentModel>())).Returns(true);
            connector.ContentRepository = fakeRepository.Object;
            connector.PathUtility = fakeUtility.Object;
            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/test"));
            mockRequest.Setup(rq => rq.Path).Returns("/test");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            context.Setup(c => c.Cache).Returns(new Cache());
            mockRequest.Setup(rq => rq.QueryString).Returns(new NameValueCollection());
            fakeResourceFile.Setup(rf => rf.WriteFile(It.IsAny<HttpContextBase>())).Verifiable();
            fakeConfig.Setup(cf => cf.IsResourceRoute(It.IsAny<string>())).Returns(true);
            fakeConfig.Setup(cf => cf.GetResourceFile(It.IsAny<string>())).Returns(fakeResourceFile.Object);
            connector.Config = fakeConfig.Object;

            // Act
            connector.RenderPage(context.Object);

            // Assert
            fakeResourceFile.VerifyAll();
        }
Example #17
0
        public void TestPhunApiPartialEditableCallUtilityPhunPartialEditable()
        {
            // Arrange
            var connector = new ContentConnector();
            var fakeUtility = new Mock<ResourcePathUtility>();
            var mockRequest = new Mock<HttpRequestBase>();
            var context = new Mock<HttpContextBase>();

            mockRequest.Setup(rq => rq.Url).Returns(new Uri("http://localhost/testz"));
            mockRequest.Setup(rq => rq.Path).Returns("/testz");
            context.Setup(ctx => ctx.Request).Returns(mockRequest.Object);
            fakeUtility.Setup(u => u.PhunPartialEditable(It.IsAny<Uri>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<object>())).Verifiable();

            var api = new PhunApi(context.Object, connector);
            api.utility = fakeUtility.Object;

            // Act
            api.partialEditable("test", "test", new { title = "test" });

            // Assert
            fakeUtility.VerifyAll();
        }