public async Task ReleaseIsNotLive()
        {
            var release = new Release();

            var publication = new Publication
            {
                Releases = ListOf(release)
            };

            var contextId = Guid.NewGuid().ToString();

            await using (var contentDbContext = InMemoryContentDbContext(contextId))
            {
                await contentDbContext.AddAsync(publication);

                await contentDbContext.SaveChangesAsync();
            }

            await using (var contentDbContext = InMemoryContentDbContext(contextId))
            {
                var handler = new ViewReleaseAuthorizationHandler(contentDbContext);

                var authContext = new AuthorizationHandlerContext(
                    new IAuthorizationRequirement[] { Activator.CreateInstance <ViewReleaseRequirement>() },
                    null,
                    release
                    );

                await handler.HandleAsync(authContext);

                Assert.False(authContext.HasSucceeded);
            }
        }
Ejemplo n.º 2
0
        public async Task ReleaseIsLiveAndLatestVersion()
        {
            var publication = new Publication();

            var olderRelease = new Release
            {
                Published   = DateTime.Parse("2019-10-08T12:00:00"),
                Publication = publication
            };

            var newerRelease = new Release
            {
                Published       = DateTime.Parse("2019-10-10T12:00:00"),
                Publication     = publication,
                PreviousVersion = olderRelease,
            };

            publication.Releases.AddRange(
                new List <Release>
            {
                olderRelease,
                newerRelease,
            }
                );

            var contextId = Guid.NewGuid().ToString();

            await using (var contentDbContext = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                await contentDbContext.AddAsync(publication);

                await contentDbContext.SaveChangesAsync();
            }

            await using (var contentDbContext = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                var handler = new ViewReleaseAuthorizationHandler(contentDbContext);

                var authContext = new AuthorizationHandlerContext(
                    new IAuthorizationRequirement[] { Activator.CreateInstance <ViewReleaseRequirement>() },
                    null,
                    newerRelease
                    );

                await handler.HandleAsync(authContext);

                Assert.True(authContext.HasSucceeded);
            }
        }
        public async Task ReleaseNotFound()
        {
            await using var contentDbContext = InMemoryContentDbContext();

            var handler = new ViewReleaseAuthorizationHandler(contentDbContext);

            var authContext = new AuthorizationHandlerContext(
                new IAuthorizationRequirement[] { Activator.CreateInstance <ViewReleaseRequirement>() },
                null,
                new Release
            {
                Id = Guid.NewGuid()
            }
                );

            await handler.HandleAsync(authContext);

            Assert.False(authContext.HasSucceeded);
        }
        public async Task ReleaseIsLiveButNotLatestVersion()
        {
            var originalRelease = new Release
            {
                Published = new DateTime(2020, 1, 1),
            };

            var amendedRelease = new Release
            {
                Published       = new DateTime(2020, 2, 1),
                PreviousVersion = originalRelease,
            };

            var publication = new Publication
            {
                Releases = ListOf(originalRelease, amendedRelease)
            };

            var contextId = Guid.NewGuid().ToString();

            await using (var contentDbContext = InMemoryContentDbContext(contextId))
            {
                await contentDbContext.AddAsync(publication);

                await contentDbContext.SaveChangesAsync();
            }

            await using (var contentDbContext = InMemoryContentDbContext(contextId))
            {
                var handler = new ViewReleaseAuthorizationHandler(contentDbContext);

                var authContext = new AuthorizationHandlerContext(
                    new IAuthorizationRequirement[] { Activator.CreateInstance <ViewReleaseRequirement>() },
                    null,
                    originalRelease
                    );

                await handler.HandleAsync(authContext);

                Assert.False(authContext.HasSucceeded);
            }
        }