public void GetObjectFromIDs()
        {
            HCPMock hcp1 = new HCPMock () {
                ProviderName = "CloudMine Data Hospital 1",
                ProviderAddress = "1217 Sansom Street | Suite 600, Philadelphia, PA 19107",
                ProviderEmployeeCount = 25
            };

            HCPMock hcp2 = new HCPMock () {
                ProviderName = "CloudMine Data Hospital 2",
                ProviderAddress = "1217 Sansom Street | Suite 600, Philadelphia, PA 19107",
                ProviderEmployeeCount = 25
            };

            // insert the first object
            Task<CMObjectResponse> objResponse = appObjSrvc.SetObject<HCPMock> (hcp1);
            objResponse.Wait ();

            // insert the second object
            objResponse = appObjSrvc.SetObject<HCPMock> (hcp2);
            objResponse.Wait ();

            Task<CMObjectFetchResponse<HCPMock>> getResponse = appObjSrvc.GetObjects<HCPMock> (new string[] { hcp1.ID, hcp2.ID });
            getResponse.Wait ();

            Assert.AreEqual (getResponse.Result.Status, HttpStatusCode.OK);
            Assert.That (getResponse.Result.HasErrors, Is.False);
            Assert.That (getResponse.Result.Success.ContainsKey (hcp1.ID), Is.True);
            Assert.That (getResponse.Result.Success.ContainsKey (hcp2.ID), Is.True);
            Assert.AreEqual (getResponse.Result.Success [hcp1.ID].GetType (), typeof(HCPMock));
            Assert.AreEqual (getResponse.Result.Success [hcp2.ID].GetType (), typeof(HCPMock));
        }
        public void SetObjectFromCMObject()
        {
            HCPMock hcp = new HCPMock () {
                ProviderName = "CloudMine Data Hospital 3",
                ProviderAddress = "1217 Sansom Street | Suite 600, Philadelphia, PA 19107",
                ProviderEmployeeCount = 25
            };

            Task<CMObjectResponse> objResponse = appObjSrvc.SetObject<HCPMock> (hcp);
            objResponse.Wait ();

            Assert.AreEqual (objResponse.Result.Status, HttpStatusCode.OK);
            Assert.That (objResponse.Result.HasErrors, Is.False);
            Assert.That (objResponse.Result.Success.ContainsKey(hcp.ID), Is.True);
        }
        public void SetObjectFromCMObject()
        {
            HCPMock hcp = new HCPMock()
            {
                ProviderName          = "CloudMine Data Hospital 3",
                ProviderAddress       = "1217 Sansom Street | Suite 600, Philadelphia, PA 19107",
                ProviderEmployeeCount = 25
            };

            Task <CMObjectResponse> objResponse = appObjSrvc.SetObject <HCPMock> (hcp);

            objResponse.Wait();

            Assert.AreEqual(objResponse.Result.Status, HttpStatusCode.OK);
            Assert.That(objResponse.Result.HasErrors, Is.False);
            Assert.That(objResponse.Result.Success.ContainsKey(hcp.ID), Is.True);
        }
        public void SearchObjectByClassAndCount()
        {
            HCPMock hcp = new HCPMock () {
                ProviderName = "CloudMine Data Hospital",
                ProviderAddress = "1217 Sansom Street | Suite 600, Philadelphia, PA 19107",
                ProviderEmployeeCount = 200
            };

            Task<CMObjectResponse> objResponse = appObjSrvc.SetObject<HCPMock> (hcp);
            objResponse.Wait ();

            Assert.AreEqual (objResponse.Result.Status, HttpStatusCode.OK);
            Assert.That (objResponse.Result.HasErrors, Is.False);
            Assert.That (objResponse.Result.Success.ContainsKey(hcp.ID), Is.True);

            Task<CMObjectSearchResponse<HCPMock>> searchResponse = appObjSrvc.SearchObjects<HCPMock> (@"[__class__=""HCPMock"", ProviderEmployeeCount=200]");
            searchResponse.Wait ();

            Assert.AreEqual (searchResponse.Result.Status, HttpStatusCode.OK);
            Assert.That (searchResponse.Result.HasErrors, Is.False);
            Assert.That (searchResponse.Result.Success.ContainsKey (hcp.ID), Is.True);
            Assert.AreEqual (searchResponse.Result.Success [hcp.ID].GetType (), typeof(HCPMock));
        }
        public void CanCreateAccessList()
        {
            Task<CMUserResponse<CMUserProfileMock>> loginResponse = userService.Login<CMUserProfileMock> (user);
            loginResponse.Wait ();

            Assert.AreEqual (loginResponse.Result.Status, HttpStatusCode.OK);
            Assert.That (loginResponse.Result.HasErrors, Is.False);
            Assert.AreEqual (loginResponse.Result.CMUser.Profile.GetType (), typeof(CMUserProfileMock));
            Assert.AreEqual (loginResponse.Result.CMUser.Profile.FavoriteCafe, "CloudMine Coffee to Go");
            Assert.AreEqual (loginResponse.Result.CMUser.Session, user.Session); // ensure session set

            var acl = new CMAccessList () {
                Permissions = new CMAccessListPermission[] {
                    CMAccessListPermission.r,
                    CMAccessListPermission.u
                },
                Members =  new string[] { user.UserID }
            };

            IAccessListService accessService = new AccessListService (app, api);
            Task<CMResponse> createAccessListTask = accessService.CreateAccessList (user, acl);
            createAccessListTask.Wait ();

            Assert.AreEqual (createAccessListTask.Result.Status, HttpStatusCode.OK);

            acl.Permissions = new CMAccessListPermission[] {
                CMAccessListPermission.r
            };

            Task<CMResponse> modifyAccessListTask = accessService.ModifyAccessList (user, acl);
            modifyAccessListTask.Wait ();

            Assert.AreEqual (modifyAccessListTask.Result.Status, HttpStatusCode.OK);

            HCPMock obj = new HCPMock () {
                AccessListIDs = new string[] { acl.ID }
            };
        }