comments cleanup
All checks were successful
ci/woodpecker/pr/cargo-checks Pipeline was successful

This commit is contained in:
ModulatingForce 2024-03-22 21:06:15 -04:00
parent 06e182df55
commit 72ebd5193c
3 changed files with 25 additions and 478 deletions

View file

@ -246,7 +246,7 @@ impl BotInstance {
/* /*
BotCommand handling - BotCommand handling -
- [x] Checks if the input message is a prefix with command name or alias - [x] Checks if the input message is a prefix with command name or alias
- [ ] Validate User can run based on identityModule(From_Bot)::can_user_run( - [x] Validate User can run based on identityModule(From_Bot)::can_user_run(
_usr:String, _usr:String,
_channelname:ChType, _channelname:ChType,
_chat_badge:ChatBadge, _chat_badge:ChatBadge,
@ -431,40 +431,11 @@ impl BotInstance {
Some(msg), Some(msg),
); );
// const OF_CMD_CHANNEL:ChType = Channel(String::new());
// let elevated_access = {
// let mut idlock = id.write().await;
// let (permissability, _) = idlock
// .can_user_run_prvmsg(msg,
// vec![
// identity::UserRole::BotAdmin,
// identity::UserRole::Mod(OF_CMD_CHANNEL),
// identity::UserRole::SupMod(OF_CMD_CHANNEL),
// identity::UserRole::Broadcaster,
// ])
// .await;
// permissability
// };
// if let Permissible::Allow = elevated_access {
// let botlock = bot.read().await;
// let outstr =
// format!("sadg Module is disabled : {:?}",a);
// botlock.botmgrs.chat.say_in_reply_to(msg, outstr).await;
// }
//return;
} else { } else {
let a = Arc::clone(&bot); let a = Arc::clone(&bot);
l.execute(a, msg.clone()).await; l.execute(a, msg.clone()).await;
} }
// let a = Arc::clone(&bot);
// l.execute(a, msg.clone()).await;
} }
_ => (), _ => (),

View file

@ -22,10 +22,8 @@ Example
use core::panic; use core::panic;
use std::collections::HashMap; use std::collections::HashMap;
// use std::error::Error;
use std::sync::Arc; use std::sync::Arc;
// use futures::stream::iter;
use twitch_irc::message::PrivmsgMessage; use twitch_irc::message::PrivmsgMessage;
use casual_logger::Log; use casual_logger::Log;
@ -48,8 +46,6 @@ use std::hash::{Hash, Hasher};
use super::identity::ChatBadge; use super::identity::ChatBadge;
// use super::identity::ChangeResult;
pub async fn init(mgr: Arc<ModulesManager>) { pub async fn init(mgr: Arc<ModulesManager>) {
@ -92,7 +88,6 @@ pub async fn init(mgr: Arc<ModulesManager>) {
1. Parse out Message Arguments 1. Parse out Message Arguments
exec_enable() exec_enable()
2. Get Special Roles of CmdSender 2. Get Special Roles of CmdSender
@ -415,12 +410,6 @@ pub async fn init(mgr: Arc<ModulesManager>) {
// #[derive(Debug, PartialEq, Eq, Hash, Clone)]
// #[derive(Debug, Hash, Clone)]
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum ModType { pub enum ModType {
BotModule(String), BotModule(String),
@ -578,9 +567,6 @@ pub struct Routine {}
type StatusdbEntry = (ModGroup, Vec<StatusType>); type StatusdbEntry = (ModGroup, Vec<StatusType>);
pub struct ModulesManager { pub struct ModulesManager {
// statusdb: Arc<RwLock<HashMap<ModType, Vec<ModStatusType>>>>,
// statusdb: Arc<RwLock<HashMap<(ModType,ModGroup), Vec<StatusType>>>>,
// statusdb: Arc<RwLock<HashMap<ModType, (ModGroup, Vec<StatusType>)>>>,
statusdb: Arc<RwLock<HashMap<ModType, StatusdbEntry>>>, statusdb: Arc<RwLock<HashMap<ModType, StatusdbEntry>>>,
pub botactions: Arc<RwLock<HashMap<ModType, Vec<BotAction>>>>, pub botactions: Arc<RwLock<HashMap<ModType, Vec<BotAction>>>>,
} }
@ -668,19 +654,6 @@ impl ModulesManager {
StatusType::Enabled(StatusLvl::Instance) // This forces core to be validated as Enabled, even if undesired scenario of missing StatusLvl::Instance or empty vectors StatusType::Enabled(StatusLvl::Instance) // This forces core to be validated as Enabled, even if undesired scenario of missing StatusLvl::Instance or empty vectors
}, },
ModGroup::Custom => { ModGroup::Custom => {
// // remove all instance level pattern for the module
// while let Some(index) = statusvector
// .iter()
// .position(|x| (*x == StatusType::Enabled(StatusLvl::Instance)) || (*x == StatusType::Disabled(StatusLvl::Instance))) {
// statusvector.remove(index);
// }
// statusvector.push(StatusType::Disabled(StatusLvl::Instance));
// (
// StatusType::Disabled(StatusLvl::Instance),
// ChangeResult::Success("Set Disabled at Instance".to_string())
// )
/* /*
@ -737,29 +710,12 @@ impl ModulesManager {
//StatusType::Enabled(StatusLvl::Instance) //StatusType::Enabled(StatusLvl::Instance)
} }
// pub fn togglestatus(&self, _: ModType, _: ChType) -> StatusType {
// // enables or disables based on current status
// StatusType::Enabled(StatusLvl::Instance)
// }
// pub fn setstatus(&self, _: ModType, _: StatusType) -> Result<&str, Box<dyn Error>> {
// // sets the status based given ModSatusType
// // e.g., b.setstatus(BodModule("GambaCore"), Enabled(Channel("modulatingforce"))).expect("ERROR")
// Ok("")
// }
/*
exec_enable(self,requestor,requestor_badge,trg_module,Channel) -> ChangeResult
*/
pub async fn exec_enable( pub async fn exec_enable(
&self, &self,
requestor: String, requestor: String,
requestor_badge: Option<ChatBadge>, requestor_badge: Option<ChatBadge>,
trg_module: ModType, trg_module: ModType,
// channel: Option<ChType>,
trg_level: StatusLvl, trg_level: StatusLvl,
// bot: BotAR,
id: Arc<RwLock<IdentityManager>>, id: Arc<RwLock<IdentityManager>>,
) -> ChangeResult ) -> ChangeResult
{ {
@ -784,7 +740,7 @@ impl ModulesManager {
/* /*
[ ] 1. If CmdSender is BotAdmin but not (Mod,SupMod,Broadcaster) [x] 1. If CmdSender is BotAdmin but not (Mod,SupMod,Broadcaster)
1. can_user_run for cmdreqRoles including BotAdmin & not can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster) 1. can_user_run for cmdreqRoles including BotAdmin & not can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster)
1a. , and is -i (to instance) , return a Success 1a. , and is -i (to instance) , return a Success
1b. , and is not -i (to instance) , return a Failure recommending BotAdmin promote themselves first 1b. , and is not -i (to instance) , return a Failure recommending BotAdmin promote themselves first
@ -795,19 +751,14 @@ impl ModulesManager {
// [x] Validate in trg_module first // [x] Validate in trg_module first
// let botlock = bot.read().await;
// let modmgr = Arc::clone(&botlock.botmodules);
let modlist = self.moduleslist().await; let modlist = self.moduleslist().await;
let rslt = modlist.get(&trg_module); let rslt = modlist.get(&trg_module);
// if let None = rslt {
if rslt.is_none() { if rslt.is_none() {
return ChangeResult::Failed("Module doesn't exist".to_string()); return ChangeResult::Failed("Module doesn't exist".to_string());
} }
// let botlock = bot.read().await;
// let id = botlock.get_identity();
let mut idlock = id.write().await; let mut idlock = id.write().await;
// if trg_level = StatusLvl::Instance , the temp_chnl = the broadcaster's or the chatter's // if trg_level = StatusLvl::Instance , the temp_chnl = the broadcaster's or the chatter's
@ -833,16 +784,6 @@ impl ModulesManager {
]).await; ]).await;
// botlog::debug(
// &format!("FAILURE BEFORE Let statements involves :
// admin_level_access : {:?} ; chnl_elevated_access : {:?}",
// admin_level_access , chnl_elevated_access),
// Some("botmodules.rs > exec_enable()".to_string()),
// None,
// );
if let Permissible::Allow = admin_level_access { if let Permissible::Allow = admin_level_access {
if let Permissible::Block = chnl_elevated_access { if let Permissible::Block = chnl_elevated_access {
@ -868,7 +809,7 @@ impl ModulesManager {
/* /*
[ ] 2. If CmdSender not a BotAdmin but is (Mod,SupMod,Broadcaster) [x] 2. If CmdSender not a BotAdmin but is (Mod,SupMod,Broadcaster)
2. not can_user_run for cmdreqRoles including BotAdmin & can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster) 2. not can_user_run for cmdreqRoles including BotAdmin & can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster)
2a. , and is -i (to instance) , return a Failure they are not allowed 2a. , and is -i (to instance) , return a Failure they are not allowed
2b. , and is not -i (to instance) , return a Success 2b. , and is not -i (to instance) , return a Success
@ -892,7 +833,7 @@ impl ModulesManager {
/* /*
[ ] 3. If CmdSender is (Mod,SupMod,Broadcaster) and a BotAdmin [x] 3. If CmdSender is (Mod,SupMod,Broadcaster) and a BotAdmin
3. can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster) & can_user_run for cmdreqRoles including BotAdmin 3. can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster) & can_user_run for cmdreqRoles including BotAdmin
3a. , and is not -i (to instance) , return a Success 3a. , and is not -i (to instance) , return a Success
3b. , and is -i (to instance) , return a Success 3b. , and is -i (to instance) , return a Success
@ -937,64 +878,11 @@ impl ModulesManager {
// ======================= // =======================
// ======================= // =======================
// ======================= // =======================
// /*
// 2. Get Special Roles of CmdSender
// 3. If CmdSender is BotAdmin but not (Mod,SupMod,Broadcaster)
// 3a. , and is not -i (to instance) , return a Failure recommending BotAdmin promote themselves first
// 3b. , and is -i (to instance) , return a Success
// 4. If CmdSender not a BotAdmin but is (Mod,SupMod,Broadcaster)
// 4a. , and is not -i (to instance) , return a Success
// 4b. , and is -i (to instance) , return a Failure they are not allowed
// 5. If CmdSender is (Mod,SupMod,Broadcaster) and a BotAdmin
// 5a. , and is not -i (to instance) , return a Success
// 5b. , and is -i (to instance) , return a Success
// */
// // [ ] 2. Get Special Roles of CmdSender
// let botlock = bot.read().await;
// let id = botlock.get_identity();
// let idlock = id.read().await;
// let trgchnl = {
// match trg_level {
// StatusLvl::Instance => None,
// StatusLvl::Ch(a) => Some(a),
// }
// };
// let requestor_roles = idlock
// .getspecialuserroles(
// requestor.to_lowercase(),
// trgchnl,
// )
// .await;
// /*
// [ ] 3. If CmdSender is BotAdmin but not (Mod,SupMod,Broadcaster)
// 3a. , and is not -i (to instance) , return a Failure recommending BotAdmin promote themselves first
// 3b. , and is -i (to instance) , return a Success
// */
// if requestor_roles.contains(&identity::UserRole::BotAdmin)
// && !requestor_roles.contains(&identity::UserRole::Broadcaster)
// && !requestor_roles.contains(&identity::UserRole::Mod(trgchnl))
// {
// }
botlog::debug( botlog::debug(
&format!("FAILURE involves : &format!("FAILURE involves :
@ -1016,10 +904,8 @@ impl ModulesManager {
requestor: String, requestor: String,
requestor_badge: Option<ChatBadge>, requestor_badge: Option<ChatBadge>,
trg_module: ModType, trg_module: ModType,
// channel: Option<ChType>,
trg_level: StatusLvl, trg_level: StatusLvl,
force: bool, force: bool,
// bot: BotAR,
id: Arc<RwLock<IdentityManager>>, id: Arc<RwLock<IdentityManager>>,
) -> ChangeResult ) -> ChangeResult
{ {
@ -1047,8 +933,6 @@ impl ModulesManager {
// [x] Validate in trg_module first // [x] Validate in trg_module first
// let botlock = bot.read().await;
// let modmgr = Arc::clone(&botlock.botmodules);
let modlist = self.moduleslist().await; let modlist = self.moduleslist().await;
let rslt = modlist.get(&trg_module); let rslt = modlist.get(&trg_module);
@ -1057,9 +941,6 @@ impl ModulesManager {
} }
// let botlock = bot.read().await;
// let id = botlock.get_identity();
let mut idlock = id.write().await; let mut idlock = id.write().await;
// if trg_level = StatusLvl::Instance , the temp_chnl = the broadcaster's or the chatter's // if trg_level = StatusLvl::Instance , the temp_chnl = the broadcaster's or the chatter's
@ -1087,7 +968,7 @@ impl ModulesManager {
/* /*
[ ] 1. If CmdSender is BotAdmin but not (Mod,SupMod,Broadcaster) [x] 1. If CmdSender is BotAdmin but not (Mod,SupMod,Broadcaster)
1. can_user_run for cmdreqRoles including BotAdmin & not can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster) 1. can_user_run for cmdreqRoles including BotAdmin & not can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster)
1a. , and is -f (forced) , return a Success 1a. , and is -f (forced) , return a Success
1b. , and is -i (to instance) , return a Success 1b. , and is -i (to instance) , return a Success
@ -1116,11 +997,11 @@ impl ModulesManager {
/* /*
[ ] 2. If CmdSender not a BotAdmin but is (Mod,SupMod,Broadcaster) [x] 2. If CmdSender not a BotAdmin but is (Mod,SupMod,Broadcaster)
2. not can_user_run for cmdreqRoles including BotAdmin & can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster) 2. not can_user_run for cmdreqRoles including BotAdmin & can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster)
2a. , and is -f (forced) , return a Failure they are not allowed 2a. , and is -f (forced) , return a Failure they are not allowed
2b. , and is -i (to instance) , return a Failure they are not allowed 2b. , and is -i (to instance) , return a Failure they are not allowed
2c. , and has no special flags (-i / -f) , return a Success 2c. , and has no special flags (-i / -f) , return a Success
*/ */
@ -1144,11 +1025,11 @@ impl ModulesManager {
/* /*
[ ] 3. If CmdSender is (Mod,SupMod,Broadcaster) and a BotAdmin [x] 3. If CmdSender is (Mod,SupMod,Broadcaster) and a BotAdmin
3. can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster) & can_user_run for cmdreqRoles including BotAdmin 3. can_user_run for cmdreqRoles (Mod,SupMod,Broadcaster) & can_user_run for cmdreqRoles including BotAdmin
3a. , and is -f (forced) , return a Success 3a. , and is -f (forced) , return a Success
3b. , and is -i (to instance) , return a Success 3b. , and is -i (to instance) , return a Success
3c. , and has no special flags (-i / -f) , return a Success 3c. , and has no special flags (-i / -f) , return a Success
*/ */
@ -1203,11 +1084,8 @@ impl ModulesManager {
// at Instance level // at Instance level
// - If core module, do nothing // - If core module, do nothing
// self.satusdb.
let mut dbt = self.statusdb.write().await; let mut dbt = self.statusdb.write().await;
// let a = dbt.entry(in_module.clone()).;
let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap(); let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap();
match mgrp { match mgrp {
@ -1244,7 +1122,6 @@ impl ModulesManager {
let mut dbt = self.statusdb.write().await; let mut dbt = self.statusdb.write().await;
// let a = dbt.entry(in_module.clone()).;
let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap(); let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap();
match mgrp { match mgrp {
@ -1263,9 +1140,6 @@ impl ModulesManager {
if (*x == StatusType::Enabled(StatusLvl::Instance)) if (*x == StatusType::Enabled(StatusLvl::Instance))
|| (*x == StatusType::Disabled(StatusLvl::Instance)) { || (*x == StatusType::Disabled(StatusLvl::Instance)) {
true true
// } else if let StatusType::Enabled(StatusLvl::Ch(_)) = (*x).clone() {
// true
// } else {false}
} else { } else {
matches!((*x).clone(), StatusType::Enabled(StatusLvl::Ch(_))) matches!((*x).clone(), StatusType::Enabled(StatusLvl::Ch(_)))
} }
@ -1291,7 +1165,6 @@ impl ModulesManager {
let mut dbt = self.statusdb.write().await; let mut dbt = self.statusdb.write().await;
// let a = dbt.entry(in_module.clone()).;
let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap(); let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap();
match mgrp { match mgrp {
@ -1328,7 +1201,6 @@ impl ModulesManager {
let mut dbt = self.statusdb.write().await; let mut dbt = self.statusdb.write().await;
// let a = dbt.entry(in_module.clone()).;
let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap(); let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap();
match mgrp { match mgrp {
@ -1366,7 +1238,6 @@ impl ModulesManager {
let mut dbt = self.statusdb.write().await; let mut dbt = self.statusdb.write().await;
// let a = dbt.entry(in_module.clone()).;
let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap(); let (mgrp,statusvector) = dbt.get_mut(&in_module).unwrap();
match mgrp { match mgrp {
@ -1506,17 +1377,6 @@ impl ModulesManager {
) )
} }
// let mut dbt = self.statusdb.write().await;
// //
// let statusvector = dbt.entry(in_module.clone()).or_insert((in_modgroup.clone(),Vec::new()));
// match in_modgroup {
// ModGroup::Core => statusvector.1.push(StatusType::Enabled(StatusLvl::Instance)) , // Pushes the Module as Enabled at Instance Level
// ModGroup::Custom => statusvector.1.push(StatusType::Disabled(StatusLvl::Instance)),
// }
// statusvector.push(ModStatusType::Enabled(StatusLvl::Instance)); // Pushes the Module as Enabled at Instance Level
self.affirm_in_statusdb(in_module.clone(),in_modgroup).await; self.affirm_in_statusdb(in_module.clone(),in_modgroup).await;
let mut a = self.botactions.write().await; let mut a = self.botactions.write().await;
@ -1571,8 +1431,6 @@ mod core_modulesmanager {
} }
/* /*
Possible Tests Possible Tests
@ -1862,20 +1720,8 @@ mod core_modulesmanager {
// ModuleDoesNotExist, // preferring instead to handle in it's own smaller test // ModuleDoesNotExist, // preferring instead to handle in it's own smaller test
} }
// let channel = ChType::Channel("somechannel".to_string());
// let mut idlock = idmgr.write().await;
let mut idlock = idmgr.clone(); let mut idlock = idmgr.clone();
// if trg_level = StatusLvl::Instance , the temp_chnl = the broadcaster's or the chatter's
// let arb_chnl = match trg_level.clone() {
// StatusLvl::Instance => ChType::Channel(requestor.to_lowercase()),
// StatusLvl::Ch(a) => a,
// };
let requestor_badge = None; // If they are a Mod on the Given Channel already, that can be evaluated without the current badge let requestor_badge = None; // If they are a Mod on the Given Channel already, that can be evaluated without the current badge
const OF_CMD_CHANNEL:ChType = Channel(String::new()); const OF_CMD_CHANNEL:ChType = Channel(String::new());
@ -1917,19 +1763,8 @@ mod core_modulesmanager {
let in_module = BotModule("Experiments01".to_string()); let in_module = BotModule("Experiments01".to_string());
let in_modgroup = ModGroup::Custom; let in_modgroup = ModGroup::Custom;
// match current_test_scenario {
// TestScenarios::BotadminUser => modsmgr.affirm_in_statusdb(in_module.clone(), in_modgroup.clone()).await,
// _ => self::panic!("Scenario not handled"),
// }
modsmgr.affirm_in_statusdb(in_module.clone(), in_modgroup.clone()).await; modsmgr.affirm_in_statusdb(in_module.clone(), in_modgroup.clone()).await;
// let in_module = match current_test_scenario {
// // TestScenarios::ModuleDoesNotExist => BotModule("NonExisting_Module".to_string()),
// _ => in_module,
// };
/* /*
[x] 3. affirm when BotAdmin attempts to exec_enable on the following [x] 3. affirm when BotAdmin attempts to exec_enable on the following
a. Channel Level , where they are not a Mod a. Channel Level , where they are not a Mod
@ -1956,8 +1791,6 @@ mod core_modulesmanager {
trg_level.clone(), trg_level.clone(),
id.clone()).await; id.clone()).await;
// assert_eq!(rslt,ChangeResult::Failed("Promote yourself Temporarily First".to_string()));
match current_test_scenario { match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
assert_eq!(rslt,ChangeResult::Failed("Promote yourself Temporarily First".to_string())), assert_eq!(rslt,ChangeResult::Failed("Promote yourself Temporarily First".to_string())),
@ -1965,10 +1798,6 @@ mod core_modulesmanager {
assert_eq!(rslt,ChangeResult::Success("Enabled at Channel Level".to_string())), assert_eq!(rslt,ChangeResult::Success("Enabled at Channel Level".to_string())),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// TestScenarios::ModuleDoesNotExist =>
// assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// _ =>
// self::panic!("Scenario not handled"),
} }
@ -1978,7 +1807,7 @@ mod core_modulesmanager {
*/ */
// [x] requestor_badge: Option<ChatBadge>, // [x] requestor_badge: Option<ChatBadge>,
// let requestor_badge = ChatBadge::Mod; // setting badge to Mod
let requestor_badge = match current_test_scenario { let requestor_badge = match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
Some(ChatBadge::Mod), // setting badge to Mod -- for the Problem Scenario . They are both BotAdmin & Mod Some(ChatBadge::Mod), // setting badge to Mod -- for the Problem Scenario . They are both BotAdmin & Mod
@ -1986,10 +1815,6 @@ mod core_modulesmanager {
Some(ChatBadge::Mod), // setting badge to Mod Some(ChatBadge::Mod), // setting badge to Mod
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
None, // setting badge to None None, // setting badge to None
// TestScenarios::ModuleDoesNotExist =>
// None,
// _ =>
// self::panic!("Scenario not handled"),
} ; } ;
@ -1999,8 +1824,6 @@ mod core_modulesmanager {
trg_level.clone(), trg_level.clone(),
id.clone()).await; id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Enabled at Channel Level".to_string()));
match current_test_scenario { match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
assert_eq!(rslt,ChangeResult::Success("Enabled at Channel Level".to_string())), assert_eq!(rslt,ChangeResult::Success("Enabled at Channel Level".to_string())),
@ -2008,10 +1831,6 @@ mod core_modulesmanager {
assert_eq!(rslt,ChangeResult::Success("Enabled at Channel Level".to_string())), assert_eq!(rslt,ChangeResult::Success("Enabled at Channel Level".to_string())),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// TestScenarios::ModuleDoesNotExist =>
// assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// _ =>
// self::panic!("Scenario not handled"),
} }
/* /*
@ -2028,10 +1847,6 @@ mod core_modulesmanager {
Some(ChatBadge::Mod), Some(ChatBadge::Mod),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
None, // setting badge to None None, // setting badge to None
// TestScenarios::ModuleDoesNotExist =>
// None, // setting badge to None
// _ =>
// self::panic!("Scenario not handled"),
}; };
let rslt = modsmgr.exec_enable(requestor.clone(), let rslt = modsmgr.exec_enable(requestor.clone(),
@ -2040,7 +1855,6 @@ mod core_modulesmanager {
trg_level.clone(), trg_level.clone(),
id.clone()).await; id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Enabled at Instance Level".to_string()));
match current_test_scenario { match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
@ -2049,10 +1863,6 @@ mod core_modulesmanager {
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// TestScenarios::ModuleDoesNotExist =>
// assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// _ =>
// self::panic!("Scenario not handled"),
} }
/* /*
@ -2069,7 +1879,6 @@ mod core_modulesmanager {
false, false,
id.clone()).await; id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string()));
match current_test_scenario { match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string())), assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string())),
@ -2077,10 +1886,6 @@ mod core_modulesmanager {
assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string())), assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string())),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// TestScenarios::ModuleDoesNotExist =>
// assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// _ =>
// self::panic!("Scenario not handled"),
} }
@ -2091,7 +1896,7 @@ mod core_modulesmanager {
let trg_level = StatusLvl::Ch(channel.clone()); // setting to Channel Level let trg_level = StatusLvl::Ch(channel.clone()); // setting to Channel Level
// let requestor_badge = ChatBadge::Mod; // setting badge to Mod
let requestor_badge = match current_test_scenario { let requestor_badge = match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
None, None,
@ -2099,10 +1904,6 @@ mod core_modulesmanager {
Some(ChatBadge::Mod), Some(ChatBadge::Mod),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
None, // setting badge to None None, // setting badge to None
// TestScenarios::ModuleDoesNotExist =>
// None,
// _ =>
// self::panic!("Scenario not handled"),
}; };
let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(), let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(),
@ -2112,7 +1913,7 @@ mod core_modulesmanager {
false, false,
id.clone()).await; id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string()));
match current_test_scenario { match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string())), assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string())),
@ -2120,10 +1921,6 @@ mod core_modulesmanager {
assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string())), assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string())),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// TestScenarios::ModuleDoesNotExist =>
// assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// _ =>
// self::panic!("Scenario not handled"),
} }
@ -2133,7 +1930,7 @@ mod core_modulesmanager {
*/ */
let trg_level = StatusLvl::Instance; // setting to Instance level let trg_level = StatusLvl::Instance; // setting to Instance level
// let requestor_badge = ChatBadge::Mod; // setting badge to Mod
let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(), let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(),
None, // Does not have a ChatBadge like Mod None, // Does not have a ChatBadge like Mod
@ -2142,7 +1939,6 @@ mod core_modulesmanager {
false, false,
id.clone()).await; id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Disabled at Instance Level".to_string()));
match current_test_scenario { match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
assert_eq!(rslt,ChangeResult::Success("Disabled at Instance Level".to_string())), assert_eq!(rslt,ChangeResult::Success("Disabled at Instance Level".to_string())),
@ -2150,10 +1946,6 @@ mod core_modulesmanager {
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// TestScenarios::ModuleDoesNotExist =>
// assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// _ =>
// self::panic!("Scenario not handled"),
} }
/* /*
@ -2162,7 +1954,6 @@ mod core_modulesmanager {
*/ */
let trg_level = StatusLvl::Instance; // setting to Instance level let trg_level = StatusLvl::Instance; // setting to Instance level
// let requestor_badge = ChatBadge::Mod; // setting badge to Mod
let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(), let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(),
None, // Does not have a ChatBadge like Mod None, // Does not have a ChatBadge like Mod
@ -2171,7 +1962,6 @@ mod core_modulesmanager {
true, // force flag - true true, // force flag - true
id.clone()).await; id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Forced Disable".to_string()));
match current_test_scenario { match current_test_scenario {
TestScenarios::BotadminUser => TestScenarios::BotadminUser =>
assert_eq!(rslt,ChangeResult::Success("Forced Disable".to_string())), assert_eq!(rslt,ChangeResult::Success("Forced Disable".to_string())),
@ -2179,10 +1969,6 @@ mod core_modulesmanager {
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
TestScenarios::RegularChatter => TestScenarios::RegularChatter =>
assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())), assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// TestScenarios::ModuleDoesNotExist =>
// assert_eq!(rslt,ChangeResult::Failed("You're not allowed".to_string())),
// _ =>
// self::panic!("Scenario not handled"),
} }
@ -2214,14 +2000,6 @@ mod core_modulesmanager {
let idmgr = IdentityManager::init(); let idmgr = IdentityManager::init();
let modsmgr = ModulesManager::init().await; let modsmgr = ModulesManager::init().await;
// // [x] 2. modmgr.affirm_in_statusdb(Experiments01,Custom)
// let in_module = BotModule("Experiments01".to_string());
// let in_modgroup = ModGroup::Custom;
// modsmgr.affirm_in_statusdb(in_module.clone(), in_modgroup.clone()).await;
/* /*
[x] 3. affirm when BotAdmin attempts to exec_enable on the following [x] 3. affirm when BotAdmin attempts to exec_enable on the following
a. Channel Level , where they are not a Mod a. Channel Level , where they are not a Mod
@ -2230,7 +2008,6 @@ mod core_modulesmanager {
// [x] Create BotAdmin first // [x] Create BotAdmin first
let requestor = "botadministrator".to_string(); let requestor = "botadministrator".to_string();
// let botadmin_badge = &None;
idmgr.affirm_chatter_in_db(requestor.clone()).await; idmgr.affirm_chatter_in_db(requestor.clone()).await;
idmgr idmgr
@ -2249,149 +2026,6 @@ mod core_modulesmanager {
inner_enable_disable_complex(requestor, channel, idmgr, modsmgr).await; inner_enable_disable_complex(requestor, channel, idmgr, modsmgr).await;
/*
pub async fn exec_enable(
&self,
requestor: String,
requestor_badge: Option<ChatBadge>,
trg_module: ModType,
trg_level: StatusLvl,
id: Arc<RwLock<IdentityManager>>,
) -> ChangeResult
*/
/*
[x] 3. affirm when BotAdmin attempts to exec_enable on the following
a. Channel Level , where they are not a Mod
*/
// [-] requestor_badge: Option<ChatBadge>,
// [x] trg_module: ModType,
// let trg_module = in_module;
// [x] trg_level: StatusLvl,
// let channel = ChType::Channel("somechannel".to_string());
// let trg_level = StatusLvl::Ch(channel.clone()); // setting to Channel Level
// // [x] id: Arc<RwLock<IdentityManager>>,
// let id = Arc::new(RwLock::new(idmgr));
// let rslt = modsmgr.exec_enable(requestor.clone(),
// None,
// trg_module.clone(),
// trg_level.clone(),
// id.clone()).await;
// assert_eq!(rslt,ChangeResult::Failed("Promote yourself Temporarily First".to_string()));
// /*
// [x] 3. affirm when BotAdmin attempts to exec_enable on the following
// b. Channel Level , when they are a Mod
// */
// // [x] requestor_badge: Option<ChatBadge>,
// let requestor_badge = ChatBadge::Mod; // setting badge to Mod
// let rslt = modsmgr.exec_enable(requestor.clone(),
// Some(requestor_badge),
// trg_module.clone(),
// trg_level.clone(),
// id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Enabled at Channel Level".to_string()));
// /*
// [x] 3. affirm when BotAdmin attempts to exec_enable on the following
// c. Instance Level
// */
// let trg_level = StatusLvl::Instance; // setting to Instance level
// let rslt = modsmgr.exec_enable(requestor.clone(),
// None, // setting them back to Non-Mod
// trg_module.clone(),
// trg_level.clone(),
// id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Enabled at Instance Level".to_string()));
// /*
// [x] 4. affirm when BotAdmin attempts to exec_disable on the following
// a. Channel Level , where they are not a Mod
// */
// let trg_level = StatusLvl::Ch(channel.clone()); // setting to Channel Level
// let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(),
// None, // Does not have a ChatBadge like Mod
// trg_module.clone(),
// trg_level.clone(),
// false,
// id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string()));
// /*
// [x] 4. affirm when BotAdmin attempts to exec_disable on the following
// b. Channel Level , when they are a Mod
// */
// let trg_level = StatusLvl::Ch(channel.clone()); // setting to Channel Level
// let requestor_badge = ChatBadge::Mod; // setting badge to Mod
// let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(),
// Some(requestor_badge),
// trg_module.clone(),
// trg_level.clone(),
// false,
// id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Disabled at Channel Level".to_string()));
// /*
// [x] 4. affirm when BotAdmin attempts to exec_disable on the following
// c. Instance Level
// */
// let trg_level = StatusLvl::Instance; // setting to Instance level
// // let requestor_badge = ChatBadge::Mod; // setting badge to Mod
// let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(),
// None, // Does not have a ChatBadge like Mod
// trg_module.clone(),
// trg_level.clone(),
// false,
// id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Disabled at Instance Level".to_string()));
// /*
// [ ] 4. affirm when BotAdmin attempts to exec_disable on the following
// d. force disable
// */
// let trg_level = StatusLvl::Instance; // setting to Instance level
// // let requestor_badge = ChatBadge::Mod; // setting badge to Mod
// let rslt: ChangeResult = modsmgr.exec_disable(requestor.clone(),
// None, // Does not have a ChatBadge like Mod
// trg_module.clone(),
// trg_level.clone(),
// true, // force flag - true
// id.clone()).await;
// assert_eq!(rslt,ChangeResult::Success("Forced Disable".to_string()));
} }
@ -2475,14 +2109,10 @@ mod core_modulesmanager {
let requestor = "regular_user".to_string(); let requestor = "regular_user".to_string();
// let botadmin_badge = &None;
let channel = ChType::Channel("somechannel".to_string()); let channel = ChType::Channel("somechannel".to_string());
idmgr.affirm_chatter_in_db(requestor.clone()).await; idmgr.affirm_chatter_in_db(requestor.clone()).await;
// idmgr
// .add_role(requestor.clone(), identity::UserRole::Mod(channel.clone()))
// .await;
let rslt = idmgr let rslt = idmgr
.getspecialuserroles( .getspecialuserroles(
@ -2511,14 +2141,12 @@ mod core_modulesmanager {
let requestor = "regular_user".to_string(); let requestor = "regular_user".to_string();
// let botadmin_badge = &None;
let channel = ChType::Channel("somechannel".to_string()); let channel = ChType::Channel("somechannel".to_string());
idmgr.affirm_chatter_in_db(requestor.clone()).await; idmgr.affirm_chatter_in_db(requestor.clone()).await;
// idmgr
// .add_role(requestor.clone(), identity::UserRole::Mod(channel.clone()))
// .await;
let rslt = idmgr let rslt = idmgr
.getspecialuserroles( .getspecialuserroles(
@ -2555,7 +2183,7 @@ mod core_modulesmanager {
assert_eq!(rslt,ChangeResult::Failed("Module doesn't exist".to_string())); assert_eq!(rslt,ChangeResult::Failed("Module doesn't exist".to_string()));
// [ ] Test with Non Existing module > disable // [x] Test with Non Existing module > disable
let trg_module = BotModule("Non_Existent_Module".to_string()); let trg_module = BotModule("Non_Existent_Module".to_string());

View file

@ -696,59 +696,6 @@ impl IdentityManager {
} }
} }
// if &msg.badges.contains(Badge{}) {
// }
// if let Some(sender_badge) = sender_badge {
// match sender_badge {
// Some(sender_badge) => {
// return &self.can_user_run(msg.sender.name.to_owned(),
// ChType::Channel(msg.channel_login.to_owned()),
// sender_badge,
// cmdreqroles
// return self.can_user_run(msg.sender.name.to_owned(),
// let a = Arc::new(Mutex::new(self));
// let mut a = a.lock().await;
// let a = **a;
// let a = a.can_user_run(msg.sender.name.to_owned(),
// ChType::Channel(msg.channel_login.to_owned()),
// sender_badge,
// cmdreqroles
// ) ;
// let a = *self;
// let a = Arc::new(Mutex::new(a));
// let a = a.lock().await.can_user_run(msg.sender.name.to_owned(),
// ChType::Channel(msg.channel_login.to_owned()),
// sender_badge,
// cmdreqroles
// ) ;
// return a;
// return self.can_user_run(msg.sender.name.to_owned(),
// ChType::Channel(msg.channel_login.to_owned()),
// sender_badge,
// cmdreqroles
// ).await
// * NOTE : We're preferring to pass the ChangeResult up , where we have access to Chat via BotInstance
// that have more strained chatting rules
// let evalpermissible = self.can_user_run(msg.sender.name.to_owned(),
// ChType::Channel(msg.channel_login.to_owned()),
// sender_badge,
// cmdreqroles
// ).await ;
// evalpermissible
// // }
// None => {
// }
// here , sender_badge is likely None
// This could be a regular chatter, BotAdmin,SupserMod
// [ ] Call can_user_run()
// (self,Permissible::Block)
// (Permissible::Block,ChangeResult::NoChange("".to_string()))
self.can_user_run( self.can_user_run(
msg.sender.name.to_owned(), msg.sender.name.to_owned(),
ChType::Channel(msg.channel_login.to_owned()), ChType::Channel(msg.channel_login.to_owned()),
@ -756,6 +703,7 @@ impl IdentityManager {
cmdreqroles, cmdreqroles,
) )
.await .await
} }
pub async fn can_user_run( pub async fn can_user_run(