def test_split_remove_all():
    """
    Don't split groups if "remove" is "all" instead of list
    :return:
    """
    group_prefix = "G"
    add_groups = [group_prefix+six.text_type(n+1) for n in range(0, 11)]
    user = UserAction(id_type=IdentityTypes.enterpriseID, email="*****@*****.**")
    user.remove_from_groups(all_groups=True)
    assert user.maybe_split_groups(1) is False
    assert user.wire_dict() == {'do': [{'remove': 'all'}], 'user': '******'}
    user.add_to_groups(groups=add_groups)
    assert user.maybe_split_groups(10) is True
    assert user.wire_dict() == {'do': [{'remove': 'all'},
                                       {'add': {'product': ['G1',
                                                            'G2',
                                                            'G3',
                                                            'G4',
                                                            'G5',
                                                            'G6',
                                                            'G7',
                                                            'G8',
                                                            'G9',
                                                            'G10']}},
                                       {'add': {'product': ['G11']}}],
                                'user': '******'}
def test_split_role_assignment():
    group_prefix = "G"
    add_groups = [group_prefix+six.text_type(n+1) for n in range(0, 25)]
    user = UserAction(id_type=IdentityTypes.enterpriseID, email="*****@*****.**")
    user.add_role(groups=add_groups, role_type=RoleTypes.admin)
    assert user.maybe_split_groups(10) is True
    assert len(user.commands) == 3
Ejemplo n.º 3
0
def test_split_add_user():
    """
    Make sure split doesn't do anything when we have a non-add/remove group action
    :return:
    """
    user = UserAction(id_type=IdentityTypes.enterpriseID,
                      email="*****@*****.**")
    user.create(first_name="Example",
                last_name="User",
                country="US",
                email="*****@*****.**")
    user.update(first_name="EXAMPLE")
    assert user.maybe_split_groups(10) is False
    assert len(user.commands) == 2
    assert user.wire_dict() == {
        'do': [{
            'createEnterpriseID': {
                'country': 'US',
                'email': '*****@*****.**',
                'firstname': 'Example',
                'lastname': 'User',
                'option': 'ignoreIfAlreadyExists'
            }
        }, {
            'update': {
                'firstname': 'EXAMPLE'
            }
        }],
        'user':
        '******'
    }
Ejemplo n.º 4
0
def test_large_group_mix_split():
    """
    Ensure that group split works on add and remove
    Each "add" and "remove" group should be split into 2 groups each
    :return:
    """
    group_prefix = "G"
    add_groups = [group_prefix + six.text_type(n + 1) for n in range(0, 15)]
    remove_groups = [
        group_prefix + six.text_type(n + 1) for n in range(15, 30)
    ]
    user = UserAction(id_type=IdentityTypes.enterpriseID,
                      email="*****@*****.**")
    user.add_to_groups(groups=add_groups, group_type=GroupTypes.usergroup) \
        .remove_from_groups(groups=remove_groups, group_type=GroupTypes.usergroup)
    assert user.maybe_split_groups(10) is True
    assert len(user.commands) == 4
    assert user.commands[0]["add"][
        GroupTypes.usergroup.name] == add_groups[0:10]
    assert user.commands[1]["add"][
        GroupTypes.usergroup.name] == add_groups[10:]
    assert user.commands[2]["remove"][
        GroupTypes.usergroup.name] == remove_groups[0:10]
    assert user.commands[3]["remove"][
        GroupTypes.usergroup.name] == remove_groups[10:]
def test_no_group_split():
    """
    maybe_split should return false if nothing was split
    :return:
    """
    group_prefix = "G"
    add_groups = [group_prefix+six.text_type(n+1) for n in range(0, 5)]
    user = UserAction(id_type=IdentityTypes.enterpriseID, email="*****@*****.**")
    user.add_to_groups(groups=add_groups, group_type=GroupTypes.usergroup)
    assert user.maybe_split_groups(10) is False
    assert len(user.commands) == 1
def test_large_group_assignment_split_recursive():
    """
    Test group list large enough to trigger recursive split
    :return:
    """
    group_prefix = "G"
    add_groups = [group_prefix+six.text_type(n+1) for n in range(0, 100)]
    user = UserAction(id_type=IdentityTypes.enterpriseID, email="*****@*****.**")
    user.add_to_groups(groups=add_groups, group_type=GroupTypes.usergroup)
    assert user.maybe_split_groups(10) is True
    assert len(user.commands) == 10
def test_large_group_assignment_split():
    """
    Ensure that large group list can be split into multiple commands
    :return:
    """
    group_prefix = "G"
    add_groups = [group_prefix+six.text_type(n+1) for n in range(0, 15)]
    user = UserAction(id_type=IdentityTypes.enterpriseID, email="*****@*****.**")
    user.add_to_groups(groups=add_groups, group_type=GroupTypes.usergroup)
    assert user.maybe_split_groups(10) is True
    assert len(user.commands) == 2
    assert user.commands[0]["add"][GroupTypes.usergroup.name] == add_groups[0:10]
    assert user.commands[1]["add"][GroupTypes.usergroup.name] == add_groups[10:]
def test_complex_group_split():
    """
    Test a complex command with add and remove directive, with multiple group types
    UserAction's interface doesn't support this, so we build our own command array
    :return:
    """
    group_prefix = "G"
    add_groups = [group_prefix+six.text_type(n+1) for n in range(0, 150)]
    add_products = [group_prefix+six.text_type(n+1) for n in range(0, 26)]
    user = UserAction(id_type=IdentityTypes.enterpriseID, email="*****@*****.**")
    user.commands = [{
        "add": {
            GroupTypes.usergroup.name: add_groups,
            GroupTypes.product.name: add_products,
        },
    }]
    assert user.maybe_split_groups(10) is True
    assert len(user.commands) == 15
    assert len([c for c in user.commands if 'product' in c['add']]) == 3
    assert GroupTypes.product.name not in user.commands[3]['add']