#!perl
use Cassandane::Tiny;

sub test_auditlog_size
    :min_version_3_5
    ($self)
{
    my $store = $self->{store};
    my $talk = $store->get_client();

    my $subfolder = 'INBOX.foo';

    xlog $self, "First create a sub folder";
    $talk->create($subfolder)
        or die "Cannot create folder $subfolder: $@";
    $self->assert_str_equals('ok', $talk->get_last_completion_response());

    xlog $self, "Generate messages in $subfolder";
    $store->set_folder($subfolder);
    $store->_select();
    for (1..5) {
        $self->make_message("Message $subfolder $_");
    }
    $talk->unselect();
    $talk->select($subfolder);

    # discard syslogs from setup
    $self->{instance}->getsyslog();

    my $resp = $talk->fetch('1,3,5', 'RFC822.SIZE');
    $self->assert_str_equals('ok', $talk->get_last_completion_response());
    $self->assert_not_null($resp);
    my %expected_sizes = map {
        $_ => $resp->{$_}->{'rfc822.size'}
    } keys %{$resp};

    $talk->store('1,3,5', '+flags', '(\\Deleted \\Seen)');
    $talk->expunge();

    if ($self->{instance}->{have_syslog_replacement}) {
        my @auditlogs = $self->{instance}->getsyslog(
            qr/\bevent=auditlog\.expunge\b/);

        my %actual_sizes = map {
            m/\bmsg\.imapuid=(\d+)\b.*msg\.size=(\d+)\b/
        } @auditlogs;

        $self->assert_deep_equals(\%expected_sizes, \%actual_sizes);
    }
}
