Exemplo n.º 1
0
def test_invaliddates_thunderbird_monthly_bymonthday_31th(
        icaltomapi, mapitoical, message):
    # outlook will show the item every month on the last day, caldav every month with 31 days
    # This is a issue?
    ical = open(os.path.join(dir_path, 'issues/ZCP9771-4.ics'), 'rb').read()

    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)
    assert rs.ulRecurFrequency == RS.RF_MONTHLY
    assert rs.ulPeriod == 1
    assert rs.ulPatternType == 2
    assert rs.ulEndType == RS.ET_NEVER
    assert rs.ulDayOfMonth == 31
    assert RS.RTimeToUnixTime(rs.ulStartDate) == 1335744000
    assert rs.ulEndDate == 0x5AE980DF

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    assert method == b'PUBLISH'
    assert b'RRULE:FREQ=MONTHLY;BYMONTHDAY=31' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120430T160000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120430T170000' in ma
Exemplo n.º 2
0
def test_invaliddates_thunderbird_monthly_bymonthday1(icaltomapi, mapitoical,
                                                      message):
    ical = open(os.path.join(dir_path, 'issues/ZCP9771-2.ics'), 'rb').read()

    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    message.SaveChanges(0)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_MONTHLY
    assert rs.ulPeriod == 1
    assert rs.ulPatternType == 2
    assert rs.ulEndType, RS.ET_NEVER
    assert rs.ulDayOfMonth == 22
    assert rs.ulEndDate == 0x5AE980DF
    assert RS.RTimeToUnixTime(rs.ulStartDate) == 1337644800

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    assert method == b'PUBLISH'
    assert b'RRULE:FREQ=MONTHLY;BYMONTHDAY=22' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120522T170000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120522T180000' in ma
Exemplo n.º 3
0
def test_double_occurencehit_2(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'issues/ZCP9143-2.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)
    message.SaveChanges(0)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_DAILY
    assert rs.ulPeriod == 60 * 24
    assert rs.ulPatternType == 0
    assert rs.ulEndType == RS.ET_DATE
    assert rs.ulEndDate == rs.ulStartDate

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    assert method == b'PUBLISH'
    # we write the UNTIL as ((end date + local start time) => GMT), not ((end date + local day end time - 1s) => GMT)
    assert b'RRULE:FREQ=DAILY;UNTIL=20120125T120000' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120125T120000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120125T130000' in ma
Exemplo n.º 4
0
def test_weeklymultidays(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'ics/weekly_multidays.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_WEEKLY
    assert rs.ulPeriod == 1
    assert rs.ulPatternType == 1
    assert rs.ulEndType == RS.ET_NEVER
    assert rs.ulWeekDays == RS.WD_WEDNESDAY | RS.WD_FRIDAY
    # revert
    mapitoical.AddMessage(message, '', 0)
    (method, mical) = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')
    assert b'RRULE:FREQ=WEEKLY;BYDAY=WE,FR' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120127T143000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120127T150000' in ma
Exemplo n.º 5
0
def test_everyotherday_countstop(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'ics/everyotherday_countstop.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_DAILY
    assert rs.ulPeriod == 60*24*2
    assert rs.ulPatternType == 0
    assert rs.ulEndType == RS.ET_NUMBER
    assert rs.ulOccurrenceCount == 7
    assert rs.ulWeekDays == 0

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')
    assert b'RRULE:FREQ=DAILY;COUNT=7;INTERVAL=2' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120127T143000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120127T150000' in ma
Exemplo n.º 6
0
def test_yearly_datestop(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'ics/yearly_datestop.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_YEARLY
    assert rs.ulPeriod == 12
    assert rs.ulPatternType == 2
    assert rs.ulEndType == RS.ET_DATE
    assert rs.ulDayOfMonth == 27

    # revert
    mapitoical.AddMessage(message, '', 0)
    (method, mical) = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    assert b'RRULE:FREQ=YEARLY;UNTIL=20140127T143000;BYMONTHDAY=27;BYMONTH=1' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120127T143000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120127T150000' in ma
Exemplo n.º 7
0
def test_daily(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'ics/daily.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_DAILY
    assert rs.ulPeriod == 60*24
    assert rs.ulPatternType == 0
    assert rs.ulEndType == RS.ET_NEVER
    assert RS.RTimeToUnixTime(rs.ulStartDate) == 1327622400  # @todo, less hard-coded? start_of_day(DTSTART)
    assert rs.ulEndDate == 0x5AE980DF

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')
    assert method == b'PUBLISH'
    assert b'RRULE:FREQ=DAILY' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120127T143000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120127T150000' in ma
Exemplo n.º 8
0
def test_monthly_31th(icaltomapi, mapitoical, message):
    # outlook will show the item every month on the last day, caldav every month with 31 days
    ical = open(os.path.join(dir_path, 'ics/monthly_31th.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_MONTHLY
    assert rs.ulPeriod == 1
    assert rs.ulPatternType == 2
    assert rs.ulEndType == RS.ET_NEVER
    assert rs.ulDayOfMonth == 31

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    assert b'RRULE:FREQ=MONTHLY;BYMONTHDAY=31' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120531T150000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120531T160000' in ma
Exemplo n.º 9
0
def test_monthly(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'ics/monthly.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency, RS.RF_MONTHLY
    assert rs.ulPeriod == 1
    assert rs.ulPatternType == 2
    assert rs.ulEndType == RS.ET_NEVER
    assert rs.ulDayOfMonth == 27

    # revert
    mapitoical.AddMessage(message, '', 0)
    (method, mical) = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    # BYMONTHDAY=27 is being added
    assert b'RRULE:FREQ=MONTHLY;BYMONTHDAY=27' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120127T143000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120127T150000' in ma
Exemplo n.º 10
0
def test_invaliddates_thunderbird_yearly_byday_bymonth6(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'issues/ZCP9771-17.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    message.SaveChanges(0)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_YEARLY
    assert rs.ulPeriod == 12
    assert rs.ulPatternType == 3
    assert rs.ulEndType == RS.ET_NEVER
    assert RS.RTimeToUnixTime(rs.ulStartDate) == 1369785600
    assert rs.ulEndDate == 0x5AE980DF
    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    assert method == b'PUBLISH'
    assert b'RRULE:FREQ=YEARLY;BYDAY=-1WE;BYMONTH=5' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20130529T150000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20130529T160000' in ma
Exemplo n.º 11
0
def test_everyotherweek_datestop(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'ics/everyotherweek_datestop.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_WEEKLY
    assert rs.ulPeriod == 2
    assert rs.ulPatternType == 1
    assert rs.ulEndType == RS.ET_DATE
    assert rs.ulEndDate == 216322560  # recalculated start of day in UNTIL field, in RTime
    assert rs.ulWeekDays == RS.WD_FRIDAY

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    # also contains the BYDAY=FR like above, recalculated to last occurrence: 20 april 2012
    assert b'RRULE:FREQ=WEEKLY;UNTIL=20120420T143000;INTERVAL=2;BYDAY=FR' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120127T143000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120127T150000' in ma
Exemplo n.º 12
0
def test_monthly_bysetpos_byday(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'issues/ZCP10916.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    message.SaveChanges(0)
    rs = getrecurrencestate(blob)
    assert rs.ulRecurFrequency == RS.RF_MONTHLY
    assert rs.ulPeriod == 1
    assert rs.ulPatternType == 3
    assert rs.ulWeekNumber == 1
    assert rs.ulEndType, RS.ET_NEVER
    assert RS.RTimeToUnixTime(rs.ulStartDate) == 1338508800
    assert rs.ulEndDate == 0x5AE980DF

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    assert method == b'PUBLISH'
    assert b'RRULE:FREQ=MONTHLY;BYMONTHDAY=1' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120601T150000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120601T160000' in ma
Exemplo n.º 13
0
def test_invaliddates_thunderbird_monthly_byday3(icaltomapi, mapitoical, message):
    ical = open(os.path.join(dir_path, 'issues/ZCP9771-7.ics'), 'rb').read()
    blob = assert_get_glob_from_ical(icaltomapi, message, ical, 1)
    message.SaveChanges(0)
    rs = getrecurrencestate(blob)

    assert rs.ulRecurFrequency == RS.RF_MONTHLY
    assert rs.ulPeriod == 1
    assert rs.ulPatternType == 3
    assert rs.ulWeekNumber == 4
    assert rs.ulEndType == RS.ET_NUMBER
    assert RS.RTimeToUnixTime(rs.ulStartDate) == 1337817600
    assert RS.RTimeToUnixTime(rs.ulEndDate) == 1343260800

    # revert
    mapitoical.AddMessage(message, '', 0)
    method, mical = mapitoical.Finalize(icalmapi.M2IC_NO_VTIMEZONE)
    ma = mical.split(b'\r\n')

    assert method == b'PUBLISH'
    assert b'RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=4TH' in ma
    assert b'DTSTART;TZID=Europe/Amsterdam:20120524T200000' in ma
    assert b'DTEND;TZID=Europe/Amsterdam:20120524T210000' in ma