def test_client_basic_positive():
    Environment.prefs['scrobble_clients'] = 'pcone'

    assert Filters.is_valid_client({'title': 'PC-One'}) is True
    assert Filters.is_valid_client({
        'title': 'PC-Two',
        'product': 'DLNA'
    }) is False
def test_client_wildcard():
    Environment.prefs['scrobble_clients'] = '*'

    assert Filters.is_valid_client({'title': 'PC-One'}) is True
    assert Filters.is_valid_client({
        'title': 'PC-Two',
        'product': 'DLNA'
    }) is True
def test_client_dlna_inverted():
    Environment.prefs['scrobble_clients'] = '-#dlna'

    assert Filters.is_valid_client({'title': 'PC-One'}) is True
    assert Filters.is_valid_client({
        'title': 'PC-Two',
        'product': 'DLNA'
    }) is False
def test_client_basic_inverted():
    Environment.prefs['scrobble_clients'] = 'pcone, -pctwo'

    assert Filters.is_valid_client({'title': 'PC-One'}) is True
    assert Filters.is_valid_client({'title': 'PC-Two'}) is False
    assert Filters.is_valid_client({
        'title': 'PC-Three',
        'product': 'DLNA'
    }) is False
Пример #5
0
    def match(result, client, player):
        # Apply global filters
        if not Filters.is_valid_client(player) or\
           not Filters.is_valid_address(client):
            # Client didn't pass filters, update `account` attribute and return
            result['account'] = None

            return True, result

        # Find matching `ClientRule`
        address = client['address'] if client else None

        rule = (ClientRule
            .select()
            .where(
                (ClientRule.key == player['key']) |
                (ClientRule.key == '*') |
                (ClientRule.key == None),

                (ClientRule.name == player['title']) |
                (ClientRule.name == '*') |
                (ClientRule.name == None),

                (ClientRule.address == address) |
                (ClientRule.address == '*') |
                (ClientRule.address == None)
            )
            .order_by(
                ClientRule.priority.asc()
            )
            .first()
        )

        log.debug('Activity matched against rule: %r', rule)

        if rule:
            # Process rule
            if rule.account_id is not None:
                result['account'] = rule.account_id
            else:
                return True, result
        else:
            result['account'] = None

        return False, result
def test_client_dlna_invalid():
    Environment.prefs['scrobble_clients'] = '#, pcone'

    assert Filters.is_valid_client({'title': 'PC-One'}) is True
def test_client_invalid():
    Environment.prefs['scrobble_clients'] = 'pcone'

    assert Filters.is_valid_client({}) is False
Пример #8
0
def test_client_empty():
    Environment.prefs["scrobble_clients"] = ""

    assert Filters.is_valid_client({"title": "PC-One"}) is True
    assert Filters.is_valid_client({"title": "PC-Two", "product": "DLNA"}) is True
Пример #9
0
def test_client_dlna_invalid():
    Environment.prefs["scrobble_clients"] = "#, pcone"

    assert Filters.is_valid_client({"title": "PC-One"}) is True
Пример #10
0
def test_client_dlna_inverted():
    Environment.prefs["scrobble_clients"] = "-#dlna"

    assert Filters.is_valid_client({"title": "PC-One"}) is True
    assert Filters.is_valid_client({"title": "PC-Two", "product": "DLNA"}) is False
Пример #11
0
def test_client_basic_inverted():
    Environment.prefs["scrobble_clients"] = "pcone, -pctwo"

    assert Filters.is_valid_client({"title": "PC-One"}) is True
    assert Filters.is_valid_client({"title": "PC-Two"}) is False
    assert Filters.is_valid_client({"title": "PC-Three", "product": "DLNA"}) is False
Пример #12
0
def test_client_basic_positive():
    Environment.prefs["scrobble_clients"] = "pcone"

    assert Filters.is_valid_client({"title": "PC-One"}) is True
    assert Filters.is_valid_client({"title": "PC-Two", "product": "DLNA"}) is False
Пример #13
0
def test_client_invalid():
    Environment.prefs["scrobble_clients"] = "pcone"

    assert Filters.is_valid_client({}) is False