protected ArtifactBase(TUdi udi, IEnumerable <ArtifactDependency> dependencies = null)
        {
            Udi  = udi ?? throw new ArgumentNullException("udi");
            Name = Udi.ToString();

            Dependencies = dependencies ?? Enumerable.Empty <ArtifactDependency>();
            _checksum    = new Lazy <string>(GetChecksum);
        }
        /// <inheritdoc />
        public IEnumerable <NexuRelation> GetIncomingRelationsForItem(Udi udi)
        {
            using (var scope = this.scopeProvider.CreateScope(autoComplete: true))
            {
                var db = scope.Database;

                var udiString = udi.ToString();

                var sql = new Sql <ISqlContext>(scope.SqlContext);
                sql.Where <NexuRelation>(x => x.ChildUdi == udiString);

                return(db.Fetch <NexuRelation>(sql));
            }
        }
Beispiel #3
0
        public void GuidUdiParseTest()
        {
            var guid = Guid.NewGuid();
            var s    = "umb://" + Constants.UdiEntityType.AnyGuid + "/" + guid.ToString("N");
            Udi udi  = UdiParser.Parse(s);

            Assert.AreEqual(Constants.UdiEntityType.AnyGuid, udi.EntityType);
            Assert.IsInstanceOf <GuidUdi>(udi);
            var gudi = udi as GuidUdi;

            Assert.IsNotNull(gudi);
            Assert.AreEqual(guid, gudi.Guid);
            Assert.AreEqual(s, udi.ToString());
        }
        /// <inheritdoc />
        public void PersistRelationsForContentItem(Udi contentItemUdi, IEnumerable <NexuRelation> relations)
        {
            using (var scope = this.scopeProvider.CreateScope(autoComplete: true))
            {
                using (var transaction = scope.Database.GetTransaction())
                {
                    var db = scope.Database;

                    var udiString = contentItemUdi.ToString();

                    var deleteSql = new Sql <ISqlContext>(scope.SqlContext);
                    deleteSql.Where <NexuRelation>(x => x.ParentUdi == udiString);

                    db.Delete <NexuRelation>(deleteSql);

                    db.BulkInsertRecords(relations);

                    transaction.Complete();
                }
            }
        }
Beispiel #5
0
    public async Task Node_Udi_Id_From_QueryString_With_Permission_Is_Authorized()
    {
        var authHandlerContext      = CreateAuthorizationHandlerContext();
        var mockHttpContextAccessor = CreateMockHttpContextAccessor(queryStringValue: s_nodeUdi.ToString());
        var sut = CreateHandler(mockHttpContextAccessor.Object, NodeId, new[] { "A" });

        await sut.HandleAsync(authHandlerContext);

        Assert.IsTrue(authHandlerContext.HasSucceeded);
        AssertContentCached(mockHttpContextAccessor);
    }
        public async Task Node_Udi_Id_From_QueryString_With_Permission_Is_Authorized()
        {
            AuthorizationHandlerContext        authHandlerContext      = CreateAuthorizationHandlerContext();
            Mock <IHttpContextAccessor>        mockHttpContextAccessor = CreateMockHttpContextAccessor(queryStringValue: s_nodeUdi.ToString());
            MediaPermissionsQueryStringHandler sut = CreateHandler(mockHttpContextAccessor.Object, NodeId);

            await sut.HandleAsync(authHandlerContext);

            Assert.IsTrue(authHandlerContext.HasSucceeded);
            AssertMediaCached(mockHttpContextAccessor);
        }
Beispiel #7
0
        public void StringEncodingTest()
        {
            // absolute path is unescaped
            var uri = new Uri("umb://" + Constants.UdiEntityType.AnyString + "/this%20is%20a%20test");

            Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/this is a test", uri.ToString());
            Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/this%20is%20a%20test", uri.AbsoluteUri);
            Assert.AreEqual("/this%20is%20a%20test", uri.AbsolutePath);

            Assert.AreEqual("/this is a test", Uri.UnescapeDataString(uri.AbsolutePath));
            Assert.AreEqual("%2Fthis%20is%20a%20test", Uri.EscapeDataString("/this is a test"));
            Assert.AreEqual("/this%20is%20a%20test", Uri.EscapeUriString("/this is a test"));

            Udi udi = UdiParser.Parse("umb://" + Constants.UdiEntityType.AnyString + "/this%20is%20a%20test");

            Assert.AreEqual(Constants.UdiEntityType.AnyString, udi.EntityType);
            Assert.IsInstanceOf <StringUdi>(udi);
            var stringEntityId = udi as StringUdi;

            Assert.IsNotNull(stringEntityId);
            Assert.AreEqual("this is a test", stringEntityId.Id);
            Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/this%20is%20a%20test", udi.ToString());

            var udi2 = new StringUdi(Constants.UdiEntityType.AnyString, "this is a test");

            Assert.AreEqual(udi, udi2);

            var udi3 = new StringUdi(Constants.UdiEntityType.AnyString, "path to/this is a test.xyz");

            Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/path%20to/this%20is%20a%20test.xyz", udi3.ToString());
        }
Beispiel #8
0
        public void StringUdiParseTest()
        {
            Udi udi = UdiParser.Parse("umb://" + Constants.UdiEntityType.AnyString + "/test-id");

            Assert.AreEqual(Constants.UdiEntityType.AnyString, udi.EntityType);
            Assert.IsInstanceOf <StringUdi>(udi);
            var stringEntityId = udi as StringUdi;

            Assert.IsNotNull(stringEntityId);
            Assert.AreEqual("test-id", stringEntityId.Id);
            Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/test-id", udi.ToString());

            udi = UdiParser.Parse("umb://" + Constants.UdiEntityType.AnyString + "/DA845952BE474EE9BD6F6194272AC750");
            Assert.IsInstanceOf <StringUdi>(udi);
        }