コード例 #1
0
            public void ShouldBeAbleToUseCollectiontOverload()
            {
                var input1 = new VersionCheckDetailsItem()
                {
                    Name = "Test", Version = "1.0", VersionRange = "1.0"
                };
                var input2 = new VersionCheckDetailsItem()
                {
                    Name = "Other", Version = "1.0", VersionRange = "1.0"
                };
                var input = new VersionCheckDetails {
                    Packages = new List <VersionCheckDetailsItem> {
                        input1, input2
                    }
                };

                var repository = new Mock <IReleaseQueryProvider>();

                repository.Setup(x => x.SelectRelease("Test", "1.0")).Returns((ReleaseQueryItem)null).Verifiable();
                repository.Setup(x => x.SelectRelease("Other", "1.0")).Returns((ReleaseQueryItem)null).Verifiable();

                var service = new ReleaseQueryService(repository.Object);
                var result  = service.GetReleaseInfo(input);

                Assert.Equal(2, result.Details.Count);
                Assert.True(result.Details.ContainsKey("Test"));
                Assert.True(result.Details.ContainsKey("Other"));
                Assert.False(result.HasNewer);

                repository.VerifyAll();
            }
コード例 #2
0
        private object BuildModel(NameValueCollection queryString)
        {
            var stamp = queryString["stamp"];

            var model = new VersionCheckDetails();
            var items = new List <VersionCheckDetailsItem>();

            if (queryString.AllKeys.Length > 0)
            {
                foreach (var token in queryString.AllKeys)
                {
                    if (!_reservedKeys.ContainsKey(token))
                    {
                        var item = new VersionCheckDetailsItem {
                            Name = token
                        };
                        ParseVersion(item, queryString[token]);
                        items.Add(item);
                    }
                }
            }

            model.Packages = items;
            model.Stamp    = stamp;

            return(model);
        }
コード例 #3
0
        public ReleaseQueryInfo Index([System.Web.Http.ModelBinding.ModelBinder(typeof(VersionCheckDetailsApiModelBinderProvider))] VersionCheckDetails details, bool withDetails = false)
        {
            var service = PackageSettings.Settings.ReleaseQueryService;
            var result  = service.GetReleaseInfo(details, withDetails);

            result.ViewLink = GenerateViewUri(Url.Request.RequestUri, result);

            return(result);
        }
コード例 #4
0
        public virtual ActionResult Update(VersionCheckDetails details, bool?withDetails)
        {
            var service = PackageSettings.Settings.ReleaseQueryService;
            var result  = service.GetReleaseInfo(details, true);

            // Indicates how much data we want to show
            ViewBag.WithDetails = withDetails;

            return(View(MVC.Version.Install.Views.Update, MVC.Shared.Views._Simple, result));
        }
コード例 #5
0
        public virtual ActionResult Index(VersionCheckDetails details)
        {
            if (!HttpContext.Request.Url.Query.Contains(".."))
            {
                var service = PackageSettings.Settings.ReleaseQueryService;
                var result  = service.GetReleaseInfo(details, false);

                return(View(MVC.Version.Install.Views.Index, MVC.Shared.Views._Simple, result));
            }

            return(Update(details, null));
        }
コード例 #6
0
            public void ShoudlIndicateHasNewerWhenAnyPackageHasNewer()
            {
                var release = new ReleaseQueryItem {
                    IsLatestVersion = false, Created = new DateTime(2012, 12, 12), Version = "1.0"
                };
                var release1 = new ReleaseQueryItem {
                    IsLatestVersion = true, Created = new DateTime(2012, 12, 13), Version = "1.1"
                };

                var input1 = new VersionCheckDetailsItem()
                {
                    Name = "Test", Version = "1.0", VersionRange = "1.0"
                };
                var input2 = new VersionCheckDetailsItem()
                {
                    Name = "Other", Version = "1.0", VersionRange = "1.0"
                };
                var input = new VersionCheckDetails {
                    Packages = new List <VersionCheckDetailsItem> {
                        input1, input2
                    }
                };

                var repository = new Mock <IReleaseQueryProvider>();

                repository.Setup(x => x.SelectRelease("Test", "1.0")).Returns(release).Verifiable();
                repository.Setup(x => x.SelectRelease("Other", "1.0")).Returns((ReleaseQueryItem)null).Verifiable();
                repository.Setup(x => x.FindReleasesAfter("Test", "1.0")).Returns(new List <ReleaseQueryItem> {
                    release1
                }).Verifiable();

                var service = new ReleaseQueryService(repository.Object);
                var result  = service.GetReleaseInfo(input);

                Assert.Equal(2, result.Details.Count);
                Assert.True(result.Details.ContainsKey("Test"));
                Assert.True(result.Details["Test"].HasNewer);
                Assert.True(result.Details["Test"].HasResult);
                Assert.True(result.Details.ContainsKey("Other"));
                Assert.False(result.Details["Other"].HasNewer);
                Assert.False(result.Details["Other"].HasResult);
                Assert.True(result.HasNewer);

                repository.VerifyAll();
            }
コード例 #7
0
        public ReleaseQueryInfo Index([System.Web.Http.ModelBinding.ModelBinder(typeof(VersionCheckDetailsApiModelBinderProvider))] VersionCheckDetails details, bool withDetails = false)
        {
            string userId = null;

            if (HttpContext.Current.Request.Cookies["ai_user"] == null)
            {
                userId = Guid.NewGuid().ToString();
                var c = new HttpCookie("ai_user", userId + "|" + DateTime.Now.ToString("G"));
                c.Expires = DateTime.MaxValue;
                c.Path    = "/";

                HttpContext.Current.Response.Cookies.Set(c);
            }

            foreach (var package in details.Packages)
            {
                EventTelemetry evt = new EventTelemetry();
                evt.Name = "Check " + package.Name;

                if (!string.IsNullOrEmpty(userId))
                {
                    evt.Context.User.Id = userId;
                }

                evt.Properties.Add("Package", package.Name);
                evt.Properties.Add("Version", package.Version);

                if (HttpContext.Current.Request.UrlReferrer != null)
                {
                    evt.Properties.Add("urlReferrer", HttpContext.Current.Request.UrlReferrer.ToString());
                }
                telemetry.TrackEvent(evt);
            }
            var service = PackageSettings.Settings.ReleaseQueryService;
            var result  = service.GetReleaseInfo(details, withDetails);

            result.ViewLink = GenerateViewUri(Url.Request.RequestUri, result);

            return(result);
        }
コード例 #8
0
            public void ShoudlIndicateHasNewerWhenAnyPackageHasNewer()
            {
                var release = new ReleaseQueryItem { IsLatestVersion = false, Created = new DateTime(2012, 12, 12), Version = "1.0" };
                var release1 = new ReleaseQueryItem { IsLatestVersion = true, Created = new DateTime(2012, 12, 13), Version = "1.1" };

                var input1 = new VersionCheckDetailsItem() { Name = "Test", Version = "1.0", VersionRange = "1.0" };
                var input2 = new VersionCheckDetailsItem() { Name = "Other", Version = "1.0", VersionRange = "1.0" };
                var input = new VersionCheckDetails { Packages = new List<VersionCheckDetailsItem> { input1, input2 } };

                var repository = new Mock<IReleaseQueryProvider>();
                repository.Setup(x => x.SelectRelease("Test", "1.0")).Returns(release).Verifiable();
                repository.Setup(x => x.SelectRelease("Other", "1.0")).Returns((ReleaseQueryItem)null).Verifiable();
                repository.Setup(x => x.FindReleasesAfter("Test", "1.0")).Returns(new List<ReleaseQueryItem> { release1 }).Verifiable();

                var service = new ReleaseQueryService(repository.Object);
                var result = service.GetReleaseInfo(input);

                Assert.Equal(2, result.Details.Count);
                Assert.True(result.Details.ContainsKey("Test"));
                Assert.True(result.Details["Test"].HasNewer);
                Assert.True(result.Details["Test"].HasResult);
                Assert.True(result.Details.ContainsKey("Other"));
                Assert.False(result.Details["Other"].HasNewer);
                Assert.False(result.Details["Other"].HasResult);
                Assert.True(result.HasNewer);

                repository.VerifyAll();
            }
コード例 #9
0
            public void ShouldBeAbleToUseCollectiontOverload()
            {
                var input1 = new VersionCheckDetailsItem() { Name = "Test", Version = "1.0", VersionRange = "1.0" };
                var input2 = new VersionCheckDetailsItem() { Name = "Other", Version = "1.0", VersionRange = "1.0" };
                var input = new VersionCheckDetails {Packages = new List<VersionCheckDetailsItem> {input1, input2}};

                var repository = new Mock<IReleaseQueryProvider>();
                repository.Setup(x => x.SelectRelease("Test", "1.0")).Returns((ReleaseQueryItem)null).Verifiable();
                repository.Setup(x => x.SelectRelease("Other", "1.0")).Returns((ReleaseQueryItem)null).Verifiable();

                var service = new ReleaseQueryService(repository.Object);
                var result = service.GetReleaseInfo(input);

                Assert.Equal(2, result.Details.Count);
                Assert.True(result.Details.ContainsKey("Test"));
                Assert.True(result.Details.ContainsKey("Other")); 
                Assert.False(result.HasNewer);

                repository.VerifyAll();
            }