コード例 #1
0
        // trigger the scheduler to run through [Run Now] button of the UI
        private static HttpWebResponse TriggerScheduler(IDictionary <string, object> scheduleInfo, int moduleId)
        {
            var scheduleId           = (int)scheduleInfo["ScheduleId"];
            var scheduleTypeName     = (string)scheduleInfo["TypeFullName"];
            var scheduleFriendlyName = (string)scheduleInfo["FriendlyName"];
            var objectDependencies   = (string)scheduleInfo["ObjectDependencies"];

            var fieldsPrefix = string.Format("dnn$ctr{0}$EditSchedule", moduleId);
            var postData     = new Dictionary <string, object>
            {
                { fieldsPrefix + "$chkEnabled", "on" },
                { fieldsPrefix + "$txtServers", "" },
                { fieldsPrefix + "$ddlAttachToEvent", "None" },
                { fieldsPrefix + "$ddlRetainHistoryNum", "100" },
                { fieldsPrefix + "$ddlRetryTimeLapseMeasurement", "Minutes" },
                { fieldsPrefix + "$ddlTimeLapseMeasurement", "Hours" },
                { fieldsPrefix + "$startScheduleDatePicker$dateInput", "" },
                { fieldsPrefix + "$startScheduleDatePicker", "" },
                { fieldsPrefix + "$txtFriendlyName", scheduleFriendlyName },
                { fieldsPrefix + "$txtObjectDependencies", objectDependencies },
                { fieldsPrefix + "$txtRetryTimeLapse", "30" },
                { fieldsPrefix + "$txtTimeLapse", "1" },
                { fieldsPrefix + "$txtType", scheduleTypeName },
                { "__EVENTTARGET", fieldsPrefix + "$cmdRun" }, // button action; if missing, no click action is performed
                { "__EVENTARGUMENT", "" },
                { "__ASYNCPOST", "" },
                // all other inputs/fields are left as is
            };

            var relativeUrl = string.Format(
                "/Host/Schedule/ctl/Edit/mid/{0}/ScheduleId/{1}/portalid/{2}",
                moduleId, scheduleId, DnnDataHelper.PortalId);

            return(WebApiTestHelper.LoginHost().PostUserForm(relativeUrl, postData, null));
        }
コード例 #2
0
ファイル: AddPageTests.cs プロジェクト: Mariusz11711/DNN
        public void Add_Multi_Pages_For_Exisitng_Shoul_Return_Results()
        {
            var rnd         = new Random().Next(1000, 10000);
            var addPagesDto = new BulkPage
            {
                BulkPages     = "Page_" + rnd,
                ParentId      = -1,
                Keywords      = string.Empty,
                Tags          = string.Empty,
                IncludeInMenu = true,
                StartDate     = null,
                EndDate       = null,
            };

            Console.WriteLine(@"Add bulk pages request = {0}", JsonConvert.SerializeObject(addPagesDto));
            var connector = WebApiTestHelper.LoginHost();
            var response  = connector.PostJson(AddBulkPagesApi, addPagesDto).Content.ReadAsStringAsync().Result;
            var result    = JsonConvert.DeserializeObject <BulkPageResponseWrapper>(response);

            Console.WriteLine(@"Add bulk pages ersponse = {0}", response);
            Assert.AreEqual(0, result.Status);
            Assert.IsNull(result.Response.Pages.First().ErrorMessage);

            var response2 = connector.PostJson(VerigyBulkPagesApi, addPagesDto).Content.ReadAsStringAsync().Result;
            var result2   = JsonConvert.DeserializeObject <BulkPageResponseWrapper>(response2);

            Console.WriteLine(@"Verify bulk pages ersponse = {0}", response2);
            Assert.AreEqual(0, int.Parse(result2.Status.ToString()));
            Assert.IsNotNullOrEmpty(result2.Response.Pages.First().ErrorMessage);
        }
コード例 #3
0
        private IWebApiConnector CreateNewPage(int templateTabId, out int tabId)
        {
            var pagesExecuter = new PagesExecuter {
                Connector = WebApiTestHelper.LoginHost()
            };

            var pageSettingsBuilder = new PageSettingsBuilder();

            pageSettingsBuilder.WithPermission(new TabPermissionsBuilder().Build());

            if (templateTabId > 0)
            {
                pageSettingsBuilder.WithTemplateTabId(templateTabId);

                var modules = DatabaseHelper.ExecuteQuery <CopyModuleItem>($"SELECT ModuleId, ModuleTitle FROM {{objectQualifier}}TabModules WHERE TabId = {templateTabId}");
                pageSettingsBuilder.WithCopyModules(modules.ToList());
            }

            var pageDetail = pagesExecuter.SavePageDetails(pageSettingsBuilder.Build());

            Assert.NotNull(pageDetail.Page, "The system must create the page and return its details in the response");

            tabId = (int)pageDetail.Page.id;

            return(pagesExecuter.Connector);
        }
コード例 #4
0
        private static IWebApiConnector PrepareTest(out bool isEnglishEnabled, out dynamic languageSettings)
        {
            var connector = WebApiTestHelper.LoginHost();

            var response = connector.GetContent(GetLanguagesApi).Content.ReadAsStringAsync().Result;
            var result   = JsonConvert.DeserializeObject <dynamic>(response);

            isEnglishEnabled = result.Languages[0].Enabled;

            response         = connector.GetContent(GetLanguageSettingsApi).Content.ReadAsStringAsync().Result;
            result           = JsonConvert.DeserializeObject <dynamic>(response);
            languageSettings = result.Settings;

            if (string.Compare(languageSettings.SiteDefaultLanguage.Value, EnglishLanguageCode, StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                connector.PostJson(AddLanguageApi, new { Code = SpainishLanguageCode });
                UpdateLanguageSettings(connector, languageSettings, SpainishLanguageCode);
            }

            if (isEnglishEnabled)
            {
                EnableEnglish(connector, false);
            }

            return(connector);
        }
コード例 #5
0
        private void UpdateContentLocalization(bool enabled)
        {
            var connector = WebApiTestHelper.LoginHost();

            var postData = new
            {
                PortalId = this.PortalId,
                ContentLocalizationEnabled = false,
                SystemDefaultLanguage      = "English (United States)",
                SystemDefaultLanguageIcon  = "/images/Flags/en-US.gif",
                SiteDefaultLanguage        = "en-US",
                LanguageDisplayMode        = "NATIVE",
                EnableUrlLanguage          = true,
                EnableBrowserLanguage      = true,
                AllowUserUICulture         = false,
                CultureCode = "en-US",
                AllowContentLocalization = enabled,
            };

            connector.PostJson("API/PersonaBar/SiteSettings/UpdateLanguageSettings", postData);

            connector.PostJson(
                enabled
                    ? $"API/PersonaBar/Languages/EnableLocalizedContent?portalId={this.PortalId}&translatePages=false"
                    : $"API/PersonaBar/Languages/DisableLocalizedContent?portalId={this.PortalId}", new { });
        }
コード例 #6
0
        public void Using_Logged_Out_Cookie_Should_Be_Unauthorized()
        {
            var session = WebApiTestHelper.LoginHost();

            Assert.IsTrue(session.IsLoggedIn);

            // clone the cookies as after closing they will be removed from the container
            var cookies = new CookieContainer();

            cookies.Add(session.SessionCookies.GetCookies(session.Domain));

            // make sure the request succeeds when the user is logged in
            //var result1 = session.GetContent(GetPortaslApi, null, false); -- use same method to validate
            var result1 = SendDirectGetRequest(session.Domain, GetPortaslApi, session.Timeout, cookies);

            Assert.IsTrue(result1.IsSuccessStatusCode);
            Assert.AreEqual(HttpStatusCode.OK, result1.StatusCode);

            session.Logout();
            Assert.IsFalse(session.IsLoggedIn);

            // make sure the request fails when using the same cookies before logging out
            var result2 = SendDirectGetRequest(session.Domain, GetPortaslApi, session.Timeout, cookies);

            Assert.IsFalse(result2.IsSuccessStatusCode);
            Assert.AreEqual(HttpStatusCode.Unauthorized, result2.StatusCode);
        }
コード例 #7
0
ファイル: FriendsTests.cs プロジェクト: Mariusz11711/DNN
        private bool LanguageEnabled(int portalId, string secondLanguage)
        {
            var portalLanguages = CBO.FillDictionary <string, Locale>("CultureCode", DataProvider.Instance().GetLanguagesByPortal(portalId));

            if (!portalLanguages.ContainsKey(secondLanguage))
            {
                var connector = WebApiTestHelper.LoginHost();
                connector.PostJson($"API/PersonaBar/Extensions/ParseLanguagePackage?cultureCode={secondLanguage}", new { });
                connector.PostJson($"API/PersonaBar/Extensions/InstallAvailablePackage", new
                {
                    PackageType = "CoreLanguagePack",
                    FileName    = "installlanguage.resources",
                });

                var language = CBO.FillDictionary <string, Locale>("CultureCode", DataProvider.Instance().GetLanguages())[secondLanguage];
                connector.PostJson("API/PersonaBar/SiteSettings/UpdateLanguage", new
                {
                    PortalId   = PortalId,
                    LanguageId = language.LanguageId,
                    Code       = language.Code,
                    Enabled    = true,
                    IsDefault  = false,
                    Roles      = "Administrators",
                });
            }

            return(false);
        }
コード例 #8
0
        private IWebApiConnector AddModuleToPage(int tabId, string moduleName, out int moduleId)
        {
            var connector = WebApiTestHelper.LoginHost();

            var desktopModuleId = DatabaseHelper.ExecuteScalar <int>($"SELECT DesktopModuleId FROM {{objectQualifier}}DesktopModules WHERE ModuleName = '{moduleName}'");
            var postData        = new
            {
                Visibility        = 0,
                Position          = -1,
                Module            = desktopModuleId,
                Pane              = "ContentPane",
                AddExistingModule = false,
                CopyModule        = false,
                Sort              = -1
            };
            var headers = new Dictionary <string, string> {
                { "TabId", tabId.ToString() }
            };
            var response = connector.PostJson("API/internalservices/controlbar/AddModule", postData, headers)
                           .Content.ReadAsStringAsync().Result;

            moduleId = Json.Deserialize <dynamic>(response).TabModuleID;

            return(connector);
        }
コード例 #9
0
        public void Journal_Should_Only_Able_See_By_Himself_When_Set_Security_To_Private()
        {
            int    userId, fileId;
            string username;
            var    connector = this.PrepareNewUser(out userId, out username, out fileId);

            // POST JOURNAL
            var journalText = $"{username} Post";
            var postData    = new
            {
                text        = journalText,
                profileId   = userId,
                groupId     = -1,
                journalType = "file",
                securitySet = "P",
                itemData    = $"{{\"ImageUrl\":\"\",\"Url\":\"fileid={fileId}\"}}",
            };

            connector.PostJson("/API/Journal/Services/Create", postData, this.GetRequestHeaders());

            var response = connector.GetContent($"/Activity-Feed/userId/{userId}").Content.ReadAsStringAsync().Result;

            Assert.Greater(response.IndexOf(journalText), 0);

            var hostConnector = WebApiTestHelper.LoginHost();

            response = hostConnector.GetContent($"/Activity-Feed/userId/{userId}").Content.ReadAsStringAsync().Result;
            Assert.AreEqual(response.IndexOf(journalText), -1);
        }
コード例 #10
0
        private void UpdateSslSettings(bool sslEnabled)
        {
            var connector = WebApiTestHelper.LoginHost();

            var postData = new { SSLEnabled = sslEnabled, SSLEnforced = false, SSLURL = string.Empty, STDURL = string.Empty, SSLOffloadHeader = string.Empty };

            connector.PostJson("API/PersonaBar/Security/UpdateSslSettings", postData);
        }
コード例 #11
0
        private void AddUserToGroup(int groupId, int userId)
        {
            var connector = WebApiTestHelper.LoginHost();

            var url = "/API/PersonaBar/Roles/AddUserToRole?notifyUser=true&isOwner=false";

            connector.PostJson(url, new
            {
                userId = userId,
                roleId = groupId,
                isAdd  = true,
            });
        }
コード例 #12
0
        public void GetUsersAsHostWithVariousFiltersShoudlReturnExpectedResult(string actionName, int expectedTotal, string apiMethod)
        {
            // Arrange: all is done in TestFixtureSetUp()

            // Act
            var hostConnector = WebApiTestHelper.LoginHost();
            var response      = hostConnector.GetContent(apiMethod, null).Content.ReadAsStringAsync().Result;
            var result        = JsonConvert.DeserializeObject <dynamic>(response);

            // Assert
            var totalResults = int.Parse(result.TotalResults.ToString());

            Assert.AreEqual(expectedTotal, totalResults, $"Total results {totalResults} is incorrect for action [{actionName}]");
        }
コード例 #13
0
        public override void TestFixtureSetUp()
        {
            // clear all existing users except the HOST superuser
            DatabaseHelper.ExecuteNonQuery("DELETE FROM {objectQualifier}UserRelationships");
            DatabaseHelper.ExecuteNonQuery("DELETE FROM {objectQualifier}UserPortals");
            DatabaseHelper.ExecuteNonQuery("DELETE FROM {objectQualifier}Users WHERE UserID > 1");

            // create MaxUsers new users
            for (var i = 0; i < MaxUsers; i++)
            {
                int    userId, fileId;
                string userName;
                WebApiTestHelper.PrepareNewUser(out userId, out userName, out fileId);
                this._userIds[i]   = userId;
                this._userNames[i] = userName;
                Console.WriteLine(@"Created test users => id: {0}, username: {1}", userId, userName);
            }

            var hostConnector = WebApiTestHelper.LoginHost();
            var userIdx       = 0;

            // make first user as admin
            var makeAdminItem = new { RoleId = 0, UserId = this._userIds[userIdx] };
            var response      = hostConnector.PostJson(MakeAdminApi, makeAdminItem).Content.ReadAsStringAsync().Result;
            var result        = JsonConvert.DeserializeObject <dynamic>(response);

            Assert.AreEqual(this._userNames[userIdx], result.displayName.ToString());

            // Unauthorize the next 2 new users
            for (userIdx = 1; userIdx <= 2; userIdx++)
            {
                var unauthorizeLink = string.Format(UnauthorizeApi, this._userIds[userIdx]);
                response = hostConnector.PostJson(unauthorizeLink, string.Empty).Content.ReadAsStringAsync().Result;
                result   = JsonConvert.DeserializeObject <dynamic>(response);
                Assert.IsTrue(bool.Parse(result.Success.ToString()));
            }

            // soft delete the next new user
            var deleteLink = string.Format(DeleteApi, this._userIds[userIdx]);

            response = hostConnector.PostJson(deleteLink, string.Empty).Content.ReadAsStringAsync().Result;
            result   = JsonConvert.DeserializeObject <dynamic>(response);
            Assert.IsTrue(bool.Parse(result.Success.ToString()));
        }
コード例 #14
0
        private IWebApiConnector CreateNewSecurePage(out int tabId)
        {
            var pagesExecuter = new PagesExecuter {
                Connector = WebApiTestHelper.LoginHost()
            };

            var pageSettingsBuilder = new PageSettingsBuilder();

            pageSettingsBuilder.WithPermission(new TabPermissionsBuilder().Build());
            pageSettingsBuilder.WithSecure(true);

            var pageDetail = pagesExecuter.SavePageDetails(pageSettingsBuilder.Build());

            Assert.NotNull(pageDetail.Page, "The system must create the page and return its details in the response");

            tabId = (int)pageDetail.Page.id;

            return(pagesExecuter.Connector);
        }
コード例 #15
0
        private int CreateNewGroup(string roleName)
        {
            var connector = WebApiTestHelper.LoginHost();

            var url = "/API/PersonaBar/Roles/SaveRole?assignExistUsers=false";

            connector.PostJson(url, new
            {
                id           = -1,
                name         = roleName,
                groupId      = -1,
                description  = roleName,
                securityMode = 1,
                status       = 1,
                isPublic     = true,
                autoAssign   = false,
                isSystem     = false,
            });

            return(DatabaseHelper.ExecuteScalar <int>($"SELECT RoleId FROM {{objectQualifier}}Roles WHERE RoleName = '{roleName}' AND PortalId = {this.PortalId}"));
        }