/// <summary> /// Request the IP Address of a post. /// </summary> /// <param name="entryId"></param> /// <param name="reason"></param> /// <param name="context"></param> /// <param name="modId"></param> /// <returns></returns> public string RequestIPAddress(int entryId, string reason, int modId, IInputContext context) { using (IDnaDataReader reader = context.CreateDnaDataReader("getipaddressforthreadentry")) { reader.AddParameter("entryid", entryId); reader.AddParameter("userid", context.ViewingUser.UserID); reader.AddParameter("reason", reason); reader.AddParameter("modid", modId); reader.Execute(); if (reader.HasRows) { reader.Read(); if (reader.DoesFieldExist("DatePosted") && !reader.IsDBNull("DatePosted")) { return string.Format("{0}\r\nPosted: {1}", reader[0].ToString(), reader["DatePosted"]); } else { return reader[0].ToString(); } } } return ""; }
void SetupArticles(IInputContext context) { int entryID = 0; int h2g2ID = 0; //create a dummy article using (IDnaDataReader reader = context.CreateDnaDataReader("createguideentry")) { reader.AddParameter("subject", "TEST ARTICLE"); reader.AddParameter("bodytext", "TEST ARTICLE"); reader.AddParameter("extrainfo", "<EXTRAINFO>TEST ARTICLE</EXTRAINFO>"); reader.AddParameter("editor", 6); reader.AddParameter("typeid", 3001); reader.AddParameter("status", 3); reader.Execute(); Assert.IsTrue(reader.Read(), "Article not created"); entryID = reader.GetInt32NullAsZero("entryid"); h2g2ID = reader.GetInt32NullAsZero("h2g2id"); Assert.IsTrue(entryID != 0, "Article not created"); } int recommendationID = 0; //recommnend article... using (IDnaDataReader reader = context.CreateDnaDataReader("storescoutrecommendation")) { reader.AddParameter("entryid", entryID); reader.AddParameter("@comments", "scout comment"); reader.AddParameter("scoutid", 6); reader.Execute(); Assert.IsTrue(reader.Read(), "Recommendation not created"); recommendationID = reader.GetInt32NullAsZero("RecommendationID"); Assert.IsTrue(recommendationID != 0, "Recommendation not created"); } }
void CreateAndRecommendAndAllocateArticle(IInputContext context) { using (IDnaDataReader reader = context.CreateDnaDataReader("updateuser")) { reader.AddParameter("userid", 6); reader.AddParameter("email", "*****@*****.**"); reader.Execute(); } int entryID = 0; int h2g2ID = 0; //create a dummy article using (IDnaDataReader reader = context.CreateDnaDataReader("createguideentry")) { reader.AddParameter("subject", "TEST ARTICLE"); reader.AddParameter("bodytext", "TEST ARTICLE"); reader.AddParameter("extrainfo", "<EXTRAINFO>TEST ARTICLE</EXTRAINFO>"); reader.AddParameter("editor", 6); reader.AddParameter("typeid", 3001); reader.AddParameter("status", 3); reader.Execute(); Assert.IsTrue(reader.Read(), "Article not created"); entryID = reader.GetInt32NullAsZero("entryid"); h2g2ID = reader.GetInt32NullAsZero("h2g2id"); Assert.IsTrue(entryID != 0, "Article not created"); } int recommendationID = 0; //recommnend article... using (IDnaDataReader reader = context.CreateDnaDataReader("storescoutrecommendation")) { reader.AddParameter("entryid", entryID); reader.AddParameter("@comments", "scout comment"); reader.AddParameter("scoutid", 6); reader.Execute(); Assert.IsTrue(reader.Read(), "Recommendation not created"); recommendationID = reader.GetInt32NullAsZero("RecommendationID"); Assert.IsTrue(recommendationID != 0, "Recommendation not created"); } int newH2G2ID = 0; //accept the recommendation using (IDnaDataReader reader = context.CreateDnaDataReader("acceptscoutrecommendation")) { reader.AddParameter("recommendationid", recommendationID); reader.AddParameter("comments", "acceptor comment"); reader.AddParameter("acceptorid", 6); reader.Execute(); Assert.IsTrue(reader.Read(), "Recommendation not accepted"); Assert.IsTrue(reader.GetTinyIntAsInt("Success") == 1, "Recommendation not accepted"); newH2G2ID = reader.GetInt32NullAsZero("h2g2ID"); Assert.IsTrue(newH2G2ID != 0, "Recommendation not created"); } //allocate the recommendation using (IDnaDataReader reader = context.CreateDnaDataReader("AllocateEntriesToSub")) { reader.AddParameter("subid", 6); reader.AddParameter("comments", "allocator comment"); reader.AddParameter("AllocatorID", 6); reader.AddParameter("id0", newH2G2ID / 10); reader.Execute(); Assert.IsTrue(reader.Read(), "Allocation not accepted"); Assert.IsTrue(reader.GetInt32NullAsZero("EntryID") == newH2G2ID / 10, "Allocation not accepted"); } }
/// <summary> /// Creates a new premod posting post in the mod queue /// </summary> /// <param name="context">The context for the request</param> /// <param name="forumid">The forumid that was posted to</param> /// <param name="subject">The subject used for the post</param> /// <param name="modID">The modid for the new moderation item</param> private static void SetupPreModPost(IInputContext context, out int forumid, out string subject, out int modID) { // Now create a new user to play with DnaTestURLRequest request = new DnaTestURLRequest("haveyoursay"); request.SetCurrentUserNormal(); int userID = request.CurrentUserID; using (IDnaDataReader reader = context.CreateDnaDataReader("FindUserFromID")) { reader.AddParameter("UserID",userID); reader.Execute(); Assert.IsTrue(reader.HasRows, "No rows came back from the FindUserFromID storedprocedure"); Assert.IsTrue(reader.Read(), "Failed to read the first set of results from the FindUserFromID storedprocedure"); Assert.AreEqual(userID, reader.GetInt32("UserID"), "The userid should come back as normal userid, as that's the id we wanted to get!"); Assert.AreEqual("DotNetNormalUser", reader.GetString("UserName"), "The user name has been changed in the small guide."); Assert.AreEqual(1, reader.GetInt32("Status"), "The status of this user should be 1, normal user"); Assert.IsFalse(reader.GetBoolean("BannedFromComplaints"), "The use should not be banned from complaints at this stage"); } // Find a forum to post to forumid = 0; using (IDnaDataReader reader = context.CreateDnaDataReader("")) { reader.ExecuteDEBUGONLY("select top 1 * from forums where siteid = 1 and title not in ('','User-journal','frontpage') and canread=1 order by forumid desc"); if (reader.Read() && reader.HasRows) { forumid = reader.GetInt32("ForumID"); } Assert.AreNotEqual(0, forumid, "Failed to find a good forum to test against"); } // Set the site to be in premodposting mode using (IDnaDataReader reader = context.CreateDnaDataReader("SetSiteOption")) { reader.AddParameter("SiteID", 1); reader.AddParameter("Section", "Moderation"); reader.AddParameter("Name", "ProcessPreMod"); reader.AddParameter("Value", "1"); reader.Execute(); } // Now post to the forum subject = "Testing move thread details"; string content = "Testing move thread details with premod posting"; using (IDnaDataReader reader = context.CreateDnaDataReader("PostToForum")) { reader.AddParameter("userid", userID); reader.AddParameter("forumid", forumid); reader.AddParameter("inreplyto", DBNull.Value); reader.AddParameter("threadid", 0); reader.AddParameter("subject", subject); reader.AddParameter("content", content); reader.AddParameter("poststyle", 2); reader.AddParameter("hash", Guid.NewGuid().ToString()); reader.AddParameter("keywords", ""); reader.AddParameter("forcepremoderation", 1); reader.Execute(); if (!reader.Read() || !reader.HasRows) { Assert.Fail("Failed to create a new post for the test."); } Assert.IsTrue(reader.GetInt32("PreModPostingModId") > 0, "The last post did not go in as a premod posting!"); } // check to make sure the thread is in the mod table modID = 0; using (IDnaDataReader reader = context.CreateDnaDataReader("")) { reader.ExecuteDEBUGONLY("Select top 1 pm.modid,pm.forumid,pm.subject,pm.body,tm.IsPreModPosting from threadmod tm inner join premodpostings pm on pm.modid = tm.modid order by modid desc"); Assert.IsTrue(reader.Read() && reader.HasRows, "Failed to get the moderated post"); Assert.AreEqual(subject, reader.GetString("subject"), "We didn't find the moderated post"); Assert.AreEqual(content, reader.GetString("body"), "We didn't find the moderated post"); Assert.AreEqual(forumid, reader.GetInt32("forumid"), "We didn't find the moderated post"); Assert.AreEqual(1, reader.GetTinyIntAsInt("IsPreModPosting"), "The post went in, but not as a premod posting"); modID = reader.GetInt32("ModID"); Assert.IsTrue(modID > 0, "The moderation id is 0!"); } }
private static int RegisterTestComplaint(IInputContext context, int postId, int userId, int modId, string email, string complaintText, string IpAddress, Guid BBCUid) { var code = Guid.Empty; using (IDnaDataReader dataReader = context.CreateDnaDataReader("registerpostingcomplaint")) { dataReader.AddParameter("complainantid", userId); dataReader.AddParameter("correspondenceemail", email); dataReader.AddParameter("postid", postId); dataReader.AddParameter("complainttext", complaintText); dataReader.AddParameter("ipaddress", IpAddress); dataReader.AddParameter("bbcuid", BBCUid); //HashValue Guid hash = DnaHasher.GenerateHash(Convert.ToString(userId) + ":" + email + ":" + Convert.ToString(postId) + ":" + complaintText); dataReader.AddParameter("hash", hash); dataReader.Execute(); // Send Email if (dataReader.Read()) { if(dataReader.DoesFieldExist("modid")) { modId = dataReader.GetInt32NullAsZero("modId"); } if (dataReader.DoesFieldExist("verificationUid")) { code = dataReader.GetGuid("verificationUid"); } } } if (code != Guid.Empty) {//submit verification code using (IDnaDataReader dataReader = context.CreateDnaDataReader("registerverifiedcomplaint")) { dataReader.AddParameter("verificationcode", code); dataReader.Execute(); if (dataReader.HasRows && dataReader.Read()) { modId = dataReader.GetInt32NullAsZero("modid"); } } } Assert.AreNotEqual(0, modId); return modId; }
/// <summary> /// Helper method for creating a new user in the database /// </summary> /// <param name="context">The context in which to create the data reader</param> /// <returns>The id of the new user</returns> private static int CreateUserInDatabase(IInputContext context) { int ssoUserID = _currentTestUserID++; int userID = 0; using (IDnaDataReader reader = context.CreateDnaDataReader("createnewuserfromssoid")) { reader.AddParameter("ssouserid", ssoUserID); reader.AddParameter("UserName", "TestUser" + ssoUserID.ToString()); reader.AddParameter("Email", "[email protected]"); reader.AddParameter("SiteID", 1); reader.AddParameter("FirstNames", "MR"); reader.AddParameter("LastName", "TESTER"); reader.Execute(); // Check to make sure that we got something back Assert.IsTrue(reader.HasRows, "Creating a new user returned no data!"); Assert.IsTrue(reader.Read(), "Failed to read the first row of data!"); // Get the new user id userID = reader.GetInt32("UserID"); // Now check the values comming back from the database Assert.AreEqual("TestUser" + ssoUserID.ToString(), reader.GetString("LoginName"), "Users login name does not match the one entered"); Assert.AreEqual("TestUser" + ssoUserID.ToString(), reader.GetString("UserName"), "Users name does not match the one entered"); Assert.IsTrue(String.IsNullOrEmpty(reader.GetStringNullAsEmpty("FirstNames")), "Users first name should be null"); Assert.IsTrue(String.IsNullOrEmpty(reader.GetStringNullAsEmpty("LastName")), "The users last name should be null"); Assert.AreEqual("[email protected]", reader.GetString("Email"), "The users email does not match the one entered"); // Here are the important ones for this test Assert.IsTrue(reader.GetDateTime("DateJoined") > DateTime.Now.AddMinutes(-1), "The users date joined value is not with in the tolarences of this test!"); Assert.AreEqual(0, reader.GetTinyIntAsInt("AutoSinBin"), "The user shouldn't be in the auto sin bin!"); Assert.AreEqual(1, reader.GetTinyIntAsInt("Status"), "The user status is not correct"); Assert.AreEqual(0, reader.GetTinyIntAsInt("PrefStatus"), "The user pref status is not correct"); } return userID; }
/// <summary> /// Helper method that checks the users current prefstatus against an expected value /// </summary> /// <param name="context">The context in which to create the data reader</param> /// <param name="userID">The id of the user you want to check the status for</param> /// <param name="expectedPrefStatus">The expected value for the users current pref status</param> private static void CheckUsersPrefStatus(IInputContext context, int userID, int expectedPrefStatus) { using (IDnaDataReader reader = context.CreateDnaDataReader("getmemberprefstatus")) { reader.AddParameter("UserID", userID); reader.AddParameter("SiteID", 1); reader.AddIntOutputParameter("PrefStatus"); reader.Execute(); // Check to make sure that we got something back int prefStatus = -1; reader.TryGetIntOutputParameter("PrefStatus", out prefStatus); Assert.AreEqual(expectedPrefStatus, prefStatus, "The users pref status should be " + expectedPrefStatus.ToString()); } }
/// <summary> /// Helper method that checks to see if the us4er belongs to a given group /// </summary> /// <param name="context">The context in which to create the data reader</param> /// <param name="userID">The id of the user you want to check the groups for</param> /// <param name="groupToCheck">The group that you want to see if the user is a member of</param> /// <param name="expectedResult">The exspected result from the query</param> private static void CheckUserBelongsToGroup(IInputContext context, int userID, string groupToCheck, bool expectedResult) { using (IDnaDataReader reader = context.CreateDnaDataReader("isusermemberofgroup")) { reader.AddParameter("UserID", userID); reader.AddParameter("SiteID", 1); reader.AddParameter("GroupName", groupToCheck); reader.AddIntOutputParameter("Exists"); reader.Execute(); // Check to make sure that we got something back int isMember = -1; reader.TryGetIntOutputParameter("Exists", out isMember); if (expectedResult) { Assert.IsTrue(isMember > 0, "The user should belong to the group - " + groupToCheck); } else { Assert.IsTrue(isMember == 0, "The user should not belong to the group - " + groupToCheck); } } }
/// <summary> /// Helper method for setting the users pref status via the stored procedures /// </summary> /// <param name="context">The context in which to create the data reader</param> /// <param name="userID">The id of the user you want to update the status for</param> /// <param name="prefStatus">The new status for the user. /// 0 = normal /// 1 = premod /// 2 = postmod /// 3 = for review /// 4 = banned / restricted</param> private static void SetUsersModerationStatus(IInputContext context, int userID, int prefStatus) { using (IDnaDataReader reader = context.CreateDnaDataReader("updatetrackedmemberlist")) { reader.AddParameter("UserIDs", userID.ToString()); reader.AddParameter("SiteIDs", 1); reader.AddParameter("PrefStatus", prefStatus); reader.AddParameter("PrefStatusDuration", 0); reader.Execute(); } }
private int CreateAComment(int normalUserid, IInputContext inputContext, string commenttext, string hash) { int thisPostId = 0; using (IDnaDataReader reader = inputContext.CreateDnaDataReader("createcomment")) { //exec createcomment //@uniqueid=N'comments1_shtml123456', //@userid=6, //@content=N'blardy blah blah', //@hash='B0E9D576-2371-F9BF-5BF8-C6203E80EB14', //@forcemoderation=0, //@ignoremoderation=1, //@isnotable=1 reader.AddParameter("@uniqueid", _uid) .AddParameter("@userid", normalUserid) .AddParameter("@siteid", 54) .AddParameter("@content", commenttext) .AddParameter("@hash", hash) .AddParameter("@forcemoderation", "0") .AddParameter("@ignoremoderation", 0) .AddParameter("@isnotable", 0) .AddParameter("@poststyle", 2) .Execute(); Assert.IsTrue(reader.Read(), "Checking that createcomment returns a row"); thisPostId = reader.GetInt32("postid"); } return thisPostId; }
private static void ModeratePosts(int moderatorUserId, int normalUserid, IInputContext inputContext) { using (IDnaDataReader reader = inputContext.CreateDnaDataReader("getmoderationposts")) { reader.AddParameter("@userid", moderatorUserId) .AddParameter("@alerts", 0) .AddParameter("@lockeditems", 0) .AddParameter("@issuperuser", 0) .AddParameter("@modclassid", 5) .AddParameter("@show", 10) .AddParameter("@fastmod", 0); reader.Execute(); Assert.IsTrue(reader.Read(), "Expecting at least one post to moderate"); do { int forumId = reader.GetInt32NullAsZero("ForumID"); int threadId = reader.GetInt32NullAsZero("ThreadID"); int postId = reader.GetInt32NullAsZero("EntryID"); int modID = reader.GetInt32NullAsZero("ModID"); using (IDnaDataReader subreader = inputContext.CreateDnaDataReader("moderatepost")) { subreader.AddParameter("@forumid", forumId) .AddParameter("@threadid", threadId) .AddParameter("@postid", postId) .AddParameter("@modid", modID) .AddParameter("@status", 3) .AddParameter("@notes", "") .AddParameter("@referto", 0) .AddParameter("@referredby", moderatorUserId) .AddParameter("@moderationstatus", 0); subreader.Execute(); Assert.IsTrue(subreader.Read(), "moderatepost expects a single row"); Assert.IsTrue(subreader.GetInt32NullAsZero("PostID") > 0, "PostID should be non-zero after processing"); Assert.AreEqual(subreader.GetInt32NullAsZero("AuthorID"), normalUserid, "Testing that posting user IDs match"); Assert.IsFalse(subreader.Read(), "Only expecting a single row of data"); } } while (reader.Read()); } }
private void ModeratePostUpdateEntry(int moderatorUserId, IInputContext inputContext) { int processedThreadID=0; using (IDnaDataReader reader = inputContext.CreateDnaDataReader("getmoderationposts")) { reader.AddParameter("@userid", moderatorUserId); reader.Execute(); Assert.IsTrue(reader.Read(), "Expecting at least one post to moderate"); do { int forumId = reader.GetInt32NullAsZero("ForumID"); int threadId = reader.GetInt32NullAsZero("ThreadID"); int postId = reader.GetInt32NullAsZero("EntryID"); int modID = reader.GetInt32NullAsZero("ModID"); using (IDnaDataReader subreader = inputContext.CreateDnaDataReader("moderatepost")) { subreader.AddParameter("@forumid", forumId) .AddParameter("@threadid", threadId) .AddParameter("@postid", postId) .AddParameter("@modid", modID) .AddParameter("@status", 3) .AddParameter("@notes", "") .AddParameter("@referto", 0) .AddParameter("@referredby", moderatorUserId) .AddParameter("@moderationstatus", 0); subreader.Execute(); Assert.IsTrue(subreader.Read(), "moderatepost expects a single row"); Assert.IsTrue(subreader.GetInt32NullAsZero("PostID") > 0, "PostID should be non-zero after processing"); processedThreadID = subreader.GetInt32NullAsZero("ThreadID"); int postid = subreader.GetInt32NullAsZero("PostID"); } } while (reader.Read()); } string updateEntry = "UPDATE ThreadMod SET DateQueued='20050101' WHERE ThreadID = " + processedThreadID.ToString(); //string server = GetServerName(); using (IDnaDataReader reader = inputContext.CreateDnaDataReader("")) { reader.ExecuteDEBUGONLY(updateEntry); } }
/// <summary> /// Helper method for creating a new user in the database /// </summary> /// <param name="context">The context in which to create the data reader</param> /// <param name="autoSinBinExpectedValue">The expected value for the autosinbin when checked</param> /// <returns>The id of the new user</returns> private static int CreateUserInDatabase(IInputContext context, int autoSinBinExpectedValue) { int userID = Int32.MaxValue - 1000000; using (IDnaDataReader reader = context.CreateDnaDataReader("createnewuserfromssoid")) { reader.AddParameter("ssouserid", userID); reader.AddParameter("UserName", "TestUser"); reader.AddParameter("Email", "[email protected]"); reader.AddParameter("SiteID", 1); reader.AddParameter("FirstNames", "MR"); reader.AddParameter("LastName", "TESTER"); reader.Execute(); // Check to make sure that we got something back Assert.IsTrue(reader.HasRows, "Creating a new user returned no data!"); Assert.IsTrue(reader.Read(), "Failed to read the first row of data!"); // Now check the values comming back from the database userID = reader.GetInt32("UserID"); Assert.AreNotEqual(0, reader.GetInt32("UserID"), "UserId does not match the one entered"); Assert.AreEqual("TestUser", reader.GetString("LoginName"), "Users login name does not match the one entered"); Assert.AreEqual("TestUser", reader.GetString("UserName"), "Users name does not match the one entered"); //************************************************************************************** // SPF 3/12/09 Due to the removal of First Names Last Name due to legal issues, // the First Names and Last Name will be NULL //************************************************************************************** Assert.IsTrue(reader.IsDBNull("FirstNames"), "Users first name is not NULL"); Assert.IsTrue(reader.IsDBNull("LastName"), "The users last name is not NULL"); // ************************************************************************************* Assert.AreEqual("[email protected]", reader.GetString("Email"), "The users email does not match the one entered"); // Here are the important ones for this test Assert.IsTrue(reader.GetDateTime("DateJoined") > DateTime.Now.AddMinutes(-1), "The users date joined value is not with in the tolarences of this test!"); Assert.AreEqual(autoSinBinExpectedValue, reader.GetTinyIntAsInt("AutoSinBin"), "The user should be in the auto sin bin!"); Assert.AreEqual(1, reader.GetTinyIntAsInt("Status"), "The user status is not correct"); Assert.AreEqual(0, reader.GetTinyIntAsInt("PrefStatus"), "The user pref status is not correct"); } return userID; }