#!perl
use Cassandane::Tiny;

sub test_admin_unsetusergroup ($self)
{
    my $admintalk = $self->{adminstore}->get_client();

    # should have the xusergroups capability
    $self->assert_not_null($admintalk->capability()->{xusergroups});

    # get a user's groups
    my $usergroups = $self->imap_getusergroup($admintalk, 'cassandane');
    $self->assert_not_null($usergroups->{'cassandane'});
    $self->assert_not_null($usergroups->{'cassandane'}->{'group:group c'});
    $self->assert_not_null($usergroups->{'cassandane'}->{'group:group co'});
    $self->assert_null($usergroups->{'cassandane'}->{'group:group o'});
    $self->assert_null($usergroups->{'cassandane'}->{'group:new group'});

    # remove membership from a group
    $admintalk->_imap_cmd('UNSETUSERGROUP', 0, '',
                          'cassandane', 'group:group c');
    $self->assert_str_equals('ok', $admintalk->get_last_completion_response());

    # get the groups again, shouldn't be in the group anymore
    $usergroups = $self->imap_getusergroup($admintalk, 'cassandane');
    $self->assert_not_null($usergroups->{'cassandane'});
    $self->assert_null($usergroups->{'cassandane'}->{'group:group c'});
    $self->assert_not_null($usergroups->{'cassandane'}->{'group:group co'});
    $self->assert_null($usergroups->{'cassandane'}->{'group:group o'});

    # get the group's membership, shouldn't contain the user
    $usergroups = $self->imap_getusergroup($admintalk, 'group:group c');
    $self->assert_not_null($usergroups->{'group:group c'});
    $self->assert_null($usergroups->{'group:group c'}->{'cassandane'});
}
