#!perl
use Cassandane::Tiny;

sub test_account_get_capabilities
    :min_version_3_3
    ($self)
{
    my $jmap = $self->default_user->jmap;
    my $default_cal_id = $self->default_user->calendars->default->id;

    my $caldav = $self->{caldav};
    my $http = $self->{instance}->get_service("http");
    my $admintalk = $self->{adminstore}->get_client();

    xlog "Get session object";

    my $session = $jmap->get_client_session->client_session;

    $self->assert_not_null($session);

    my $capas = $session->{accounts}{cassandane}{accountCapabilities}{'urn:ietf:params:jmap:calendars'};
    $self->assert_not_null($capas);

    $self->assert_not_null($capas->{minDateTime});
    $self->assert_not_null($capas->{maxDateTime});
    $self->assert_not_null($capas->{maxExpandedQueryDuration});
    $self->assert(exists $capas->{maxParticipantsPerEvent});
    $self->assert_equals(JSON::true, $capas->{mayCreateCalendar});
    $self->assert_num_equals(1, $capas->{maxCalendarsPerEvent});

    $capas = $session->{accounts}{cassandane}{accountCapabilities}{'urn:ietf:params:jmap:principals'};
    $self->assert_not_null($capas);
    $self->assert_str_equals('cassandane', $capas->{currentUserPrincipalId});
    $self->assert_str_equals('cassandane',
        $capas->{'urn:ietf:params:jmap:calendars'}{accountId});
    $self->assert_equals(JSON::true,
        $capas->{'urn:ietf:params:jmap:calendars'}{mayGetAvailability});
    $self->assert_not_null($capas->{'urn:ietf:params:jmap:calendars'}{sendTo});

    $capas = $session->{accounts}{cassandane}{accountCapabilities}{'urn:ietf:params:jmap:principals:owner'};
    $self->assert_not_null($capas);
    $self->assert_str_equals('cassandane', $capas->{accountIdForPrincipal});
    $self->assert_str_equals('cassandane', $capas->{principalId});
}
