#!perl
use Cassandane::Tiny;

sub test_subfolder_login
    :PopSubFolders :NoAltNameSpace
    ($self)
{
    xlog $self, "Testing whether + address login gets subfolder";

    my $imapclient = $self->{store}->get_client();

    xlog $self, "Ensure a messages exist";
    my %exp;
    $exp{A} = $self->make_message('Message A');

    $imapclient->create('INBOX.sub');
    $self->{store}->set_folder('INBOX.sub');
    # different mailbox, so reset generator's expected uid sequence
    $self->{gen}->set_next_uid(1);

    my %subexp;
    $subexp{B} = $self->make_message('Message B');

    my $popclient = $self->{pop_store}->get_client();

    xlog $self, "Test regular TOP gets the right message";
    my $r = $popclient->command('TOP', 1, 2)->response();
    $self->assert_equals($r, Net::Cmd::CMD_OK);
    $self->assert_equals($popclient->code(), 200);
    my $lines = $popclient->read_until_dot();
    my %actual;
    $actual{'Message A'} = Cassandane::Message->new(lines => $lines,
                                                    attrs => { uid => 1 });
    $self->check_messages(\%exp, actual => \%actual);

    my $svc = $self->{instance}->get_service('pop3');
    my $substore = $svc->create_store(folder => 'INBOX.sub');

    # create a new client
    my $subclient = $substore->get_client();


    xlog $self, "Test subfolder TOP gets the right message";
    my $subr = $subclient->command('TOP', 1, 2)->response();
    $self->assert_equals($subr, Net::Cmd::CMD_OK);
    $self->assert_equals($subclient->code(), 200);
    my $sublines = $subclient->read_until_dot();
    my %subactual;
    $subactual{'Message B'} = Cassandane::Message->new(lines => $sublines,
                                                       attrs => { uid => 1 });
    $self->check_messages(\%subexp, actual => \%subactual);
}
