Example #1
0
        public async Task When_ResourceCreated_Then_Attributes_Populated()
        {
            using var t = SystemTime.PauseForThread();

            // Arrange
            var executor = TestApiOperationExecutor.CreateHttp(o => o
                                                               .WithOperation <CreationOperation>()
                                                               .WithOperation <SelfQuery>()
                                                               .AddResourceEvents <NullResourceEventRepository>());

            // Act
            var context = executor.HttpContextFor(new CreationOperation {
                IdToCreate = "1234"
            });

            var result = await executor.ExecuteAsync(context);

            // Assert
            var @event = result.ShouldBeContent <CreatedResourceEvent>();

            @event.Created.UtcDateTime.Should().BeCloseTo(t.UtcNow);
            @event.Object.Should().Be("event");
            @event.EventId.Should().Be("awesome.created");
            @event.ChangeType.Should().Be(ResourceEventChangeType.Created);
            @event.ResourceObject.Should().Be("awesome");
            @event.Href.Should().Be("https://api.blueprint-testing.com/api/resources/1234");
        }
        public async Task When_ResourceDeleted_ApiResource_Returned_With_Then_Href_Populated()
        {
            // Arrange
            using var t = SystemTime.PauseForThread();

            var executor = TestApiOperationExecutor
                           .CreateStandalone(o => o
                                             .Http()
                                             .AddHateoasLinks()
                                             .AddResourceEvents <NullResourceEventRepository>()
                                             .WithOperation <ResourceSelfOperation>()
                                             .WithOperation <ResourceDeletionOperation>()
                                             .WithOperation <ResourceLinkWithoutIdOperation>()
                                             .WithOperation <ResourceLinkWithIdOperation>()
                                             );

            // Act
            var result = await executor.ExecuteAsync(new ResourceDeletionOperation
            {
                Id = "87457",
            });

            // Assert
            var okResult = result.ShouldBeOperationResultType <OkResult>();
            var @event   = okResult.Content.Should().BeOfType <ResourceDeleted <ResourceToReturn> >().Subject;

            @event.Created.UtcDateTime.Should().BeCloseTo(t.UtcNow);
            @event.Object.Should().Be("event");
            @event.EventId.Should().Be("toReturn.deleted");
            @event.ChangeType.Should().Be(ResourceEventChangeType.Deleted);
            @event.ResourceObject.Should().Be("toReturn");
            @event.Href.Should().Be("https://api.blueprint-testing.com/api/resources/87457");
        }
        public async Task When_ResourceCreated_Then_Attributes_Populated()
        {
            using (var t = SystemTime.PauseForThread())
            {
                // Arrange
                var executor = TestApiOperationExecutor.CreateHttp(o => o
                                                                   .WithOperation <CreationOperation>()
                                                                   .WithOperation <SelfQuery>()
                                                                   .AddResourceEvents <NullResourceEventRepository>()
                                                                   .AddAuthentication(a => a.UseContextLoader <TestUserAuthorisationContextFactory>())
                                                                   .AddAuthorisation());

                // Act
                var context = executor.HttpContextFor(new CreationOperation {
                    IdToCreate = "1234"
                })
                              .WithAuth(new Claim("sub", "User8547"));

                var result = await executor.ExecuteAsync(context);

                // Assert
                var @event = result.ShouldBeContent <CreatedResourceEvent>();

                @event.Created.UtcDateTime.Should().BeCloseTo(t.UtcNow);
                @event.Object.Should().Be("event");
                @event.EventId.Should().Be("awesome.created");
                @event.ChangeType.Should().Be(ResourceEventChangeType.Created);
                @event.ResourceObject.Should().Be("awesome");
            }
        }
Example #4
0
        public void When_DateTime_Is_Now_Then_Valid()
        {
            // Arrange
            using var t = SystemTime.PauseForThread();

            var dateTime = DateTime.UtcNow;

            // Act
            var isNotInPast = !dateTime.IsInPast(TemporalCheck.DateTime);

            // Assert
            Assert.IsTrue(isNotInPast);
        }
Example #5
0
        public void When_DateTime_Is_Now_Then_Invalid()
        {
            using var t = SystemTime.PauseForThread();

            // Arrange
            var dateTime = DateTime.UtcNow;

            // Act
            var isInPast = dateTime.IsInPast(TemporalCheck.DateTime);

            // Assert
            Assert.IsFalse(isInPast);
        }
Example #6
0
        public async Task Can_serialise_to_JSON()
        {
            // Arrange
            using var t = SystemTime.PauseForThread();
            t.SetUtcNow(new DateTime(2021, 07, 07, 0, 0, 0, DateTimeKind.Utc));

            var resourceEvent = new ResourceEvent <MyResource>(
                ResourceEventChangeType.Created,
                "createdInTest",
                new MyResource("test-1234", "My named resource"))
            {
                Metadata = new Dictionary <string, object>
                {
                    ["stringKey"]  = "value1",
                    ["numberKey"]  = 1,
                    ["booleanKey"] = true,
                },

                SecureData = new Dictionary <string, object>
                {
                    ["key1"] = "value1",
                },

                ChangedValues = new Dictionary <string, object>
                {
                    ["key1"] = "changed-value1",
                },

                CorrelationId = "my-correlation-id",

                Href = "https://www.my-api.com/my-resource/test-1234"
            };

            var prettyPrintOptions = new JsonSerializerOptions(JsonSerializerOptions)
            {
                WriteIndented = true
            };

            // Act
            var asJson = JsonSerializer.Serialize(resourceEvent, prettyPrintOptions);

            // Assert
            await Verifier.Verify(asJson);
        }