Exemple #1
0
def test_filter_subscriptions_by_user_data_any(database, session):
    preference = UserSubscriptionPreferences(subscription=database.sub,
                                             preference=database.prefs[0])
    session.add(preference)
    user = User(email='*****@*****.**', subscription_preferences=[preference])
    user.meta_data = {"department": "a"}
    session.add(user)

    rule = Rule(name="department", value="a")
    session.add(rule)
    database.sub.user_rules = [rule]
    database.sub.rule_logic = 'any'
    session.add(database.sub)
    session.commit()

    merged_preferences = merge_subscriptions_with_preferences(user)
    subscriptions = filter_subscriptions_by_user_data(merged_preferences, user)

    assert len(subscriptions) == 1
    assert subscriptions[0]['id'] == database.sub.id

    user.meta_data = {"department": "b"}
    session.add(user)
    session.commit()
    merged_preferences = merge_subscriptions_with_preferences(user)
    subscriptions = filter_subscriptions_by_user_data(merged_preferences, user)

    assert subscriptions == []
Exemple #2
0
def test_filter_subscriptions_by_user_data_all(database, session):
    database.sub.rule_logic = 'all'
    rule1 = Rule(name="department", value="a")
    rule2 = Rule(name="location", value="c")
    database.sub.user_rules = [rule1, rule2]
    session.add(rule1)
    session.add(rule2)
    session.add(database.sub)

    preference = UserSubscriptionPreferences(subscription=database.sub,
                                             preference=database.prefs[0])
    session.add(preference)
    user = User(email='*****@*****.**', subscription_preferences=[preference])
    user.meta_data = {"department": "a", "location": "b"}
    session.add(user)
    session.commit()

    merged_preferences = merge_subscriptions_with_preferences(user)
    subscriptions = filter_subscriptions_by_user_data(merged_preferences, user)

    assert subscriptions == []

    user.meta_data = {'department': 'a', 'location': 'c'}
    session.add(user)
    session.commit()
    merged_preferences = merge_subscriptions_with_preferences(user)
    subscriptions = filter_subscriptions_by_user_data(merged_preferences, user)

    assert len(subscriptions) == 1
    assert subscriptions[0]['id'] == database.sub.id
Exemple #3
0
def test_filter_subscriptions_by_user_data_list(database, session):
    preference = UserSubscriptionPreferences(subscription=database.sub,
                                             preference=database.prefs[0])
    session.add(preference)
    user = User(email='*****@*****.**', subscription_preferences=[preference])
    user.meta_data = {"role": ["pushmaster", "technical_lead"]}
    session.add(user)

    rule = Rule(name="role", value="pushmaster")
    database.sub.user_rules = [rule]
    database.sub.rule_logic = 'any'
    session.add(rule)
    session.add(database.sub)
    session.commit()

    merged_preferences = merge_subscriptions_with_preferences(user)
    subscriptions = filter_subscriptions_by_user_data(merged_preferences, user)

    assert len(subscriptions) == 1
    assert subscriptions[0]['id'] == database.sub.id

    user.meta_data = {"role": "infra"}
    session.add(user)
    session.commit()
    merged_preferences = merge_subscriptions_with_preferences(user)
    subscriptions = filter_subscriptions_by_user_data(merged_preferences, user)

    assert len(subscriptions) == 0
Exemple #4
0
def test_filter_subscriptions_by_user_data_without_rules(database, session):
    database.sub.rule_logic = 'all'
    database.sub.user_rules = []
    session.add(database.sub)

    preference = UserSubscriptionPreferences(subscription=database.sub,
                                             preference=database.prefs[0])
    session.add(preference)
    user = User(email='*****@*****.**', subscription_preferences=[preference])
    user.meta_data = {"department": "a", "location": "b"}
    session.add(user)
    session.commit()

    merged_preferences = merge_subscriptions_with_preferences(user)
    with pytest.raises(AssertionError):
        filter_subscriptions_by_user_data(merged_preferences, user)