public void PublishedFiles_Should_Validate_Limit()
        {
            // Arrange
            var auth   = GetAuth();
            var client = new Mock <PublishedFilesApiClient>(auth, "test");

            client.CallBase = true;
            client.Setup(foo => foo.GetResponse(It.IsAny <WebRequest>())).Returns(PublishedFilesApiResponse);

            var search = new RecentlyPublishedSearch(DateTime.Now.AddDays(-5));

            search.FileUris.Add("/content/Home/6A2CD795_en.xml");
            search.LocaleIds.Add("ru-RU");
            search.Limit  = -10;
            search.Offset = 0;

            // Act
            var correctExceptionThrown = false;

            try
            {
                var result = client.Object.GetRecentlyPublished(search);
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Limit must not be negative"))
                {
                    correctExceptionThrown = true;
                }
            }

            // Assert
            Assert.IsTrue(correctExceptionThrown);
        }
        public void PublishedFiles_Should_Validate_Date()
        {
            // Arrange
            var auth   = GetAuth();
            var client = new Mock <PublishedFilesApiClient>(auth, "test");

            client.CallBase = true;
            client.Setup(foo => foo.GetResponse(It.IsAny <WebRequest>())).Returns(PublishedFilesApiResponse);

            var search = new RecentlyPublishedSearch(DateTime.Now.AddDays(-15));

            // Act
            var correctExceptionThrown = false;

            try
            {
                var result = client.Object.GetRecentlyPublished(search);
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("PublishedAfter is limited to 14 days back from now"))
                {
                    correctExceptionThrown = true;
                }
            }

            // Assert
            Assert.IsTrue(correctExceptionThrown);
        }
Beispiel #3
0
        public void PublishedFiles_Should_Parse_Response()
        {
            // Arrange
            var auth   = GetAuth();
            var client = new Mock <PublishedFilesApiClient>(auth, "test");

            client.CallBase = true;
            client.Setup(foo => foo.GetResponse(It.IsAny <WebRequest>())).Returns(PublishedFilesApiResponse);

            var search = new RecentlyPublishedSearch(DateTime.Now.AddDays(-5));

            search.FileUris = new List <string> {
                "/content/Home/6A2CD795_en.xml"
            };
            search.LocaleIds = new List <string> {
                "ru-RU"
            };
            search.Limit  = 10;
            search.Offset = 0;

            // Act
            var result = client.Object.GetRecentlyPublished(search);

            // Assert
            Assert.AreEqual(1, result.items.Count);
        }
        public virtual RecentlyPublished GetRecentlyPublished(RecentlyPublishedSearch recentlyPublishedSearch)
        {
            if (!recentlyPublishedSearch.IsValid())
            {
                throw new Exception("Invalid parameters: " + recentlyPublishedSearch.LastError);
            }

            var uriBuilder = this.GetRequestStringBuilder(string.Format(RecentlyPublishedUrl, projectId, recentlyPublishedSearch.PublishedAfter.ToString("s", System.Globalization.CultureInfo.InvariantCulture)));

            if (recentlyPublishedSearch.FileUris?.Count > 0)
            {
                foreach (var fileUri in recentlyPublishedSearch.FileUris)
                {
                    uriBuilder.AppendFormat("&{0}={1}", FileUrisParameterName, System.Net.WebUtility.UrlEncode(fileUri));
                }
            }

            if (recentlyPublishedSearch.LocaleIds?.Count > 0)
            {
                foreach (var localeId in recentlyPublishedSearch.LocaleIds)
                {
                    uriBuilder.AppendFormat("&{0}={1}", LocaleIdsParameterName, localeId);
                }
            }

            if (recentlyPublishedSearch.Limit > 0)
            {
                uriBuilder.AppendFormat("&{0}={1}", LimitParameterName, recentlyPublishedSearch.Limit);
            }

            if (recentlyPublishedSearch.Offset > 0)
            {
                uriBuilder.AppendFormat("&{0}={1}", OffsetParameterName, recentlyPublishedSearch.Offset);
            }

            var     request = PrepareGetRequest(uriBuilder.ToString(), auth.GetToken());
            JObject response;

            try
            {
                response = JObject.Parse(GetResponse(request));
            }
            catch (AuthenticationException)
            {
                request  = PrepareGetRequest(uriBuilder.ToString(), auth.GetToken(true));
                response = JObject.Parse(GetResponse(request));
            }

            return(JsonConvert.DeserializeObject <RecentlyPublished>(response["response"]["data"].ToString()));
        }
Beispiel #5
0
        private static void Published(OAuthAuthenticationStrategy auth)
        {
            var publishedClient = new PublishedFilesApiClient(auth, projectId);
            var search          = new RecentlyPublishedSearch(DateTime.Now.AddDays(-5));

            search.FileUris.Add("/content/Home/6A2CD795_en.xml");
            search.LocaleIds.Add("ru-RU");
            search.Limit  = 10;
            search.Offset = 0;

            var searchResults = publishedClient.GetRecentlyPublished(search);

            foreach (var item in searchResults.items)
            {
                Console.WriteLine(item.fileUri + " " + item.localeId + " " + item.publishDate);
            }
        }
        public void PublishedFiles_Should_Encode_Parameters()
        {
            // Arrange
            var auth   = GetAuth();
            var client = new Mock <PublishedFilesApiClient>(auth, "test");

            client.CallBase = true;
            WebRequest saveObject = null;

            client.Setup(foo => foo.GetResponse(It.IsAny <WebRequest>())).Callback <WebRequest>((obj) => saveObject = obj).Returns(PublishedFilesApiResponse);

            var search = new RecentlyPublishedSearch(DateTime.Now.AddDays(-5));

            search.FileUris.Add("/content/Home/John & Doe_en.xml");

            // Act
            var result = client.Object.GetRecentlyPublished(search);

            // Assert
            Assert.IsTrue(saveObject.RequestUri.ToString().EndsWith("&fileUris[]=%2Fcontent%2FHome%2FJohn+%26+Doe_en.xml"));
        }