public async Task Find_WithScript_ShouldHaveScript()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var layout = "Users";

            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")
            .WithPartialContent("fuzzzerd")     // ensure the request contains the expected content
            .WithPartialContent("script").WithPartialContent("nos_ran")
            .Respond("application/json", DataApiResponses.SuccessfulFind());

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

            // act
            var response = await fdc.FindAsync(new User()
            {
                Name = "fuzzzerd"
            }, "nos_ran", null, null);

            // assert
            var responseDataContainsResult = response.Any(r => r.Created == DateTime.Parse("03/29/2018 15:22:09"));

            Assert.True(responseDataContainsResult);
        }
        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));
        }
        public async Task FindAsync_WithSkipTake_ShouldHave_LimitOffset()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var layout = "Users";

            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")
            .WithPartialContent("limit")     // ensure the request contains the expected content
            .WithPartialContent("offset")    // ensure the request contains the expected content
            .Respond("application/json", DataApiResponses.SuccessfulFind());

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

            // act
            var response = await fdc.FindAsync(new User()
            {
                Name = "fuzzzerd"
            }, 5, 5);

            // assert
            Assert.NotEmpty(response);
        }
Exemple #4
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);
        }
Exemple #5
0
        public async Task GetLayout_Should_Return_Layout_Metadata()
        {
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";

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

            var layoutData = System.IO.File.ReadAllText(Path.Combine("ResponseData", "SpecificLayout.json"));

            mockHttp.When($"{server}/fmi/data/v1/databases/{file}/layouts/*")
            .Respond("application/json", layoutData);

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            var response = await fdc.GetLayoutAsync("layout");

            Assert.NotNull(response);
            Assert.Equal("CustomerName", response.FieldMetaData.FirstOrDefault().Name);
            // sample data has one value list with two items
            Assert.Equal(2, response.ValueLists.First().Values.Count);
        }
Exemple #6
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);
        }
Exemple #7
0
        public async Task Find_NotFound_Should_ReturnEmpty()
        {
            // 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
            };
            var response = await fdc.FindAsync(toFind);

            // assert
            Assert.Empty(response);
        }
Exemple #8
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 FindAsync_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.server,
                                              FindTestsHelpers.file,
                                              FindTestsHelpers.user,
                                              FindTestsHelpers.pass);

            var toFind = new PortalModel()
            {
                ES_ONE = ""
            };

            // act
            var response = await fdc.FindAsync(toFind);

            // assert
            Assert.NotEmpty(response);
            Assert.NotEmpty(response.SelectMany(p => p.Actions));
            // hard coded from sample data, if changed update here
            Assert.Equal(16, response.First().Actions.First().ID);
        }
        public async Task GetByRecordId_ShouldHaveContainerWithContainerDataFor()
        {
            // arrange
            object FMrecordIdMapper(ContainerFieldTestModel o, int id) => o.FileMakerRecordId = id;

            var mockHttp = new MockHttpMessageHandler();

            var server   = "http://localhost";
            var file     = "test-file";
            var user     = "******";
            var pass     = "******";
            var layout   = "Users";
            var recordId = 26;

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

            var b64String = System.IO.File.ReadAllText("ResponseData\\b64-string.dat");
            var bytes     = Convert.FromBase64String(b64String);
            var b64       = new ByteArrayContent(bytes);

            mockHttp.When(HttpMethod.Get, $"{server}/some-data-path")
            .Respond(b64);

            mockHttp.When(HttpMethod.Get, $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records/{recordId}")
            .Respond("application/json", DataApiResponses.SuccessfulGetByIdWithContainer(recordId, $"{server}/some-data-path"));

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

            // act
            var response = await fdc.GetByFileMakerIdAsync <ContainerFieldTestModel>(recordId, FMrecordIdMapper);

            // assert
            Assert.Equal(bytes, response.SomeContainerFieldData);
        }
Exemple #11
0
        public async Task GetLayouts_Should_Return_Layout_List()
        {
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";

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

            var layoutData = System.IO.File.ReadAllText(Path.Combine("ResponseData", "LayoutList.json"));

            mockHttp.When($"{server}/fmi/data/v1/databases/{file}/layouts")
            .Respond("application/json", layoutData);

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            var response = await fdc.GetLayoutsAsync();

            Assert.NotNull(response);
            Assert.Equal("Customers", response.First().Name);
        }
        public async Task GetByRecordId_ShouldReturnMatchingRecordId()
        {
            // arrange
            object FMrecordIdMapper(User o, int id) => o.FileMakerRecordId = id;

            var mockHttp = new MockHttpMessageHandler();

            var server   = "http://localhost";
            var file     = "test-file";
            var user     = "******";
            var pass     = "******";
            var layout   = "Users";
            var recordId = 26;

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

            mockHttp.When(HttpMethod.Get, $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records/{recordId}")
            .Respond("application/json", DataApiResponses.SuccessfulGetById(recordId));

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

            // act
            var response = await fdc.GetByFileMakerIdAsync <User>(layout, recordId, FMrecordIdMapper);

            // assert
            Assert.Equal(recordId, response.FileMakerRecordId);
        }
Exemple #13
0
        public async Task Delete_Should_Throw_FMDataException_For_InternalServerError()
        {
            // arrange
            // NOT DRY, but used to specify special request endpoints
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";
            var layout = "Users";

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

            mockHttp.When(HttpMethod.Delete, $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records/*")
            .Respond(HttpStatusCode.InternalServerError, "application/json", DataApiResponses.LayoutNotFound());

            var mockedClient = mockHttp.ToHttpClient();

            var fdc = new FileMakerRestClient(mockedClient, new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            // act
            // assert
            await Assert.ThrowsAsync <FMDataException>(async() => await fdc.DeleteAsync <TestModels.User>(2));
        }
        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);
        }
        public async Task DeleteByModel_Should_ReturnOK()
        {
            // arrange
            // NOT DRY, but used to specify special request endpoints
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";
            var layout = "Users";

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

            mockHttp.When(HttpMethod.Delete, $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records/*")
            .Respond("application/json", DataApiResponses.SuccessfulDelete());

            var mockedClient = mockHttp.ToHttpClient();

            var fdc = new FileMakerRestClient(mockedClient, server, file, user, pass);

            // act
            var response = await fdc.DeleteAsync <TestModels.User>(2);

            // assert
            Assert.NotNull(response);
            Assert.Contains(response.Messages, r => r.Message == "OK");
        }
Exemple #16
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);
        }
Exemple #17
0
        public async Task Test_DateTime_To_Timestamp_Parsing()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";
            var layout = "Users";

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

            mockHttp.When(HttpMethod.Post, $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/_find")
            .WithPartialContent("fuzzzerd")     // ensure the request contains the expected content
            .Respond("application/json", DataApiResponses.SuccessfulFind());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            // act
            var response = await fdc.FindAsync(new User()
            {
                Name = "fuzzzerd"
            });

            // assert
            var responseDataContainsResult = response.Any(r => r.Created == DateTime.Parse("03/29/2018 15:22:09"));

            Assert.True(responseDataContainsResult);
        }
Exemple #18
0
        public async Task Run_Script_Should_Return_Script_Result_When_ScriptError_Zero()
        {
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";
            var layout = "layout";

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

            var scriptResponse = System.IO.File.ReadAllText("ResponseData\\ScriptResponseOK.json");

            mockHttp.When($"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/script/*")
            .Respond("application/json", scriptResponse);

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            var response = await fdc.RunScriptAsync(layout, "script-name", null);

            Assert.Equal("Text Based Script Result", response);
        }
        private static IFileMakerApiClient GetDataClientWithMockedHandler(MockHttpMessageHandler mockHttp = null)
        {
            if (mockHttp == null)
            {
                // new up a default set of responses (none were provided)
                mockHttp = new MockHttpMessageHandler();

                mockHttp.When(HttpMethod.Post, $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records*")
                .WithPartialContent("fieldData") // make sure that the body content contains the 'data' object expected by fms
                .Respond("application/json", DataApiResponses.SuccessfulCreate());

                mockHttp.When(HttpMethod.Post, $"{server}/fmi/data/v1/databases/{file}/layouts/Somelayout/records*")
                .WithPartialContent("fieldData")     // make sure that the body content contains the 'data' object expected by fms
                .Respond("application/json", DataApiResponses.SuccessfulCreate());
            }

            // always add the authentication setup
            mockHttp.When($"{server}/fmi/data/v1/databases/{file}/sessions")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            return(fdc);
        }
Exemple #20
0
        public async Task ProcessContainerData_Should_Skip_InvalidUris(string uri)
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";

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

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            var model = new ContainerFieldTestModel
            {
                SomeContainerField = uri
            };

            // act
            await fdc.ProcessContainer(model);

            // assert
            Assert.Null(model.SomeContainerFieldData);
        }
        public async Task FindAsync_Should_Handle_Extra_Data()
        {
            // arrange
            var mockHttp = new MockHttpMessageHandler();

            var layout = "Users";

            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")
            .WithPartialContent("limit")     // ensure the request contains the expected content
            .WithPartialContent("offset")    // ensure the request contains the expected content
            .Respond("application/json", DataApiResponses.SuccessfulFind());

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

            // act
            var response = await fdc.FindAsync(new AdditionalDataUser()
            {
                Name = "fuzzzerd"
            }, 5, 5);

            var user = response.First();

            // assert
            Assert.NotEmpty(user.AdditionalData);
        }
Exemple #22
0
        public async Task EditContainer_Should_PostUpload()
        {
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";
            var layout = "layout";

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

            mockHttp.When(HttpMethod.Post, $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records/*")
            .WithPartialContent("upload")
            .Respond("application/json", DataApiResponses.SuccessfulEdit());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            var b64String = System.IO.File.ReadAllText("ResponseData\\b64-string.dat");
            var bytes     = Convert.FromBase64String(b64String);

            var response = await fdc.UpdateContainerAsync(layout, 12, "field", "test.jpg", bytes);

            Assert.NotNull(response);
            Assert.Contains(response.Messages, r => r.Message == "OK");
        }
Exemple #23
0
        public async Task GetProductInfo_Should_Return_OK()
        {
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";

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

            var productInfo = System.IO.File.ReadAllText("ResponseData\\ProductInfo.json");

            mockHttp.When($"{server}/fmi/data/v1/productinfo")
            .Respond("application/json", productInfo);

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            var response = await fdc.GetProductInformationAsync();

            Assert.NotNull(response);
            Assert.NotEmpty(response.Name);
        }
Exemple #24
0
        public async Task Edit_WithScript_ShouldHaveScript()
        {
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";
            var layout = "Users";
            var rid    = 25;

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

            mockHttp.When(new HttpMethod("PATCH"), $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records/{rid}")
            .WithPartialContent("script").WithPartialContent("myscr_name")
            .Respond("application/json", DataApiResponses.SuccessfulEdit());

            var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo {
                FmsUri = server, Database = file, Username = user, Password = pass
            });

            var response = await fdc.EditAsync(rid, "myscr_name", null, new User()
            {
                Name = "test user"
            });

            Assert.NotNull(response);
            Assert.Contains(response.Messages, r => r.Message == "OK");
        }
        public async Task UserAgent_Should_Match_Version_Of_Assembly()
        {
            var mockHttp = new MockHttpMessageHandler();

            var server = "http://localhost";
            var file   = "test-file";
            var user   = "******";
            var pass   = "******";

            var fmrAssembly = System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies().Single(a => a.Name.StartsWith("FMData.Rest"));
            var asm         = System.Reflection.Assembly.Load(fmrAssembly.ToString());
            var fmrVer      = System.Diagnostics.FileVersionInfo.GetVersionInfo(asm.Location).ProductVersion;

            mockHttp.When(HttpMethod.Post, $"{server}/fmi/data/v1/databases/{file}/sessions")
            .WithHeaders("User-Agent", $"{fmrAssembly.Name}/{fmrVer}")
            .Respond("application/json", DataApiResponses.SuccessfulAuthentication());

            mockHttp.When(HttpMethod.Delete, $"{server}/fmi/data/v1/databases/{file}/sessions*")
            .Respond(HttpStatusCode.OK, "application/json", "");

            using var fdc = new FileMakerRestClient(mockHttp.ToHttpClient(), new ConnectionInfo { FmsUri = server, Database = file, Username = user, Password = pass });
            await fdc.RefreshTokenAsync(user, pass);

            Assert.True(fdc.IsAuthenticated);
        }
Exemple #26
0
        public void GenDelete_ShouldBeDeleteRequest()
        {
            //arrange
            var fmc = new FileMakerRestClient("", "", "", "");

            // act
            var req = fmc.GenerateDeleteRequest();

            //assert
            Assert.IsAssignableFrom <DeleteRequest>(req);
        }
Exemple #27
0
        public void GenFind_ShouldBeFindRequest()
        {
            //arrange
            var fmc = new FileMakerRestClient("", "", "", "");

            // act
            var req = fmc.GenerateFindRequest <TestModels.User>();

            //assert
            Assert.IsAssignableFrom <FindRequest <TestModels.User> >(req);
        }
Exemple #28
0
        public void GenCreate_ShouldBeCreateRequest()
        {
            //arrange
            var fmc = new FileMakerRestClient(new HttpClient(), new ConnectionInfo {
                FmsUri = "", Database = "", Username = "", Password = ""
            });

            // act
            var req = fmc.GenerateCreateRequest <TestModels.User>();

            //assert
            Assert.IsAssignableFrom <CreateRequest <TestModels.User> >(req);
        }
Exemple #29
0
        private static FileMakerRestClient GenerateClient()
        {
            var mockHttp = new MockHttpMessageHandler();

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

            mockHttp.When(new HttpMethod("PATCH"), $"{server}/fmi/data/v1/databases/{file}/layouts/{layout}/records*")
            .WithPartialContent("fieldData")
            .Respond("application/json", DataApiResponses.SuccessfulEdit());

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

            return(fdc);
        }
Exemple #30
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()));
        }