public void GetEntitiesWithoutLoginOK()
        {
            List <Country> fakeCountries = new List <Country>
            {
                new Country {
                    Iso = "BEL", Iso2 = "BE", Name = "Belgium"
                },
                new Country {
                    Iso = "ITA", Iso2 = "IT", Name = "Italy"
                }
            };

            string content = JsonConvert.SerializeObject(fakeCountries, new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });

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

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

            List <Country> countries = request.GetEntityList <Country>().GetAwaiter().GetResult();


            UriBuilder uriBuilder  = new UriBuilder("https://api.aproplan.com/rest/countries");
            string     expectedUrl = AproplanApiUtility.BuildRestUrl(request.ApiRootUrl, "countries", request.ApiVersion, request.RequesterId);

            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[0].ToString());
            Assert.AreEqual(2, countries.Count);
            Assert.AreEqual(fakeCountries[0].Id, countries[0].Id);
            Assert.AreEqual(fakeCountries[1].Id, countries[1].Id);
            mockWebRequest.Verify();
        }
        public void GetEntitiesWithoutLoginNOK()
        {
            string content = "";

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

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

            try
            {
                request.GetEntityList <Meeting>().GetAwaiter().GetResult();
                Assert.Fail("An exception should occur");
            }
            catch (Exception ex)
            {
                ApiException apiException = ex as ApiException;
                if (apiException != null)
                {
                    Assert.AreEqual("Cannot call API without to be connected", apiException.Message);
                    Assert.AreEqual("NOT_CONNECTED", apiException.Code);
                }
                else
                {
                    Assert.Fail("Wrong exception thrown", ex);
                }
            }
        }
Example #3
0
        public void GetEntityIdsOK()
        {
            var         projectId    = Guid.NewGuid();
            List <Guid> expectedGuid = new List <Guid> {
                Guid.NewGuid(), Guid.NewGuid()
            };

            string content = JsonConvert.SerializeObject(expectedGuid, new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });
            Mock <HttpWebRequest> mockWebRequest = FakeWebRequest.CreateRequestWithResponse(content);

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

            var    id     = Guid.NewGuid();
            Filter filter = Filter.IsNotNull("Subject");

            List <Guid> guids = request.GetEntityIds <Note>(projectId, filter).GetAwaiter().GetResult();

            string expectedUrl = AproplanApiUtility.BuildRestUrl(request.ApiRootUrl, "notesids", request.ApiVersion, request.RequesterId, request.TokenInfo.Token);

            expectedUrl += "&filter=" + AproplanApiUtility.EncodeUrl(filter.ToString()) + "&projectid=" + projectId;

            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[0].ToString());
            Assert.AreEqual(expectedGuid.Count, 2);
            Assert.AreEqual(expectedGuid[0], guids[0]);
            Assert.AreEqual(expectedGuid[1], guids[1]);
            mockWebRequest.Verify();
        }
Example #4
0
        public void GetEntityByIdsWithSeveralValOK()
        {
            var         projectId = Guid.NewGuid();
            List <Note> notes     = NoteUtility.GetFakeSimpleNotes();

            string content = JsonConvert.SerializeObject(notes, new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });

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

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

            Guid[]      ids         = notes.Select((n => n.Id)).ToArray();
            List <Note> resultNotes = request.GetEntityByIds <Note>(ids, projectId).GetAwaiter().GetResult();

            string filter = Filter.In("Id", ids).ToString();


            string expectedUrl = AproplanApiUtility.BuildRestUrl(request.ApiRootUrl, "notes", request.ApiVersion, request.RequesterId, request.TokenInfo.Token);

            expectedUrl += "&filter=" + AproplanApiUtility.EncodeUrl(filter) + "&projectid=" + projectId;

            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[0].ToString());

            Assert.AreEqual(notes.Count, resultNotes.Count);
            for (int i = 0; i < notes.Count; i++)
            {
                var expectedNote = notes[i];
                Assert.AreEqual(expectedNote.Id, resultNotes[i].Id);
            }

            mockWebRequest.Verify();
        }
Example #5
0
        public void GetEntityByIdOK()
        {
            var  projectId = Guid.NewGuid();
            Note note      = NoteUtility.GetFakeSimpleNotes()[0];

            string content = JsonConvert.SerializeObject(new List <Note> {
                note
            }, new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });

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

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

            Note resultNote = request.GetEntityById <Note>(note.Id, projectId).GetAwaiter().GetResult();

            string filter = string.Format("Filter.Eq(Id,{0})", note.Id);


            string expectedUrl = AproplanApiUtility.BuildRestUrl(request.ApiRootUrl, "notes", request.ApiVersion, request.RequesterId, request.TokenInfo.Token);

            expectedUrl += "&filter=" + AproplanApiUtility.EncodeUrl(filter) + "&projectid=" + projectId;

            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[0].ToString());

            Assert.AreEqual(note.Id, resultNote.Id);

            mockWebRequest.Verify();
        }
Example #6
0
        public void LoginWithBadCredentialsReturnsUser()
        {
            WebRequest.RegisterPrefix(request.ApiRootUrl, FakeWebRequest.Instance);

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

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

            try
            {
                User user = request.Login("*****@*****.**", "aproplan").GetAwaiter().GetResult();
                Assert.Fail("No exception thrown");
            }
            catch (Exception ex)
            {
                ApiException apiException = ex as ApiException;
                if (apiException != null)
                {
                    Assert.AreEqual("Your login or password is not correct", apiException.Message);
                    Assert.AreEqual("INVALID_CREDENTIALS", apiException.Code);
                    Assert.AreEqual(401, apiException.ReturnCode);
                }
                else
                {
                    Assert.Fail("Wrong exception thrown");
                }
            }
        }
Example #7
0
        public void LoginWithGoodCredentialsReturnsUser()
        {
            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();
            UriBuilder uriBuilder = new UriBuilder("https://api.aproplan.com/rest/simpleloginsecure");

            string  expectedUrl = AproplanApiUtility.BuildRestUrl(request.ApiRootUrl, "simpleloginsecure", request.ApiVersion, request.RequesterId);
            dynamic requestData = AproplanApiUtility.GetRequestData <ExpandoObject>(mockWebRequest);

            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[0].ToString());
            Assert.AreEqual(json.UserInfo.Id, user.Id);
            Assert.AreEqual("*****@*****.**", requestData.alias);
            Assert.AreEqual("aproplan", requestData.pass);
            Assert.AreEqual(json.UserInfo.Id, request.CurrentUser.Id);
            Assert.AreEqual(DateTime.Parse(json.ValidityStart).ToLocalTime(), request.TokenInfo.ValidityStart);
            Assert.AreEqual(DateTime.Parse(json.ValidityLimit).ToLocalTime(), request.TokenInfo.ValidityLimit);

            mockWebRequest.Verify();
        }
Example #8
0
        public void RenewTokenValid()
        {
            DateTime currentTokenStart = DateTime.Now.AddMinutes(-6);

            AproplanApiUtility.FakeLogin(request, currentTokenStart);
            Guid    oldToken = request.TokenInfo.Token;
            dynamic json     = new
            {
                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 = "GET").Verifiable();

            var    tokenInfo   = request.RenewToken().GetAwaiter().GetResult();
            string expectedUrl = AproplanApiUtility.BuildRestUrl(request.ApiRootUrl, "renewtoken", request.ApiVersion, request.RequesterId, oldToken);

            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[1].ToString());
            Assert.AreEqual(json.Token, request.TokenInfo.Token);
            Assert.AreEqual(DateTime.Parse(json.ValidityStart).ToLocalTime(), request.TokenInfo.ValidityStart);
            Assert.AreEqual(DateTime.Parse(json.ValidityLimit).ToLocalTime(), request.TokenInfo.ValidityLimit);
        }
Example #9
0
        public void GetEntityByIdWithoutResultOK()
        {
            string content = JsonConvert.SerializeObject(new List <Note>(), new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });

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

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

            var  id         = Guid.NewGuid();
            Note resultNote = request.GetEntityById <Note>(id).GetAwaiter().GetResult();

            Assert.IsNull(resultNote);
            mockWebRequest.Verify();
        }
Example #10
0
        public void RenewTokenWhileInvalidPeriod()
        {
            DateTime currentTokenStart = DateTime.Now.AddMinutes(-11);

            AproplanApiUtility.FakeLogin(request, currentTokenStart);
            Guid    oldToken = request.TokenInfo.Token;
            dynamic json     = new
            {
                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 = "GET").Verifiable();

            try
            {
                var tokenInfo = request.RenewToken().GetAwaiter().GetResult();
                Assert.Fail("An exception should be thrown");
            }
            catch (Exception ex)
            {
                ApiException apiException = ex as ApiException;
                if (apiException != null)
                {
                    Assert.AreEqual("Your current token is invalid, use login method instead", apiException.Message);
                    Assert.AreEqual("TOKEN_EXPIRED", apiException.Code);
                }
                else
                {
                    Assert.Fail("Wrong exception thrown");
                }
            }
        }
Example #11
0
        public void GetEntityByIdsWithQueryParamsOK()
        {
            var  projectId = Guid.NewGuid();
            Note note      = NoteUtility.GetFakeSimpleNotes()[0];

            string content = JsonConvert.SerializeObject(new List <Note> {
                note
            }, new JsonSerializerSettings
            {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            });

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

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

            Guid[]      ids         = new Guid[] { note.Id };
            List <Note> resultNotes = request.GetEntityByIds <Note>(ids, projectId, null, new Dictionary <string, string> {
                { "testparam", "john" }
            }).GetAwaiter().GetResult();

            string filter = Filter.Eq("Id", note.Id).ToString();


            string expectedUrl = AproplanApiUtility.BuildRestUrl(request.ApiRootUrl, "notes", request.ApiVersion, request.RequesterId, request.TokenInfo.Token);

            expectedUrl += "&filter=" + AproplanApiUtility.EncodeUrl(filter) + "&projectid=" + projectId + "&testparam=john";

            Assert.AreEqual(expectedUrl, FakeWebRequest.Instance.UriCalled[0].ToString());

            Assert.AreEqual(1, resultNotes.Count);
            Assert.AreEqual(note.Id, resultNotes[0].Id);


            mockWebRequest.Verify();
        }