public async Task GetSecondPageOfUoms()
        {
            var connection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");

            try
            {
                var testData = UomTestData.GetUomsArray();
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                var testReadClient = GetTestReadClient();
                var skip           = 20;
                var take           = 20;
                var searchText     = "";
                var endpoint       = $"{EndpointBase}/lrp/uoms?searchText={WebUtility.UrlEncode(searchText)}&skip={skip}&take={take}";
                var httpMessage    = GetRequestWithToken(HttpMethod.Get, endpoint, GoodClaimsList);
                var response       = await testReadClient.SendAsync(httpMessage);

                Assert.True(response.IsSuccessStatusCode);
                var jsonString = await response.Content.ReadAsStringAsync();

                var actualItems  = JsonConvert.DeserializeObject <List <Uom> >(jsonString);
                var expectedPage = PageMaker.GetExpectedPage(testData, searchText, skip, take);
                Assert.True(PageEqual.CheckItemsOnly(expectedPage, actualItems, UomEqual.Check));
            }
            finally
            {
                connection.Close();
            }
        }
示例#2
0
        public async Task PostItem()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                using (var context = GetPropertyContext(connection))
                {
                    var uomRepository = new UomWriteRepository(context);
                    var newUom        = new Uom(0, "Cubits", "The description");
                    var postedItem    = await uomRepository.PostAsync(newUom);

                    Assert.NotNull(postedItem);
                    Assert.True(UomEqual.Check(newUom, postedItem));

                    var uoms = await context.Uoms.ToListAsync();

                    Assert.NotNull(uoms);
                    Assert.AreEqual(UomTestData.GetUomsArray().Length + 1, uoms.Count);

                    var resultUoms = await context.Uoms.Where(u => u.Name == "Cubits").ToListAsync();

                    Assert.NotNull(resultUoms);
                    Assert.AreEqual(1, resultUoms.Count);
                    Assert.True(UomEqual.Check(postedItem, resultUoms[0]));
                }
            }
            finally
            {
                connection.Close();
            }
        }
示例#3
0
        public async Task PutItem()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                using (var context = GetPropertyContext(connection))
                {
                    var uomRepository = new UomWriteRepository(context);
                    var itemToPut     = new Uom(3, "cubits", "The description");
                    await uomRepository.PutAsync(itemToPut);

                    var uoms = await context.Uoms.OrderBy(u => u.Name).ToListAsync();

                    Assert.NotNull(uoms);
                    Assert.AreEqual(UomTestData.GetUomsArray().Length, uoms.Count);
                    Assert.True(UomEqual.Check(itemToPut, uoms[0]));
                }
            }
            finally
            {
                connection.Close();
            }
        }
示例#4
0
        public async Task DeleteUomGoodClaimsList()
        {
            var connection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                var testWriteClient = GetTestWriteClient();
                var httpMessage     = GetRequestWithToken(HttpMethod.Delete, $"{EndpointBase}/lrp/uoms/2", GoodClaimsList);
                var response        = await testWriteClient.SendAsync(httpMessage);

                Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
                using (var context = GetPropertyContext(connection))
                {
                    var uoms = await context.Uoms.Where(u => u.Description == "Inch").ToListAsync();

                    Assert.NotNull(uoms);
                    Assert.AreEqual(0, uoms.Count);

                    uoms = await context.Uoms.ToListAsync();

                    Assert.AreEqual(199, uoms.Count);
                }
            }
            finally
            {
                connection.Close();
            }
        }
示例#5
0
        public async Task PostInvalidUom()
        {
            var connection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                var testWriteClient = GetTestWriteClient();
                var httpMessage     = GetRequestWithToken(HttpMethod.Post, $"{EndpointBase}/lrp/uoms", GoodClaimsList);
                var uomToPost       = new Uom
                                      (
                    id: 0,
                    name: "N_0123456789_0123456789_0123456789_0123456789_0123456789",
                    description: "Some Description"
                                      );
                httpMessage.Content = GetWriteContent(uomToPost);
                var response = await testWriteClient.SendAsync(httpMessage);

                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
                var jsonString = await response.Content.ReadAsStringAsync();

                var errorDictionary = JsonConvert.DeserializeObject <Dictionary <string, ReadOnlyCollection <string> > >(jsonString);
                Assert.AreEqual(1, errorDictionary.Count);
                errorDictionary.TryGetValue("Name", out var value);
                Assert.NotNull(value);
                Assert.AreEqual(1, value.Count);
                Assert.AreEqual("The field Name must be a string with a minimum length of 1 and a maximum length of 30.", value[0]);
            }
            finally
            {
                connection.Close();
            }
        }
示例#6
0
        public async Task PostUomGoodClaimsList()
        {
            var connection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                var testWriteClient = GetTestWriteClient();
                var httpMessage     = GetRequestWithToken(HttpMethod.Post, $"{EndpointBase}/lrp/uoms", GoodClaimsList);
                var uomToPost       = new Uom(0, "NewName", "New Description");
                httpMessage.Content = GetWriteContent(uomToPost);
                var response = await testWriteClient.SendAsync(httpMessage);

                Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
                using (var context = GetPropertyContext(connection))
                {
                    var uoms = await context.Uoms.Where(u => u.Name == "NewName").ToListAsync();

                    Assert.NotNull(uoms);
                    Assert.AreEqual(1, uoms.Count);
                    Assert.True(UomEqual.CheckExceptId(uomToPost, uoms[0]));
                }
            }
            finally
            {
                connection.Close();
            }
        }
        public async Task TryGetSingleUomBadScopeBadUserClaimsList()
        {
            var connection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                var testReadClient = GetTestReadClient();
                var httpMessage    = GetRequestWithToken(HttpMethod.Get, $"{EndpointBase}/lrp/uoms/2", BadScopeBadUserClaimsList);
                var response       = await testReadClient.SendAsync(httpMessage);

                Assert.AreEqual(HttpStatusCode.Forbidden, response.StatusCode);
            }
            finally
            {
                connection.Close();
            }
        }
        public async Task TryGetSingleUomNoToken()
        {
            var connection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                var testReadClient = GetTestReadClient();
                var httpMessage    = new HttpRequestMessage(HttpMethod.Get, $"{EndpointBase}/lrp/uoms/2");
                httpMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(LrpSupportedMedia.LrpMediaTypeV2));
                var response = await testReadClient.SendAsync(httpMessage);

                Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode);
            }
            finally
            {
                connection.Close();
            }
        }
        public async Task GetSingleUomBadMediaType()
        {
            var connection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");

            try
            {
                var testData = UomTestData.GetUomsArray();
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                var testReadClient = GetTestReadClient();
                var httpMessage    = GetRequestWithToken(HttpMethod.Get, $"{EndpointBase}/lrp/uoms/2", GoodClaimsList, LrpSupportedMedia.LrpMediaTypeV3);
                var response       = await testReadClient.SendAsync(httpMessage);

                Assert.AreEqual(HttpStatusCode.NotAcceptable, response.StatusCode);
            }
            finally
            {
                connection.Close();
            }
        }
示例#10
0
        public void PostNullItem()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                using (var context = GetPropertyContext(connection))
                {
                    var uomRepository = new UomWriteRepository(context);
                    Assert.ThrowsAsync <ArgumentNullException>
                    (
                        async() => await uomRepository.PostAsync(null)
                    );
                }
            }
            finally
            {
                connection.Close();
            }
        }
示例#11
0
        public async Task PostDuplicate()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                using (var context = GetPropertyContext(connection))
                {
                    var uomRepository = new UomWriteRepository(context);
                    var newUom        = new Uom(0, "mg/dL", "Errant duplicate");
                    var exception     = Assert.ThrowsAsync <DbUpdateException>(async() => await uomRepository.PostAsync(newUom));
                    var message       = exception.InnerException.Message;
                    Assert.True(message.Contains("SQLite Error 19"));
                }
            }
            finally
            {
                connection.Close();
            }
        }
        public async Task GetSingleUomNotFound()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            try
            {
                var testData = UomTestData.GetUomsArray();
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                using (var context = GetPropertyContext(connection))
                {
                    var uomRepository = new UomReadRepository(context);
                    var uom           = await uomRepository.GetAsync(111111);

                    Assert.Null(uom);
                }
            }
            finally
            {
                connection.Close();
            }
        }
示例#13
0
        public async Task DeleteItem()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            try
            {
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                using (var context = GetPropertyContext(connection))
                {
                    var uomRepository = new UomWriteRepository(context);
                    await uomRepository.DeleteAsync(2);

                    var uoms = await context.Uoms.Where(u => u.Name == "in").ToListAsync();

                    Assert.AreEqual(0, uoms.Count);
                }
            }
            finally
            {
                connection.Close();
            }
        }
        public async Task GetPageNotFound()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            try
            {
                var testData = UomTestData.GetUomsArray();
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                using (var context = GetPropertyContext(connection))
                {
                    var uomRepository = new UomReadRepository(context);
                    var expectedPage  = PageMaker.GetExpectedPage <Uom>(testData, "", 1000, 20);
                    var actualPage    = await uomRepository.GetAsync("", 1000, 20) as Page <Uom>;

                    Assert.True(PageEqual.Check(expectedPage, actualPage, UomEqual.Check));
                }
            }
            finally
            {
                connection.Close();
            }
        }
        public async Task GetUomCollectionTakeLessThan1()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            try
            {
                var testData = UomTestData.GetUomsArray();
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                using (var context = GetPropertyContext(connection))
                {
                    var uomRepository = new UomReadRepository(context);
                    Assert.ThrowsAsync <ArgumentOutOfRangeException>
                    (
                        async() => await uomRepository.GetAsync("", 0, 0)
                    );
                }
            }
            finally
            {
                connection.Close();
            }
        }
        public async Task GetSingleUomGoodClaimsList()
        {
            var connection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");

            try
            {
                var testData = UomTestData.GetUomsArray();
                new DbInitializer().Initialize(connection, GetPropertyContext, UomTestData.GetInitialData());
                var testReadClient = GetTestReadClient();
                var httpMessage    = GetRequestWithToken(HttpMethod.Get, $"{EndpointBase}/lrp/uoms/2", GoodClaimsList);
                var response       = await testReadClient.SendAsync(httpMessage);

                Assert.True(response.IsSuccessStatusCode);
                var jsonString = await response.Content.ReadAsStringAsync();

                var uomResult = JsonConvert.DeserializeObject <Uom>(jsonString);
                Assert.True(UomEqual.Check(testData[1], uomResult));
            }
            finally
            {
                connection.Close();
            }
        }
示例#17
0
        public async Task AddUom()
        {
            var deviceConnection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");
            var modelConnection  = new SqliteConnection("DataSource=modeldb;Mode=Memory;Cache=Shared");

            try
            {
                new DbInitializer().Initialize(deviceConnection, GetPropertyContext, UomTestData.GetInitialData());
                new DbInitializer().Initialize(modelConnection, GetPropertyContext, UomTestData.GetInitialData());
                var testUser = GetTestUser(deviceConnection, modelConnection);

                //
                // THE TEST
                //
                await testUser.LaunchApplication();

                await testUser.ClickLoginOnLoginPage();

                await testUser.ClickUomsOnMainPage();

                await testUser.ClickAddOnUomsPage();

                await testUser.EnterNameOnUomItemPage("zzz");

                await testUser.EnterDescriptionOnUomItemPage("Sleep");

                await testUser.ClickSaveOnUomItemPage();

                await testUser.ClickBackOnUomsPage();
            }
            finally
            {
                deviceConnection.Close();
                modelConnection.Close();
            }
        }
示例#18
0
        public async Task ThrashUoms()
        {
            var deviceConnection = new SqliteConnection("DataSource=devicedb;Mode=Memory;Cache=Shared");
            var modelConnection  = new SqliteConnection("DataSource=modeldb;Mode=Memory;Cache=Shared");

            try
            {
                new DbInitializer().Initialize(deviceConnection, GetPropertyContext, UomTestData.GetInitialData());
                new DbInitializer().Initialize(modelConnection, GetPropertyContext, UomTestData.GetInitialData());
                var testUser = GetTestUser(deviceConnection, modelConnection);
                //
                // THE TEST
                //
                await testUser.LaunchApplication();

                await testUser.ClickLoginOnLoginPage();

                await testUser.ClickUomsOnMainPage();

                await testUser.ClickBackOnUomsPage();

                await testUser.ClickUomsOnMainPage();

                await testUser.ClickPageForwardOnUomsPage();

                await testUser.ClickPageForwardOnUomsPage();

                await testUser.ClickPageForwardOnUomsPage();

                await testUser.ClickPageBackOnUomsPage();

                await testUser.ClickPageBackOnUomsPage();

                await testUser.ClickBackOnUomsPage();

                await testUser.ClickUomsOnMainPage();

                await testUser.SearchOnUomsPage("j");

                await testUser.SearchOnUomsPage("");

                await testUser.ClickBackOnUomsPage();

                await testUser.ClickUomsOnMainPage();

                await testUser.SearchOnUomsPage("i");

                await testUser.ClickBackOnUomsPage();

                await testUser.ClickUomsOnMainPage();

                await testUser.ClickDeleteOnUomsPageToolbar();

                await testUser.SelectUomItemToDelete(5);

                await testUser.ClickBackOnUomsPage();

                await testUser.ClickUomsOnMainPage();

                await testUser.ClickDeleteOnUomsPageToolbar();

                await testUser.ClickEditOnUomsPageToolbar();

                await testUser.SelectUomItemToEdit(2);

                await testUser.EnterNameOnUomItemPage("UpdatedName");

                await testUser.EnterDescriptionOnUomItemPage("UpdatedDescription");

                await testUser.ClickSaveOnUomItemPage();

                await testUser.ClickBackOnUomsPage();

                await testUser.ClickUomsOnMainPage();

                await testUser.SearchOnUomsPage("Updated");

                await testUser.SelectUomItemToEdit(0);

                await testUser.EnterNameOnUomItemPage("UpdatedAgain");

                await testUser.ClickSaveOnUomItemPage();

                await testUser.ClickBackOnUomsPage();
            }
            finally
            {
                deviceConnection.Close();
                modelConnection.Close();
            }
        }