Exemplo n.º 1
0
        public async void Search_200_Result()
        {
            var startup = new TestStartup(
                //This will be invoked before the controller is created so we can modify these mocked services
                (request, umbCtx, typedContent, serviceContext, searchProvider) =>
            {
                var mockSearchResults = new Mock <ISearchResults>();
                mockSearchResults.Setup(results => results.TotalItemCount).Returns(10);
                mockSearchResults.Setup(results => results.Skip(It.IsAny <int>())).Returns(new[]
                {
                    new SearchResult()
                    {
                        Id = 789
                    },
                    new SearchResult()
                    {
                        Id = 456
                    },
                });

                var mockSearchProvider = Mock.Get(searchProvider);
                mockSearchProvider.Setup(x => x.CreateSearchCriteria()).Returns(Mock.Of <ISearchCriteria>());
                mockSearchProvider.Setup(x => x.Search(It.IsAny <ISearchCriteria>(), It.IsAny <int>()))
                .Returns(mockSearchResults.Object);

                var mockMemberService = Mock.Get(serviceContext.MemberService);
                mockMemberService.Setup(x => x.GetAllMembers(It.IsAny <int[]>()))
                .Returns(new[]
                {
                    ModelMocks.SimpleMockedMember(789),
                    ModelMocks.SimpleMockedMember(456)
                });
            });

            using (var server = TestServer.Create(builder => startup.Configuration(builder)))
            {
                var request = new HttpRequestMessage()
                {
                    RequestUri = new Uri(string.Format("http://testserver/umbraco/rest/v1/{0}/search?lucene=parentID:\\-1", RouteConstants.MembersSegment)),
                    Method     = HttpMethod.Get,
                };

                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/hal+json"));

                Console.WriteLine(request);
                var result = await server.HttpClient.SendAsync(request);

                Console.WriteLine(result);

                var json = await((StreamContent)result.Content).ReadAsStringAsync();
                Console.Write(JsonConvert.SerializeObject(JsonConvert.DeserializeObject(json), Formatting.Indented));

                Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
            }
        }
        public async Task Get_Root_Result()
        {
            var startup = new TestStartup(
                //This will be invoked before the controller is created so we can modify these mocked services,
                (testServices) =>
            {
                var mockMemberService = Mock.Get(testServices.ServiceContext.MemberService);
                var mockedOut         = 0;
                mockMemberService.Setup(x => x.GetAll(It.IsAny <int>(), 100, out mockedOut)).Returns(new[]
                {
                    ModelMocks.SimpleMockedMember(123, -1),
                    ModelMocks.SimpleMockedMember(456, -1)
                });
            });

            using (var server = TestServer.Create(builder => startup.UseDefaultTestSetup(builder)))
            {
                var request = new HttpRequestMessage()
                {
                    RequestUri = new Uri($"http://testserver/umbraco/rest/v1/{RouteConstants.MembersSegment}"),
                    Method     = HttpMethod.Get,
                };
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/hal+json"));
                Console.WriteLine(request);
                var result = await server.HttpClient.SendAsync(request);

                Console.WriteLine(result);

                var json = await((StreamContent)result.Content).ReadAsStringAsync();
                Console.Write(JsonConvert.SerializeObject(JsonConvert.DeserializeObject(json), Formatting.Indented));

                Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);

                var asdf = GlobalConfiguration.Configuration;

                var djson = JsonConvert.DeserializeObject <JObject>(json);

                Assert.AreEqual("/umbraco/rest/v1/members{?page,size,query,orderBy,direction,memberTypeAlias}", djson["_links"]["root"]["href"].Value <string>());
                Assert.AreEqual(0, djson["totalResults"].Value <int>());
            }
        }
        public async Task Search_200_Result()
        {
            var startup = new TestStartup(
                //This will be invoked before the controller is created so we can modify these mocked services
                (testServices) =>
            {
                var mockSearchResults = new Mock <ISearchResults>();
                mockSearchResults.Setup(results => results.TotalItemCount).Returns(10);
                mockSearchResults.Setup(results => results.Skip(It.IsAny <int>())).Returns(new[]
                {
                    new SearchResult()
                    {
                        Id = 789
                    },
                    new SearchResult()
                    {
                        Id = 456
                    },
                });

                var mockSearchProvider = Mock.Get(testServices.SearchProvider);
                mockSearchProvider.Setup(x => x.CreateSearchCriteria()).Returns(Mock.Of <ISearchCriteria>());
                mockSearchProvider.Setup(x => x.Search(It.IsAny <ISearchCriteria>(), It.IsAny <int>()))
                .Returns(mockSearchResults.Object);

                var mockMemberService = Mock.Get(testServices.ServiceContext.MemberService);
                mockMemberService.Setup(x => x.GetAllMembers(It.IsAny <int[]>()))
                .Returns(new[]
                {
                    ModelMocks.SimpleMockedMember(789),
                    ModelMocks.SimpleMockedMember(456)
                });
            });

            await Search_200_Result(startup.UseDefaultTestSetup, RouteConstants.MembersSegment);
        }
        public async Task Get_Metadata_Is_200()
        {
            var startup = new TestStartup(
                //This will be invoked before the controller is created so we can modify these mocked services
                (testServices) =>
            {
                var mockMemberService = Mock.Get(testServices.ServiceContext.MemberService);

                mockMemberService.Setup(x => x.GetById(It.IsAny <int>())).Returns(() => ModelMocks.SimpleMockedMember());
                var mockTextService = Mock.Get(testServices.ServiceContext.TextService);

                mockTextService.Setup(x => x.Localize(It.IsAny <string>(), It.IsAny <CultureInfo>(), It.IsAny <IDictionary <string, string> >()))
                .Returns((string input, CultureInfo culture, IDictionary <string, string> tokens) => input);
            });

            using (var server = TestServer.Create(builder => startup.UseDefaultTestSetup(builder)))
            {
                var request = new HttpRequestMessage()
                {
                    RequestUri = new Uri(string.Format("http://testserver/umbraco/rest/v1/{0}/123/meta", RouteConstants.MembersSegment)),
                    Method     = HttpMethod.Get,
                };

                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/hal+json"));

                Console.WriteLine(request);
                var result = await server.HttpClient.SendAsync(request);

                Console.WriteLine(result);

                var json = await((StreamContent)result.Content).ReadAsStringAsync();
                Console.Write(JsonConvert.SerializeObject(JsonConvert.DeserializeObject(json), Formatting.Indented));

                Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);

                //TODO: Assert values!
            }
        }
        public async Task Get_Id_Result()
        {
            var startup = new TestStartup(
                //This will be invoked before the controller is created so we can modify these mocked services
                (testServices) =>
            {
                var mockMemberService = Mock.Get(testServices.ServiceContext.MemberService);
                mockMemberService.Setup(x => x.GetById(It.IsAny <int>())).Returns(() => ModelMocks.SimpleMockedMember());
            });

            using (var server = TestServer.Create(builder => startup.UseDefaultTestSetup(builder)))
            {
                var request = new HttpRequestMessage()
                {
                    RequestUri = new Uri($"http://testserver/umbraco/rest/v1/{RouteConstants.MembersSegment}/123"),
                    Method     = HttpMethod.Get,
                };

                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/hal+json"));

                Console.WriteLine(request);
                var result = await server.HttpClient.SendAsync(request);

                Console.WriteLine(result);

                var json = await((StreamContent)result.Content).ReadAsStringAsync();
                Console.Write(JsonConvert.SerializeObject(JsonConvert.DeserializeObject(json), Formatting.Indented));

                Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);

                var djson = JsonConvert.DeserializeObject <JObject>(json);

                Assert.AreEqual($"/umbraco/rest/v1/members/{123.ToGuid()}", djson["_links"]["self"]["href"].Value <string>());
                Assert.AreEqual("/umbraco/rest/v1/members{?page,size,query,orderBy,direction,memberTypeAlias}", djson["_links"]["root"]["href"].Value <string>());

                var properties = djson["properties"].ToObject <IDictionary <string, object> >();
                Assert.AreEqual(2, properties.Count());
                Assert.IsTrue(properties.ContainsKey("TestProperty1"));
                Assert.IsTrue(properties.ContainsKey("testProperty2"));
            }
        }