Example #1
0
        public void AuthenticateMobileWithSessionTokenTest()
        {
            var username       = RandomString();
            var password       = RandomString();
            var user           = CreateUser(username, password);
            var requestManager = FakeRequestManager.Create();
            var sessionToken   = new ApiSession
            {
                CreatedDate      = DateTime.Now,
                LastAccessedDate = DateTime.Now,
                SessionToken     = Guid.NewGuid(),
                UserId           = user.UserId,
            };

            db.ApiSessions.InsertOnSubmit(sessionToken);
            db.SubmitChanges();

            requestManager.CurrentHttpContext.Request.Headers["SessionToken"] = sessionToken.SessionToken.ToString();
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            var roleProvider = new MockCMSRoleProvider();

            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);

            var result = AccountModel.AuthenticateMobile(requestManager.CurrentDatabase, requestManager.CurrentImageDatabase);

            result.ErrorMessage.ShouldBeNullOrEmpty();
            result.IsValid.ShouldBeTrue();
            result.Status.ShouldBe(UserValidationStatus.Success);
        }
        public void GetCouplesBothList_Should_Pull_Proper_HoHPeopleID()
        {
            /* Excel export should pull proper Head of Household PeopleID*/
            var requestManager  = FakeRequestManager.Create();
            var db              = requestManager.CurrentDatabase;
            var controller      = new OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var m       = OrganizationModel.Create(db, requestManager.CurrentUser);
            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager);
            var oid     = FakeOrg.org.OrganizationId;

            m.OrgId = oid;
            var wife = CreateUser(RandomString(), RandomString());

            //Create family and then Execute GetCouplesBothList to see if the right HeadOfHouseHoldId is retrieved...
            var p                = CreateFakeFamily(oid, m, controller);
            var mailingModel     = new MailingController(requestManager);
            var ExcelCouplesBoth = mailingModel.GetCouplesBothList(m.QueryId, 500);

            FakeOrganizationUtils.DeleteOrg(FakeOrg.org.OrganizationId);
            RemoveFakePeopleFromDB(ToPeople(ExcelCouplesBoth), db);
        }
Example #3
0
        public void ApiUserInfoTest(string password)
        {
            var username           = RandomString();
            var apiKey             = RandomString();
            var IP                 = "127.0.0.1";
            var requestManager     = FakeRequestManager.Create();
            var membershipProvider = new MockCMSMembershipProvider();

            membershipProvider.ValidUsers.Add(new CmsData.User {
                Username = username, Password = password
            });
            var roleProvider = new MockCMSRoleProvider();

            db.SetSetting("ApiUserInfoKey", apiKey);
            db.SetSetting("ApiUserInfoIPList", IP);

            CreateUser(username, password);
            requestManager.CurrentHttpContext.Request.Headers["Authorization"]       = BasicAuthenticationString(username, password);
            requestManager.CurrentHttpContext.Request.Headers["ApiKey"]              = apiKey;
            requestManager.CurrentHttpContext.Request.ServerVariables["REMOTE_ADDR"] = IP;
            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);

            var controller = new ExternalServicesController(requestManager);

            controller.ApiUserInfo();
        }
Example #4
0
        public void FetchInvolvementTest()
        {
            var username           = RandomString();
            var password           = RandomString();
            var user               = CreateUser(username, password);
            var requestManager     = FakeRequestManager.Create();
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            var roleProvider = new MockCMSRoleProvider();

            db.OrganizationMembers.InsertOnSubmit(new OrganizationMember
            {
                Organization = db.Organizations.First(),
                Person       = user.Person,
                MemberTypeId = MemberTypeCode.Member
            });
            db.SubmitChanges();
            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);
            requestManager.CurrentHttpContext.Request.Headers["Authorization"] = BasicAuthenticationString(username, password);
            var controller = new MobileAPIv2Controller(requestManager);
            var message    = new MobileMessage {
                argInt = user.PeopleId.Value
            };
            var data   = message.ToString();
            var result = controller.FetchInvolvement(data) as MobileMessage;

            result.ShouldNotBeNull();
            result.count.ShouldBe(1);
            result.error.ShouldBe(0);
            var orgs = JsonConvert.DeserializeObject <List <MobileInvolvement> >(result.data);

            orgs.Count.ShouldBe(1);
        }
Example #5
0
        public void UpdatePersonTest(int electronic, int statement, int envelope)
        {
            var username           = RandomString();
            var password           = RandomString();
            var user               = CreateUser(username, password);
            var requestManager     = FakeRequestManager.Create();
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            var roleProvider = new MockCMSRoleProvider();

            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);
            requestManager.CurrentHttpContext.Request.Headers["Authorization"] = BasicAuthenticationString(username, password);
            var controller = new MobileAPIv2Controller(requestManager);
            var message    = new MobileMessage
            {
                argInt   = user.PeopleId.Value,
                instance = RandomString(),
                data     = $@"[{{""type"":62,""value"":{electronic}}},{{""type"":63,""value"":{statement}}},{{""type"":64,""value"":{envelope}}}]",
            };
            var data   = message.ToString();
            var result = controller.UpdatePerson(data) as MobileMessage;

            result.ShouldNotBeNull();
            result.count.ShouldBe(1);
            result.error.ShouldBe(0);
            db.Refresh(RefreshMode.OverwriteCurrentValues, user.Person);
            user.Person.EnvelopeOptionsId.ShouldBe(envelope);
            user.Person.ElectronicStatement.ShouldBe(electronic != 0);
            user.Person.ContributionOptionsId.ShouldBe(statement);
        }
        public void ShouldPassAskChurchQuestions(bool memberus, bool otherchurch, bool nochurch)
        {
            var requestManager  = FakeRequestManager.Create();
            var controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager);

            OrgId = FakeOrg.org.OrganizationId;

            var model = FakeOrganizationUtils.GetFakeOnlineRegModel(OrgId);

            model.List[0].memberus    = memberus;
            model.List[0].otherchurch = otherchurch;
            model.List[0].nochurch    = nochurch;
            model.List[0].paydeposit  = true;

            var resultSubmitQuestions      = controller.SubmitQuestions(0, model);
            var resultCompleteRegistration = controller.CompleteRegistration(model);

            Assert.NotNull(resultSubmitQuestions);
            Assert.NotNull(resultCompleteRegistration);
            FakeOrganizationUtils.DeleteOrg(OrgId);
        }
Example #7
0
        public void FetchGivingSummaryTest(decimal contribution, string count, string comment, string total, string contribCount)
        {
            var username           = RandomString();
            var password           = RandomString();
            var user               = CreateUser(username, password);
            var requestManager     = FakeRequestManager.Create();
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            var roleProvider = new MockCMSRoleProvider();

            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);
            requestManager.CurrentHttpContext.Request.Headers["Authorization"] = BasicAuthenticationString(username, password);
            var year = DateTime.Now.Year;

            if (contribution > 0)
            {
                var c = new Contribution()
                {
                    PeopleId             = user.PeopleId,
                    ContributionAmount   = contribution,
                    ContributionDate     = new DateTime(year, 7, 2),
                    ContributionStatusId = ContributionStatusCode.Recorded,
                    ContributionTypeId   = ContributionTypeCode.Online,
                    CreatedDate          = DateTime.Now,
                    FundId = 1
                };
                db.Contributions.InsertOnSubmit(c);
                db.SubmitChanges();
            }
            var controller = new MobileAPIv2Controller(requestManager);
            var message    = new MobileMessage
            {
                argInt = 0
            };
            var data   = message.ToString();
            var result = controller.FetchGivingSummary(data) as MobileMessage;

            result.ShouldNotBeNull();
            result.count.ShouldBe(1);
            result.error.ShouldBe(0);
            var summary = JsonConvert.DeserializeObject <MobileGivingSummary>(result.data);

            summary.Count.ShouldBe(1);
            var current = summary[$"{year}"];

            current.ShouldNotBeNull();
            current.title.ShouldBe($"{year}");
            current.comment.ShouldBe(comment);
            current.count.ShouldBe(count);
            current.loaded.ShouldBe(1);
            current.total.ShouldBe(total);
            current.summary[0].title.ShouldBe("Contributions");
            current.summary[0].comment.ShouldBe(comment);
            current.summary[0].count.ShouldBe(contribCount);
            current.summary[0].showAsPledge.ShouldBe(0);
        }
Example #8
0
        public void Should_Use_MasterOrg_DOB_Phone_Settings()
        {
            int MasterOrgId     = 0;
            int ChildOrgId      = 0;
            var requestManager  = FakeRequestManager.Create();
            var controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            // Create Master Org
            var MasterOrgconfig = new Organization()
            {
                OrganizationName   = "MockMasterName",
                RegistrationTitle  = "MockMasterTitle",
                Location           = "MockLocation",
                RegistrationTypeId = 20,
                RegSetting         = XMLSettings(MasterOrgId)
            };

            var FakeMasterOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, MasterOrgconfig);

            MasterOrgId = FakeMasterOrg.org.OrganizationId;

            // Create Child Org
            var ChildOrgconfig = new Organization()
            {
                OrganizationName   = "MockMasterName",
                RegistrationTitle  = "MockMasterTitle",
                Location           = "MockLocation",
                RegistrationTypeId = 8,
                ParentOrgId        = MasterOrgId
            };

            var FakeChildOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, ChildOrgconfig);

            ChildOrgId = FakeChildOrg.org.OrganizationId;

            var MasterOnlineRegModel = FakeOrganizationUtils.GetFakeOnlineRegModel(ChildOrgId);
            var ChildOnlineRegModel  = FakeOrganizationUtils.GetFakeOnlineRegModel(MasterOrgId);

            var MasterOnlineRegPersonModel = MasterOnlineRegModel.LoadExistingPerson(ChildOnlineRegModel.UserPeopleId ?? 0, 0);
            var ChildOnlineRegPersonModel  = ChildOnlineRegModel.LoadExistingPerson(ChildOnlineRegModel.UserPeopleId ?? 0, 0);

            ChildOnlineRegPersonModel.ShowDOBOnFind().ShouldBe(true);
            ChildOnlineRegPersonModel.ShowPhoneOnFind().ShouldBe(true);

            FakeOrganizationUtils.DeleteOrg(MasterOrgId);
            FakeOrganizationUtils.DeleteOrg(ChildOrgId);
        }
Example #9
0
        public void RecordAttendTest(string setting)
        {
            var now = DateTime.Now;

            db.SetSetting("AttendCountUpdatesOffline", setting);
            db.SubmitChanges();
            var username = RandomString();
            var password = RandomString();
            var user     = CreateUser(username, password);
            var org      = CreateOrganization();

            org.FirstMeetingDate    = now.AddDays(-7);
            org.RollSheetVisitorWks = 2;
            org.AllowAttendOverlap  = true;
            org.CanSelfCheckin      = true;
            org.NoSecurityLabel     = true;
            org.NumCheckInLabels    = 0;
            db.SubmitChanges();
            var meetingTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute - (now.Minute % 15), 0);

            Meeting.FetchOrCreateMeeting(db, org.OrganizationId, meetingTime, noautoabsents: true);

            var requestManager     = FakeRequestManager.Create();
            var context            = requestManager.CurrentHttpContext;
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            var roleProvider = new MockCMSRoleProvider();

            roleProvider.UserRoles.Add("Checkin");
            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);
            context.Request.Headers["Authorization"] = BasicAuthenticationString(username, password);

            var controller = new CheckInAPIController(requestManager);
            var json       = $@"{{
    ""rebranded"": ""false"",
    ""argInt"": ""0"",
    ""version"": ""2"",
    ""id"": ""0"",
    ""data"": ""{{\""orgID\"":{org.OrganizationId},\""present\"":true,\""datetime\"":\""{meetingTime:s}\"",\""peopleID\"":{user.PeopleId}}}"",
    ""device"": ""1"",
    ""argString"": """",
    ""count"": ""0""
}}";
            var result     = controller.RecordAttend(json) as CheckInMessage;

            db.DeleteSetting("AttendCountUpdatesOffline");

            result.error.ShouldBe(0);
            result.count.ShouldBe(1);
        }
Example #10
0
        public void Column_Number_Out_Of_Range_Should_Show_Error()
        {
            CMSDataContext db              = CMSDataContext.Create(DatabaseFixture.Host);
            var            requestManager  = FakeRequestManager.Create();
            var            controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var            routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, new CmsData.Organization()
            {
                OrganizationName   = "MockName",
                RegistrationTitle  = "MockTitle",
                Location           = "MockLocation",
                RegistrationTypeId = RegistrationTypeCode.JoinOrganization
            });

            OrgId = FakeOrg.org.OrganizationId;

            username = RandomString();
            password = RandomString();
            var user = CreateUser(username, password, roles: new string[] { "Edit", "Access" });

            Login();
            Wait(3);

            Open($"{rootUrl}Org/{OrgId}#tab-Registrations-tab");
            WaitForElementToDisappear(loadingUI);

            Find(css: "#Questions-tab > .ajax").Click();
            WaitForElementToDisappear(loadingUI);

            Find(css: ".row:nth-child(1) > .col-sm-12 .edit").Click();
            WaitForElementToDisappear(loadingUI);

            Find(text: "Add Question").Click();
            Wait(2);
            Find(text: "Checkboxes").Click();
            Wait(2);
            Find(text: "Done").Click();
            Wait(2);
            Find(css: ".confirm").Click();
            Wait(2);

            Find(xpath: "//div[4]/div/div/input").SendKeys("5");
            Find(text: "Save").Click();
            Wait(2);

            PageSource.ShouldContain("The field Columns must be between 0 and 4.");
        }
Example #11
0
        public void Should_Change_No_Zero_field(string value)
        {
            var requestManager  = FakeRequestManager.Create();
            var db              = requestManager.CurrentDatabase;
            var controller      = new CmsWeb.Areas.Setup.Controllers.DivisionController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "Division" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            Program prog = new Program()
            {
                Name             = "MockProgram",
                RptGroup         = null,
                StartHoursOffset = null,
                EndHoursOffset   = null
            };

            db.Programs.InsertOnSubmit(prog);
            db.SubmitChanges();

            Division div = new Division()
            {
                Name          = "MockDivision",
                ProgId        = prog.Id,
                SortOrder     = null,
                EmailMessage  = null,
                EmailSubject  = null,
                Instructions  = null,
                Terms         = null,
                ReportLine    = null,
                NoDisplayZero = false
            };

            db.Divisions.InsertOnSubmit(div);
            db.SubmitChanges();

            controller.Edit("z" + div.Id, value);

            bool?result = db.Divisions.Where(x => x.Id == div.Id).Select(y => y.NoDisplayZero).First();

            result.ShouldBe(true);

            db.ExecuteCommand("DELETE FROM [ProgDiv] WHERE [ProgId] = {0} AND [DivId] = {1}", prog.Id, div.Id);
            db.ExecuteCommand("DELETE FROM [Division] WHERE [Id] = {0}", div.Id);
            db.ExecuteCommand("DELETE FROM [Program] WHERE [Id] = {0}", prog.Id);
        }
Example #12
0
        public void ExcelListShouldNotHaveDeceased()
        {
            var requestManager = FakeRequestManager.Create();
            var db             = requestManager.CurrentDatabase;

            var family = new Family();

            db.Families.InsertOnSubmit(family);
            db.SubmitChanges();

            var hoh = new Person
            {
                Family             = family,
                FirstName          = RandomString(),
                LastName           = RandomString(),
                EmailAddress       = RandomString() + "@example.com",
                MemberStatusId     = MemberStatusCode.Member,
                PositionInFamilyId = PositionInFamily.PrimaryAdult
            };
            var child = new Person
            {
                Family             = family,
                FirstName          = RandomString(),
                LastName           = RandomString(),
                EmailAddress       = RandomString() + "@example.com",
                DeceasedDate       = DateTime.Now,
                MemberStatusId     = MemberStatusCode.Member,
                PositionInFamilyId = PositionInFamily.Child
            };

            db.People.InsertOnSubmit(hoh);
            db.People.InsertOnSubmit(child);
            db.SubmitChanges();

            string code  = "FamilyId = " + family.FamilyId;
            var    query = QueryModel.QueryCode(db, code);

            query.Count().ShouldBeGreaterThan(0);

            var ExcelPics = ExcelExportModel.List(query.QueryId.Value);

            ExcelPics.Where(p => p.Children.HasValue()).Count().ShouldBe(0);

            db.PurgePerson(hoh.PeopleId);
            db.PurgePerson(child.PeopleId);
            db.Families.DeleteOnSubmit(family);
            db.SubmitChanges();
        }
        public void Should_Not_Use_Email_Draft_Versioning()
        {
            var requestManager = FakeRequestManager.Create();
            var db             = requestManager.CurrentDatabase;
            var controller     = new CmsWeb.Areas.Main.Controllers.EmailController(requestManager);

            db.SetSetting("UseEmailDraftVersioning", "false");
            var initialDraft = CreateInitialEmailDraft(db);
            var email        = CreateTestEmail();

            controller.SaveDraft(email, initialDraft.Id, "Test", 1);

            var versionedDraft = db.Contents.FirstOrDefault(c => c.ArchivedFromId == initialDraft.Id);

            versionedDraft.ShouldBeNull();
        }
        private IRequestManager SetupRequestManager()
        {
            var username = RandomString();
            var password = RandomString();

            user = CreateUser(username, password);
            var requestManager     = FakeRequestManager.Create();
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            var roleProvider = new MockCMSRoleProvider();

            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);
            requestManager.CurrentHttpContext.Request.Headers["Authorization"] = BasicAuthenticationString(username, password);
            return(requestManager);
        }
Example #15
0
        public void ShouldProcessZeroLimitOrgsAsFilled()
        {
            var requestManager    = FakeRequestManager.Create();
            var orgRegLimitConfig = new Organization()
            {
                OrganizationName   = "MockMasterName",
                RegistrationTitle  = "MockMasterTitle",
                Location           = "MockLocation",
                RegistrationTypeId = RegistrationTypeCode.JoinOrganization,
                Limit = 0
            };
            var            fakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, orgRegLimitConfig);
            OnlineRegModel om      = FakeOrganizationUtils.GetFakeOnlineRegModel((int)fakeOrg.org.OrganizationId);

            om.Filled().ShouldBe("registration is full");
            FakeOrganizationUtils.DeleteOrg(fakeOrg.org.OrganizationId);
        }
Example #16
0
        public void ShouldDetectDuplicateGift()
        {
            var requestManager = FakeRequestManager.Create();
            var testOrg        = new Organization()
            {
                OrganizationName   = "MockMasterName",
                RegistrationTitle  = "MockMasterTitle",
                Location           = "MockLocation",
                RegistrationTypeId = RegistrationTypeCode.JoinOrganization,
                Limit = 0
            };
            var org = FakeOrganizationUtils.MakeFakeOrganization(requestManager, testOrg);

            using (var db = CMSDataContext.Create(DatabaseFixture.Host))
            {
                Transaction t = new Transaction()
                {
                    TransactionDate    = DateTime.Now,
                    First              = "Chester",
                    Last               = "Tester",
                    Amt                = 30,
                    Testing            = true,
                    TransactionGateway = "Sage",
                    OrgId              = org.org.OrganizationId
                };
                db.Transactions.InsertOnSubmit(t);
                db.SubmitChanges();
            }

            OnlineRegPersonModel person = new OnlineRegPersonModel(db)
            {
                FirstName = "Chester",
                LastName  = "Tester"
            };

            OnlineRegModel om = FakeOrganizationUtils.GetFakeOnlineRegModel(org.org.OrganizationId);

            om.List = new List <OnlineRegPersonModel>()
            {
                person
            };
            om.CheckDuplicateGift(30).ShouldNotBeNull();
            FakeOrganizationUtils.DeleteOrg(org.org.OrganizationId);
        }
        public void ShouldCalculateFirstSundayOfTheMonth(int year, int month, string result)
        {
            var requestManager     = FakeRequestManager.Create();
            var VolunteerOrgconfig = new Organization()
            {
                OrganizationName   = "MockMasterName",
                RegistrationTitle  = "MockMasterTitle",
                Location           = "MockLocation",
                RegistrationTypeId = RegistrationTypeCode.ChooseVolunteerTimes,
            };

            var FakeOrg          = FakeOrganizationUtils.MakeFakeOrganization(requestManager, VolunteerOrgconfig);
            var m                = new VolunteerCommitmentsModel(FakeOrg.org.OrganizationId);
            var calculatedSunday = m.GetFirstSundayOfTheMonth(year, month);

            calculatedSunday.ToString("MM/dd/yyyy").ShouldBe(result);

            FakeOrganizationUtils.DeleteOrg(FakeOrg.org.OrganizationId);
        }
Example #18
0
        public void Should_SendAllConfirmations_ToStaff()
        {
            db = CMSDataContext.Create(DatabaseFixture.Host);
            var requestManager  = FakeRequestManager.Create();
            var controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, new CmsData.Organization()
            {
                OrganizationName   = RandomString(),
                RegistrationTitle  = RandomString(),
                Location           = RandomString(),
                RegistrationTypeId = RegistrationTypeCode.JoinOrganization,
                NotifyIds          = "1"
            });

            OrgId = FakeOrg.org.OrganizationId;

            username = RandomString();
            password = RandomString();
            var CurrentUser = CreateUser(username, password);

            EmailAddress = CurrentUser.EmailAddress;
            Login();

            Open($"{rootUrl}OnlineReg/{OrgId}");

            WaitForElement("#otheredit", 5);
            Find(id: "otheredit").Click();

            WaitForElement("#submitit", 5);
            Find(id: "submitit").Click();

            WaitForElement("p:nth-child(3) > a", 5);

            var log = db.ActivityLogs.FirstOrDefault(p => p.OrgId == OrgId & p.Activity.Contains("SentConfirmationsToStaff"));

            log.ShouldNotBeNull();
        }
Example #19
0
        public void Should_Store_and_Populate_RegEmail()
        {
            db = CMSDataContext.Create(DatabaseFixture.Host);
            var requestManager  = FakeRequestManager.Create();
            var controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, new CmsData.Organization()
            {
                OrganizationName   = "MockName",
                RegistrationTitle  = "MockTitle",
                Location           = "MockLocation",
                RegistrationTypeId = RegistrationTypeCode.JoinOrganization
            });

            OrgId = FakeOrg.org.OrganizationId;

            username = RandomString();
            password = RandomString();
            var CurrentUser = CreateUser(username, password);

            EmailAddress = CurrentUser.EmailAddress;
            Login();

            Open($"{rootUrl}OnlineReg/{OrgId}");

            WaitForElement("#otheredit", 5);
            Find(id: "otheredit").Click();

            WaitForElement("#submitit", 5);
            Find(id: "submitit").Click();

            WaitForElement("p:nth-child(3) > a", 5);

            var RegEmail = db.RecRegs.Where(x => x.PeopleId == CurrentUser.PeopleId).Select(x => x.Email).FirstOrDefault();

            RegEmail.ShouldBe(CurrentUser.EmailAddress);
        }
Example #20
0
        private void createOrgWithFee()
        {
            var requestManager  = FakeRequestManager.Create();
            var controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, new Organization()
            {
                OrganizationName   = "MockName",
                RegistrationTitle  = "MockTitle",
                Location           = "MockLocation",
                RegistrationTypeId = RegistrationTypeCode.JoinOrganization
            });

            OrgId = FakeOrg.org.OrganizationId;
        }
Example #21
0
        public void PortraitTest()
        {
            Person personWithPortrait = db.People.Where(p => p.PictureId != null).First();

            var requestManager     = FakeRequestManager.Create();
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = false
            };
            var roleProvider = new MockCMSRoleProvider();

            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);

            var controller = new APIPersonController(requestManager);
            var routeData  = new RouteData();

            controller.ControllerContext = new ControllerContext(requestManager.CurrentHttpContext, routeData, controller);
            var result = controller.Portrait(personWithPortrait.Picture.MediumId, 100, 100) as HttpStatusCodeResult;

            result?.StatusCode.ShouldBe(400);

            var username = RandomString();
            var password = RandomString();
            var user     = CreateUser(username, password);

            HttpCookie AuthCookie = new HttpCookie("Authorization");

            AuthCookie.Value   = BasicAuthenticationString(username, password);
            AuthCookie.Expires = DateTime.Now.AddMinutes(5);
            membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            requestManager.CurrentHttpContext.Request.Cookies.Add(AuthCookie);

            controller = new APIPersonController(requestManager);
            routeData  = new RouteData();
            controller.ControllerContext = new ControllerContext(requestManager.CurrentHttpContext, routeData, controller);
            result = controller.Portrait(personWithPortrait.Picture.MediumId, 100, 100) as HttpStatusCodeResult;
            result?.StatusCode.ShouldBe(200);
        }
Example #22
0
        public void Relaxed_Questions_Should_Not_Be_Visible()
        {
            CMSDataContext db              = CMSDataContext.Create(DatabaseFixture.Host);
            var            requestManager  = FakeRequestManager.Create();
            var            controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var            routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, new CmsData.Organization()
            {
                OrganizationName   = "MockName",
                RegistrationTitle  = "MockTitle",
                Location           = "MockLocation",
                RegistrationTypeId = RegistrationTypeCode.JoinOrganization
            });

            OrgId = FakeOrg.org.OrganizationId;

            username = RandomString();
            password = RandomString();
            var user = CreateUser(username, password, roles: new string[] { "Edit", "Access" });

            Login();

            SettingUtils.UpdateSetting("RelaxedReqAdminOnly", "true");

            Open($"{rootUrl}Org/{OrgId}#tab-Registrations-tab");
            WaitForElementToDisappear(loadingUI);

            Find(css: "#Registration > form > div.row > div:nth-child(2) > div > a.btn.edit.ajax.btn-primary").Click();
            WaitForElementToDisappear(loadingUI);

            var inputDOB = Find(id: "ShowDOBOnFind");

            inputDOB.ShouldBeNull();
        }
Example #23
0
        protected int CreateOrgWithFee()
        {
            var requestManager  = FakeRequestManager.Create();
            var controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, new Organization()
            {
                OrganizationName   = "MockName",
                RegistrationTitle  = "MockTitle",
                Location           = "MockLocation",
                RegistrationTypeId = RegistrationTypeCode.JoinOrganization
            });

            var OrgId = FakeOrg.org.OrganizationId;

            Open($"{rootUrl}Org/{OrgId}#tab-Registrations-tab");
            WaitForElementToDisappear(loadingUI, maxWaitTimeInSeconds: 10);

            ScrollTo(css: "#Registration > form > h4:nth-child(3)");
            Find(css: "#Fees-tab > a").Click();
            WaitForElementToDisappear(loadingUI, maxWaitTimeInSeconds: 10);

            Find(css: "#Fees .row .edit").Click();
            WaitForElementToDisappear(loadingUI, maxWaitTimeInSeconds: 10);

            ScrollTo(id: "Fee");
            Find(id: "Fee").Clear();
            Find(id: "Fee").SendKeys(RandomNumber(1, 1000).ToString());
            Find(css: ".pull-right:nth-child(1) > .validate").Click();
            Wait(5);

            return(OrgId);
        }
Example #24
0
        public void authenticateTest(string password)
        {
            var username           = RandomString();
            var requestManager     = FakeRequestManager.Create();
            var membershipProvider = new MockCMSMembershipProvider();

            membershipProvider.ValidUsers.Add(new CmsData.User {
                Username = username, Password = password
            });
            var roleProvider = new MockCMSRoleProvider();

            CreateUser(username, password);
            requestManager.CurrentHttpContext.Request.Headers["Authorization"] = BasicAuthenticationString(username, password);
            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);

            var mobileAuth = new MobileAuthentication(db, "");

            mobileAuth.authenticate("");

            mobileAuth.getErrorMessage().ShouldBe("Authenticated");
            mobileAuth.hasError().ShouldBeFalse();
        }
Example #25
0
        public void Application_Export_Should_Pull_HoHPeopleID()
        {
            var requestManager  = FakeRequestManager.Create();
            var db              = requestManager.CurrentDatabase;
            var controller      = new OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var m       = OrganizationModel.Create(db, requestManager.CurrentUser);
            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager);
            var oid     = FakeOrg.org.OrganizationId;

            m.OrgId = oid;
            var wife = CreateUser(RandomString(), RandomString());

            username = RandomString();
            password = RandomString();
            string roleName = "role_" + RandomString();
            var    user     = CreateUser(username, password, roles: new string[] { "Access", "Edit", "Admin", "Membership" });

            Login();

            //Create family and then Execute GetCouplesBothList to see if the right HeadOfHouseHoldId is retrieved...
            var p                = CreateFakeFamily(oid, m, controller);
            var mailingModel     = new MailingController(requestManager);
            var ExcelCouplesBoth = mailingModel.GetCouplesBothList(m.QueryId, 500);

            //assert

            //Finalize
            FakeOrganizationUtils.DeleteOrg(FakeOrg.org.OrganizationId);
            RemoveFakePeopleFromDB(ToPeople(ExcelCouplesBoth), db);
            Logout();
        }
Example #26
0
        public void AuthenticatedLinkTest()
        {
            var username           = RandomString();
            var password           = RandomString();
            var user               = CreateUser(username, password);
            var requestManager     = FakeRequestManager.Create();
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            var roleProvider = new MockCMSRoleProvider();

            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);
            db.OrganizationMembers.InsertOnSubmit(new OrganizationMember
            {
                Organization = db.Organizations.First(),
                Person       = user.Person,
                MemberTypeId = MemberTypeCode.Member
            });
            db.SubmitChanges();
            requestManager.CurrentHttpContext.Request.Headers["Authorization"] = BasicAuthenticationString(username, password);
            var controller = new MobileAPIv2Controller(requestManager);
            var message    = new MobileMessage
            {
                device    = (int)MobileMessage.Device.ANDROID,
                argString = $"/Person2/{user.PeopleId}/Resources"
            };
            var data   = message.ToString();
            var result = controller.AuthenticatedLink(data) as MobileMessage;
            var token  = db.OneTimeLinks
                         .Where(t => t.Querystring == username && t.Expires < DateTime.Now.AddMinutes(16))
                         .OrderByDescending(t => t.Expires).First().Id.ToCode();

            result.ShouldNotBeNull();
            result.error.ShouldBe(0);
            result.data.ShouldEndWith($"/Logon?otltoken={token}&ReturnUrl=%2fPerson2%2f{user.PeopleId}%2fResources%3fsource%3dAndroid");
        }
Example #27
0
        public void InvolvementList_Should_Have_FamilyId()
        {
            var requestManager  = FakeRequestManager.Create();
            var db              = requestManager.CurrentDatabase;
            var controller      = new CmsWeb.Areas.OnlineReg.Controllers.OnlineRegController(requestManager);
            var routeDataValues = new Dictionary <string, string> {
                { "controller", "OnlineReg" }
            };

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);

            var m       = OrganizationModel.Create(db, requestManager.CurrentUser);
            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager);
            var model   = FakeOrganizationUtils.GetFakeOnlineRegModel(FakeOrg.org.OrganizationId);

            m.OrgId = FakeOrg.org.OrganizationId;

            var resultSubmitQuestions      = controller.SubmitQuestions(0, model);
            var resultCompleteRegistration = controller.CompleteRegistration(model);

            var TestInvolvementList = ExportInvolvements.InvolvementList(m.QueryId);
            var pkg = typeof(EpplusResult).GetField("pkg", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(TestInvolvementList);

            using (ExcelPackage package = (ExcelPackage)pkg)
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];

                object[,] cellValues = (object[, ])worksheet.Cells.Value;
                List <string> ReportColumns = cellValues.Cast <object>().ToList().ConvertAll(x => Convert.ToString(x));
                var           FamilyId      = worksheet.Cells[1, 2].Value.ToString().Trim();

                ReportColumns.ShouldContain("FamilyId");
                FamilyId.ShouldBe("FamilyId");
            }
            FakeOrganizationUtils.DeleteOrg(FakeOrg.org.OrganizationId);
        }
Example #28
0
        public void AuthenticateMobileWithUsernameAndPasswordTest()
        {
            var username       = RandomString();
            var password       = RandomString();
            var user           = CreateUser(username, password);
            var requestManager = FakeRequestManager.Create();
            var db             = requestManager.CurrentDatabase;
            var idb            = requestManager.CurrentImageDatabase;

            requestManager.CurrentHttpContext.Request.Headers["Authorization"] = BasicAuthenticationString(username, password);
            var membershipProvider = new MockCMSMembershipProvider {
                ValidUser = true
            };
            var roleProvider = new MockCMSRoleProvider();

            CMSMembershipProvider.SetCurrentProvider(membershipProvider);
            CMSRoleProvider.SetCurrentProvider(roleProvider);

            var result = AccountModel.AuthenticateMobile(db, idb);

            result.ErrorMessage.ShouldBeNullOrEmpty();
            result.IsValid.ShouldBeTrue();
            result.Status.ShouldBe(UserValidationStatus.Success);
        }
Example #29
0
        public void TestOrgGroupsMethods()
        {
            var controller      = new OrgGroupsController(FakeRequestManager.Create());
            var routeDataValues = new Dictionary <string, string>();

            controller.ControllerContext = ControllerTestUtils.FakeControllerContext(controller, routeDataValues);
            var db         = DatabaseFixture.NewDbContext();
            var groupNames = new [] { "Test Group", "Another Name", "Yet Another" };

            var memtags = db.OrgMemMemTags.Where(nn => groupNames.Contains(nn.MemberTag.Name));

            db.OrgMemMemTags.DeleteAllOnSubmit(memtags);

            var groups = db.MemberTags.Where(nn => groupNames.Contains(nn.Name));

            db.MemberTags.DeleteAllOnSubmit(groups);

            var org = db.LoadOrganizationByName("App Testing Org");
            var m   = new OrgGroupsModel(db, org.OrganizationId);

            // MakeNewGroup
            m.GroupName = groupNames[0];
            var r = controller.MakeNewGroup(m);

            r.ShouldBeOfType <RedirectResult>();

            var g = db.MemberTags.SingleOrDefault(gg => gg.Name == groupNames[0]);

            g.ShouldNotBeNull();

            // MakeLeaderOfTargetGroup
            const int pid = 2; // David Carroll

            m.List.Add(pid);
            r = controller.MakeLeaderOfTargetGroup(m);
            r.ShouldBeOfType <ViewResult>();
            var mt = db.OrgMemMemTags.SingleOrDefault(gg => gg.OrgId == org.OrganizationId && gg.PeopleId == pid);

            mt.ShouldNotBeNull();

            // RemoveAsLeaderOfTargetGroup
            db = DatabaseFixture.NewDbContext();
            r  = controller.RemoveAsLeaderOfTargetGroup(m);
            r.ShouldBeOfType <ViewResult>();
            mt = db.OrgMemMemTags.SingleOrDefault(gg => gg.OrgId == org.OrganizationId && gg.PeopleId == pid);
            Assert.NotNull(mt);
            mt.IsLeader.ShouldBe(false);

            // RemoveSelectedFromTargetGroup
            r = controller.RemoveSelectedFromTargetGroup(m);
            r.ShouldBeOfType <ViewResult>();
            mt = db.OrgMemMemTags.SingleOrDefault(gg => gg.OrgId == org.OrganizationId && gg.PeopleId == pid);
            mt.ShouldBeNull();

            // RenameGroup
            m.GroupName = groupNames[1];
            r           = controller.RenameGroup(m);
            r.ShouldBeOfType <RedirectResult>();
            g = db.MemberTags.SingleOrDefault(gg => gg.OrgId == org.OrganizationId && gg.Name == groupNames[1]);
            Assert.NotNull(g);
            g.Name.ShouldBe(groupNames[1]);

            // EditGroup
            m.GroupName = groupNames[2];
            m.CheckInCapacityDefault = 10;
            r = controller.EditGroup(m);
            r.ShouldBeOfType <RedirectResult>();
            db = DatabaseFixture.NewDbContext();
            g  = db.MemberTags.SingleOrDefault(gg => gg.OrgId == org.OrganizationId && gg.Name == groupNames[2]);
            Assert.NotNull(g);
            g.Name.ShouldBe(groupNames[2]);
            g.CheckInCapacityDefault.ShouldBe(10);

            // DeleteGroup
            m.GroupName = groupNames[2];
            r           = controller.DeleteGroup(m);
            r.ShouldBeOfType <RedirectResult>();
            g = db.MemberTags.SingleOrDefault(gg => gg.OrgId == org.OrganizationId && gg.Name == groupNames[2]);
            g.ShouldBeNull();

            // todo: to complete the remaining methods
            // DeleteGroups
            // UpdateScore
            // UploadScores
            // SwapPlayers
            // CreateTeams
            // AssignSelectedToTargetGroup
            // ToggleCheckin
        }
Example #30
0
        public void Application_Report_Should_Have_Awnsers()
        {
            driver.Manage().Window.Maximize();
            var requestManager = FakeRequestManager.Create();

            var Orgconfig = new Organization()
            {
                OrganizationName   = "MockName",
                RegistrationTitle  = "MockTitle",
                Location           = "MockLocation",
                RegistrationTypeId = 1
            };

            var FakeOrg = FakeOrganizationUtils.MakeFakeOrganization(requestManager, Orgconfig);

            OrgId = FakeOrg.org.OrganizationId;

            var NewSpecialContent = SpecialContentUtils.CreateSpecialContent(0, "MembershipApp2017", null);

            SepacialContentId = NewSpecialContent.Id;
            SpecialContentUtils.UpdateSpecialContent(NewSpecialContent.Id, "MembershipApp2017", "MembershipApp2017", GetValidHtmlContent(), false, null, "", null);

            username = RandomString();
            password = RandomString();
            string roleName = "role_" + RandomString();
            var    user     = CreateUser(username, password, roles: new string[] { "Access", "Edit", "Admin", "Membership" });

            Login();

            /*
             *  Using WaitForElement() doesn't work in this test
             *  WaitForElement() only makes the duration of loading spinner longer
             *  and causes a "reference not set to an instance of an object" error in the Find() functions below
             */

            Open($"{rootUrl}Org/{OrgId}#tab-Registrations-tab");
            WaitForElementToDisappear(loadingUI, 30);

            ScrollTo(css: "#Questions-tab > .ajax");
            Find(css: "#Questions-tab > .ajax").Click();
            WaitForElementToDisappear(loadingUI);

            Find(css: ".col-sm-12 .edit").Click();
            WaitForElementToDisappear(loadingUI);

            Find(css: ".pull-right > .btn-success:nth-child(2)").Click();
            Wait(1);

            Find(css: ".AskText > a").Click();
            WaitForElement("#QuestionList > div.type-AskText");

            Find(css: ".modal-footer > .btn-primary:nth-child(1)").Click();
            var swal = ".sweet-alert.visible";

            WaitForElement(swal);

            Find(xpath: "//button[contains(.,'Yes, Add Questions')]").Click();
            WaitForElementToDisappear(".sweet-overlay");

            Find(css: "#QuestionList > div.type-AskText a.btn.btn-success").Click();
            WaitForElementToDisappear(loadingUI);

            var input = "div.ask-texts > div.well.movable > div.form-group > div.controls > input.form-control:nth-child(1)";

            WaitForElement(input);

            var InputAskItem = Find(css: input);

            InputAskItem.Clear();
            InputAskItem.SendKeys("Vow 1 reads: \"Do you acknowledge yourself to be a sinner in the sight of God, justly deserving his displeasure and without hope except through his sovereign mercy?\"");

            Find(css: ".ask-texts > .well").Click();
            WaitForElementToDisappear(loadingUI);

            ScrollTo(css: "#Questions-tab > .ajax");
            Find(xpath: "(//a[contains(text(),'Save')])[3]").Click();
            WaitForElementToDisappear(loadingUI);

            Open($"{rootUrl}OnlineReg/{OrgId}");

            var InputField = Find(id: "List0.Text0_0");

            InputField.Clear();
            InputField.SendKeys("ThisTextMustAppearInTests");
            Find(id: "otheredit").Click();

            WaitForElement("#submitit", 5);
            Find(id: "submitit").Click();
            Wait(2);

            Open($"{rootUrl}Reports/Application/{OrgId}/{user.PeopleId}/MembershipApp2017");
            WaitForElement("h2", 5);

            PageSource.ShouldContain("ThisTextMustAppearInTests");
        }