carapax 0.36.0

A Telegram Bot Framework
Documentation
use crate::types::Update;

use super::*;

#[test]
fn access_rule_new() {
    let update: Update = serde_json::from_value(serde_json::json!({
        "update_id": 1,
        "message": {
            "message_id": 1,
            "date": 1,
            "from": {"id": 1, "is_bot": false, "first_name": "test", "username": "username_user"},
            "chat": {"id": 1, "type": "supergroup", "title": "test", "username": "username_chat"},
            "text": "test"
        }
    }))
    .unwrap();

    let principal_chat = Principal::from(ChatId::from(1));
    let principal_user = Principal::from(UserId::from(1));

    let rule = AccessRule::new(principal_user.clone(), true);
    assert_eq!(rule.principal, principal_user);
    assert!(rule.is_granted());
    assert!(rule.accepts(&update));

    let rule = AccessRule::new(principal_chat.clone(), false);
    assert_eq!(rule.principal, principal_chat);
    assert!(!rule.is_granted());
    assert!(rule.accepts(&update));
}

#[test]
fn access_rule_allow_deny() {
    let update: Update = serde_json::from_value(serde_json::json!({
        "update_id": 1,
        "message": {
            "message_id": 1,
            "date": 1,
            "from": {"id": 1, "is_bot": false, "first_name": "test", "username": "username_user"},
            "chat": {"id": 1, "type": "supergroup", "title": "test", "username": "username_chat"},
            "text": "test"
        }
    }))
    .unwrap();

    let principal_chat = Principal::from(ChatId::from(1));
    let principal_user = Principal::from(UserId::from(1));

    let rule = AccessRule::allow(principal_user.clone());
    assert_eq!(rule.principal, principal_user);
    assert!(rule.is_granted());
    assert!(rule.accepts(&update));

    let rule = AccessRule::deny(principal_chat.clone());
    assert_eq!(rule.principal, principal_chat);
    assert!(!rule.is_granted());
    assert!(rule.accepts(&update));
}

#[test]
fn access_rule_principal_all() {
    let update: Update = serde_json::from_value(serde_json::json!({
        "update_id": 1,
        "message": {
            "message_id": 1,
            "date": 1,
            "from": {"id": 1, "is_bot": false, "first_name": "test", "username": "username_user"},
            "chat": {"id": 1, "type": "supergroup", "title": "test", "username": "username_chat"},
            "text": "test"
        }
    }))
    .unwrap();

    let rule = AccessRule::allow_all();
    assert_eq!(rule.principal, Principal::All);
    assert!(rule.is_granted());
    assert!(rule.accepts(&update));

    let rule = AccessRule::deny_all();
    assert_eq!(rule.principal, Principal::All);
    assert!(!rule.is_granted());
    assert!(rule.accepts(&update));
}

#[test]
fn access_rule_principal_user() {
    let update: Update = serde_json::from_value(serde_json::json!({
        "update_id": 1,
        "message": {
            "message_id": 1,
            "date": 1,
            "from": {"id": 1, "is_bot": false, "first_name": "test", "username": "username_user"},
            "chat": {"id": 1, "type": "supergroup", "title": "test", "username": "username_chat"},
            "text": "test"
        }
    }))
    .unwrap();

    let principal_user = Principal::from(UserId::from(1));

    let rule = AccessRule::allow_user(1);
    assert_eq!(rule.principal, principal_user);
    assert!(rule.is_granted());
    assert!(rule.accepts(&update));

    let rule = AccessRule::deny_user(1);
    assert_eq!(rule.principal, principal_user);
    assert!(!rule.is_granted());
    assert!(rule.accepts(&update));
}

#[test]
fn access_rule_principal_chat() {
    let update: Update = serde_json::from_value(serde_json::json!({
        "update_id": 1,
        "message": {
            "message_id": 1,
            "date": 1,
            "from": {"id": 1, "is_bot": false, "first_name": "test", "username": "username_user"},
            "chat": {"id": 1, "type": "supergroup", "title": "test", "username": "username_chat"},
            "text": "test"
        }
    }))
    .unwrap();

    let principal_chat = Principal::from(ChatId::from(1));

    let rule = AccessRule::allow_chat(1);
    assert_eq!(rule.principal, principal_chat);
    assert!(rule.is_granted());
    assert!(rule.accepts(&update));

    let rule = AccessRule::deny_chat(1);
    assert_eq!(rule.principal, principal_chat);
    assert!(!rule.is_granted());
    assert!(rule.accepts(&update));
}

#[test]
fn access_rule_principal_chat_user() {
    let update: Update = serde_json::from_value(serde_json::json!({
        "update_id": 1,
        "message": {
            "message_id": 1,
            "date": 1,
            "from": {"id": 1, "is_bot": false, "first_name": "test", "username": "username_user"},
            "chat": {"id": 1, "type": "supergroup", "title": "test", "username": "username_chat"},
            "text": "test"
        }
    }))
    .unwrap();

    let rule = AccessRule::allow_chat_user(1, 1);
    assert_eq!(rule.principal, Principal::from((ChatId::from(1), UserId::from(1))));
    assert!(rule.is_granted());
    assert!(rule.accepts(&update));

    let rule = AccessRule::deny_chat_user(1, 1);
    assert_eq!(rule.principal, Principal::from((ChatId::from(1), UserId::from(1))));
    assert!(!rule.is_granted());
    assert!(rule.accepts(&update));
}