public void SyncProjectsOK()
        {
            List <Project> fakeProjects = ProjectUtility.GetFakeSimpleProjects();

            string content = JsonConvert.SerializeObject(fakeProjects.GetRange(0, 2), new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });

            Mock <HttpWebRequest> mockWebRequest = FakeWebRequest.CreateRequestWithResponse(content, new Dictionary <string, string> {
                { "SyncTimestamp", "stamp1;projectid=3" }
            });

            mockWebRequest.SetupSet(r => r.Method = "GET").Verifiable();

            SyncResult <Project> result = syncService.SyncProjects(null).GetAwaiter().GetResult();

            UriBuilder uriBuilder = new UriBuilder("https://api.aproplan.com/rest/projectsync");

            string expectedUrl = AproplanApiUtility.BuildRestUrl(mockApi.Object.ApiRootUrl, "projectsync", mockApi.Object.ApiVersion, mockApi.Object.RequesterId);

            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[0].ToString());
            Assert.AreEqual(2, result.Data.Count);
            Assert.AreEqual(fakeProjects[0].Id, result.Data[0].Id);
            Assert.AreEqual(fakeProjects[1].Id, result.Data[1].Id);
            Assert.AreEqual("stamp1;projectid=3", result.ContinuationToken);
            mockWebRequest.Verify();
        }
        public void SyncNotesOK()
        {
            Guid        projectId = Guid.NewGuid();
            List <Note> fakeNotes = NoteUtility.GetFakeSimpleNotes();

            string content = JsonConvert.SerializeObject(fakeNotes.GetRange(0, 2), new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });

            Mock <HttpWebRequest> mockWebRequest = FakeWebRequest.CreateRequestWithResponse(content, new Dictionary <string, string> {
                { "SyncTimestamp", "stamp1;noteid=3" }
            });

            mockWebRequest.SetupSet(r => r.Method = "GET").Verifiable();

            SyncResult <Note> result = syncService.SyncNotes(projectId, null).GetAwaiter().GetResult();


            string expectedUrl = AproplanApiUtility.BuildRestUrl(mockApi.Object.ApiRootUrl, "notesync", mockApi.Object.ApiVersion, mockApi.Object.RequesterId);

            expectedUrl += "&projectid=" + projectId;
            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[0].ToString());
            Assert.AreEqual(2, result.Data.Count);
            Assert.AreEqual(fakeNotes[0].Id, result.Data[0].Id);
            Assert.AreEqual(fakeNotes[1].Id, result.Data[1].Id);
            Assert.AreEqual("stamp1;noteid=3", result.ContinuationToken);
            mockWebRequest.Verify();
        }
示例#3
0
        public static User MakeLogin(ApiRequest request)
        {
            dynamic json = new
            {
                UserInfo      = UserUtility.CreateUser("*****@*****.**", "John Smith"),
                Token         = Guid.NewGuid(),
                ValidityStart = DateTime.Now.ToUniversalTime().ToString("o"),
                ValidityLimit = DateTime.Now.ToUniversalTime().AddMinutes(10).ToString("o")
            };
            string content = JsonConvert.SerializeObject(json);

            Mock <HttpWebRequest> mockWebRequest = FakeWebRequest.CreateRequestWithResponse(content);

            mockWebRequest.SetupSet(r => r.Method      = "POST").Verifiable();
            mockWebRequest.SetupSet(r => r.ContentType = "application/json").Verifiable();

            User user = request.Login("*****@*****.**", "aproplan").GetAwaiter().GetResult();

            FakeWebRequest.Instance.Reset();
            return(user);
        }
        public static User FakeLogin(ApiRequest request, DateTime?validityStart = null)
        {
            if (!validityStart.HasValue)
            {
                validityStart = DateTime.Now;
            }
            FakeWebRequest.Instance.Reset();
            WebRequest.RegisterPrefix(request.ApiRootUrl, FakeWebRequest.Instance);
            dynamic json = new
            {
                UserInfo      = UserUtility.CreateUser("*****@*****.**", "John Smith"),
                Token         = Guid.NewGuid(),
                ValidityStart = validityStart.Value.ToUniversalTime().ToString("o"),
                ValidityLimit = validityStart.Value.ToUniversalTime().AddMinutes(10).ToString("o")
            };
            string content = JsonConvert.SerializeObject(json);

            Mock <HttpWebRequest> mockWebRequest = FakeWebRequest.CreateRequestWithResponse(content);

            mockWebRequest.SetupSet(r => r.Method      = "POST").Verifiable();
            mockWebRequest.SetupSet(r => r.ContentType = "application/json").Verifiable();

            return(request.Login("*****@*****.**", "aproplan").GetAwaiter().GetResult());
        }
 public WebRequest Create(Uri uri)
 {
     var request = new FakeWebRequest(uri);
     _requests.Add(request);
     return request;
 }
        public void SyncAllProjectsOK()
        {
            List <Project> fakeProjects   = ProjectUtility.GetFakeSimpleProjects();
            int            index          = 0;
            List <Project> resultToReturn = fakeProjects.GetRange(index, 2);
            string         content        = JsonConvert.SerializeObject(resultToReturn, new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });

            string stamp = "stamp" + index + ";projectid=" + index;
            Mock <HttpWebRequest> mockWebRequest = FakeWebRequest.CreateRequestWithResponse(content, new Dictionary <string, string> {
                { "SyncTimestamp", stamp }
            });

            mockWebRequest.SetupSet(r => r.Method = "GET").Verifiable();

            string lastStamp            = stamp;
            string baseUrl              = AproplanApiUtility.BuildRestUrl(mockApi.Object.ApiRootUrl, "projectsync", mockApi.Object.ApiVersion, mockApi.Object.RequesterId);
            SyncResult <Project> result = syncService.SyncAllProjects(null, (SyncResult <Project> r, ref bool cancel) => {
                string expectedUrl = baseUrl;
                if (index > 0)
                {
                    expectedUrl = baseUrl + "&timestamp=" + Uri.EscapeDataString(lastStamp);
                }
                Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[FakeWebRequest.Instance.UriCalled.Count - 1].ToString());
                Assert.AreEqual(stamp, r.ContinuationToken);
                Assert.AreEqual(resultToReturn.Count, r.Data.Count);
                for (var i = 0; i < resultToReturn.Count; i++)
                {
                    Assert.AreEqual(resultToReturn[i].Id, r.Data[i].Id);
                }

                lastStamp = stamp;
                index    += 2;
                int cpt   = fakeProjects.Count - index;

                resultToReturn = cpt > 0 ? fakeProjects.GetRange(index, cpt < 2 ? 1 : 2) : new List <Project>();
                content        = JsonConvert.SerializeObject(resultToReturn, new JsonSerializerSettings
                {
                    DateTimeZoneHandling = DateTimeZoneHandling.Utc
                });
                if (resultToReturn.Count > 0)
                {
                    stamp = "stamp" + index + ";projectid=" + index;
                }
                else
                {
                    stamp = null;
                }
                mockWebRequest = FakeWebRequest.CreateRequestWithResponse(content, new Dictionary <string, string> {
                    { "SyncTimestamp", stamp }
                });
                mockWebRequest.SetupSet(req => req.Method = "GET").Verifiable();
            }).GetAwaiter().GetResult();



            Assert.AreEqual(4, FakeWebRequest.Instance.UriCalled.Count);
            Assert.AreEqual(fakeProjects.Count, result.Data.Count);

            Assert.AreEqual(true, string.IsNullOrEmpty(result.ContinuationToken));

            mockWebRequest.Verify();
        }