Example #1
0
        public async Task SendAsyncFind_WithOmit_Omits()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();
            var layout   = "the-layout";

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/sessions")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/layouts/*")
            .WithPartialContent("omit")
            .Respond(HttpStatusCode.OK, "application/json", DataApiResponses.SuccessfulFind());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), FindTestsHelpers.Connection);

            var toFind = new User()
            {
                Id = 35
            };
            var req = new FindRequest <User>()
            {
                Layout = layout
            };

            req.AddQuery(toFind, true);
            var response = await fdc.SendAsync(req);

            // assert
            // since we're not really talking to fms, we know our
            // response data has 4, so we know if we had an 'omit'
            // in our request and a 4 in our response things worked as expected.
            Assert.Contains(response, c => c.Id == 4);
        }
Example #2
0
        public async Task SendAsync_Dictionary_WithPortals_ShouldHaveData()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var layout = "the-layout";

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/sessions")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/layouts/{layout}/_find")
            .Respond(HttpStatusCode.OK, "application/json", DataApiResponses.SuccessfulFindWithPortal());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), FindTestsHelpers.Connection);

            var fr = new FindRequest <Dictionary <string, string> >
            {
                Layout = layout
            };

            fr.AddQuery(new Dictionary <string, string> {
                { "one", "one" }
            }, false);

            // act
            var response = await fdc.SendAsync(fr);

            // assert
            Assert.NotEmpty(response.Response.Data);
        }
Example #3
0
        public async Task SendAsync_Find_Should_Have_DataInfo()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var layout = "the-layout";

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/sessions")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/layouts/{layout}/_find")
            .Respond(HttpStatusCode.OK, "application/json", DataApiResponses.SuccessfulFindWithDataInfo());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), FindTestsHelpers.Connection);

            var toFind = new User()
            {
                Id = 35
            };
            var req = new FindRequest <User>()
            {
                Layout = layout
            };

            req.AddQuery(toFind, false);

            // act
            var(data, info) = await fdc.SendAsync(req, true);

            // assert
            Assert.NotEmpty(data);
            Assert.Equal(1, info.ReturnedCount);
            Assert.Equal(123, info.FoundCount);
        }
Example #4
0
        public async Task SendAsyncFind_WithoutLayout_ShouldThrow()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var layout = FileMakerRestClient.GetLayoutName(new User());

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/sessions")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/layouts/{layout}/_find")
            .Respond(HttpStatusCode.InternalServerError, "application/json", DataApiResponses.FindNotFound());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), FindTestsHelpers.Connection);

            // act
            var toFind = new User()
            {
                Id = 35
            };

            // assert
            var req = new FindRequest <User>()
            {
            };

            req.AddQuery(toFind, false);
            await Assert.ThrowsAsync <ArgumentException>(async() => await fdc.SendAsync(req));
        }
        public async Task SendAsyncFind_Record_ThatDoesNotExist_ShouldReturnEmpty()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var layout = FileMakerRestClient.GetLayoutName(new User());

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.server}/fmi/data/v1/databases/{FindTestsHelpers.file}/sessions")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.server}/fmi/data/v1/databases/{FindTestsHelpers.file}/layouts/{layout}/_find")
            .Respond(HttpStatusCode.InternalServerError, "application/json", DataApiResponses.FindNotFound());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(),
                                              FindTestsHelpers.server,
                                              FindTestsHelpers.file,
                                              FindTestsHelpers.user,
                                              FindTestsHelpers.pass);

            // act
            var toFind = new User()
            {
                Id = 35
            };
            var req = new FindRequest <User>()
            {
                Layout = layout
            };

            req.AddQuery(toFind, false);
            var response = await fdc.SendAsync(req);

            // assert
            Assert.Empty(response);
        }
Example #6
0
        public async Task EditAsync_Should_Throw_FMDataException_For_InternalServerError()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/sessions")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            mockHttp.When(new HttpMethod("PATCH"), $"{s_server}/fmi/data/v1/databases/{s_file}/layouts/{s_layout}/records*")
            .WithPartialContent("fieldData")
            .Respond(HttpStatusCode.InternalServerError, "application/json", DataApiResponses.FieldNotFound());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), FindTestsHelpers.Connection);

            var req = new EditRequest <Dictionary <string, string> >()
            {
                Layout   = s_layout,
                RecordId = 264,
                Data     = new Dictionary <string, string>()
                {
                    { "Name", "Fuzzerd-Updated" },
                    { "AnotherField", "Another-Updated" }
                }
            };

            // act
            // assert
            await Assert.ThrowsAsync <FMDataException>(async() => await fdc.SendAsync(req));
        }
Example #7
0
        public async Task SendAsyncFind_WithBadLayout_Throws()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/sessions")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            mockHttp.When(HttpMethod.Post, $"{FindTestsHelpers.Server}/fmi/data/v1/databases/{FindTestsHelpers.File}/layouts/*")
            .Respond(HttpStatusCode.InternalServerError, "application/json", DataApiResponses.LayoutNotFound());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), FindTestsHelpers.Connection);

            // act
            // assert
            await Assert.ThrowsAsync <FMDataException>(async() => await fdc.SendAsync(FindTestsHelpers.FindUserReqWithLayoutOverride()));
        }
Example #8
0
        public async Task EditShould_UpdateRecord_WithId()
        {
            FileMakerRestClient fdc = GenerateClient();

            var req = new EditRequest <Dictionary <string, string> >()
            {
                Layout   = "layout",
                RecordId = 264,
                Data     = new Dictionary <string, string>()
                {
                    { "Name", "Fuzzerd-Updated" },
                    { "AnotherField", "Another-Updated" }
                }
            };
            var response = await fdc.SendAsync(req);

            Assert.NotNull(response);
            Assert.Contains(response.Messages, r => r.Message == "OK");
        }