def create_groups_with_permissions(codenames):
    g1, _ = Group.objects.get_or_create(name="Test Group 1")
    g2, _ = Group.objects.get_or_create(name="Test Group 2")

    gp = GroupPermissions()
    with gp.groups(g1, g2):
        gp.add_permissions(Group, *codenames)

    return (g1, g2)
def test_add_perms():
    g1, _ = Group.objects.get_or_create(name="Test Group 1")
    g2, _ = Group.objects.get_or_create(name="Test Group 2")
    any_model = Group  # for example
    content_type = ContentType.objects.get_for_model(any_model)
    codenames = ['a_do_stuff', 'b_do_more_stuff']
    expected_permissions = []
    for name in codenames:
        perm, _ = Permission.objects.get_or_create(name=name,
                                                   codename=name,
                                                   content_type=content_type)
        expected_permissions.append(perm)

    gp = GroupPermissions()
    with gp.groups(g1, g2):
        gp.add_permissions(any_model, *codenames)
    assert list(g1.permissions.all()) == expected_permissions
    assert list(g2.permissions.all()) == expected_permissions