diff --git a/services/groupware/pkg/groupware/groupware_mock_calendars.go b/services/groupware/pkg/groupware/groupware_mock_calendars.go deleted file mode 100644 index f48439e41..000000000 --- a/services/groupware/pkg/groupware/groupware_mock_calendars.go +++ /dev/null @@ -1,252 +0,0 @@ -package groupware - -import ( - "github.com/opencloud-eu/opencloud/pkg/jmap" - "github.com/opencloud-eu/opencloud/pkg/jscalendar" -) - -var C1 = jmap.Calendar{ - Id: "thoo5she", - Name: "Personal Calendar", - Description: "Camina Drummer's Personal Calendar", - Color: "purple", - SortOrder: 1, - IsSubscribed: true, - IsVisible: true, - IsDefault: true, - IncludeInAvailability: jmap.IncludeInAvailabilityAll, - DefaultAlertsWithTime: map[string]jscalendar.Alert{ - "eing7doh": { - Type: jscalendar.AlertType, - Trigger: jscalendar.AbsoluteTrigger{ - Type: jscalendar.AbsoluteTriggerType, - When: mustParseTime("2025-09-30T20:34:12Z"), - }, - }, - }, - DefaultAlertsWithoutTime: map[string]jscalendar.Alert{ - "oayooy0u": { - Type: jscalendar.AlertType, - Trigger: jscalendar.OffsetTrigger{ - Type: jscalendar.OffsetTriggerType, - Offset: "PT5M", - RelativeTo: jscalendar.RelativeToStart, - }, - }, - }, - TimeZone: "CEST", - ShareWith: map[string]jmap.CalendarRights{ - "ahn0doo8": { - MayReadFreeBusy: true, - MayReadItems: true, - MayWriteAll: true, - MayWriteOwn: true, - MayUpdatePrivate: true, - MayRSVP: false, - MayAdmin: false, - MayDelete: false, - }, - }, - MyRights: &jmap.CalendarRights{ - MayReadFreeBusy: true, - MayReadItems: true, - MayWriteAll: false, - MayWriteOwn: false, - MayUpdatePrivate: true, - MayRSVP: true, - MayAdmin: false, - MayDelete: false, - }, -} - -var AllCalendars = []jmap.Calendar{C1} - -var E1 = jmap.CalendarEvent{ - Id: "ovei9oqu", - CalendarIds: map[string]bool{ - C1.Id: true, - }, - BaseEventId: "ahtah9qu", - IsDraft: true, - IsOrigin: true, - UtcStart: jmap.UTCDate{Time: mustParseTime("2025-10-01T00:00:00Z")}, - UtcEnd: jmap.UTCDate{Time: mustParseTime("2025-10-07T00:00:00Z")}, - Event: jscalendar.Event{ - Type: jscalendar.EventType, - Start: jscalendar.LocalDateTime("2025-09-30T12:00:00"), - Duration: "PT30M", - Status: jscalendar.StatusConfirmed, - Object: jscalendar.Object{ - CommonObject: jscalendar.CommonObject{ - Uid: "9a7ab91a-edca-4988-886f-25e00743430d", - ProdId: "Mock 0.0", - Created: "2025-09-29T16:17:18", - Updated: "2025-09-29T16:17:18", - Title: "Meeting of the Minds", - Description: "Internal meeting about the grand strategy for the future", - DescriptionContentType: "text/plain", - Links: map[string]jscalendar.Link{ - "cai0thoh": { - Type: jscalendar.LinkType, - Href: "https://example.com/9a7ab91a-edca-4988-886f-25e00743430d", - Rel: jscalendar.RelAbout, - ContentType: "text/html", - }, - }, - Locale: "en-US", - Keywords: map[string]bool{ - "meeting": true, - "secret": true, - }, - Categories: map[string]bool{ - "secret": true, - "internal": true, - }, - Color: "purple", - }, - RelatedTo: map[string]jscalendar.Relation{}, - Sequence: 0, - ShowWithoutTime: false, - Locations: map[string]jscalendar.Location{ - "ux1uokie": { - Type: jscalendar.LocationType, - Name: "office", - Description: "Office meeting room upstairs", - LocationTypes: map[jscalendar.LocationTypeOption]bool{ - jscalendar.LocationTypeOptionOffice: true, - }, - Coordinates: "geo:52.5334956,13.4079872", - Links: map[string]jscalendar.Link{ - "eefe2pax": { - Type: jscalendar.LinkType, - Href: "https://example.com/office", - }, - }, - }, - }, - VirtualLocations: map[string]jscalendar.VirtualLocation{ - "em4eal0o": { - Type: jscalendar.VirtualLocationType, - Name: "opentalk", - Description: "The opentalk Conference Room", - Uri: "https://meet.opentalk.eu", - Features: map[jscalendar.VirtualLocationFeature]bool{ - jscalendar.VirtualLocationFeatureAudio: true, - jscalendar.VirtualLocationFeatureChat: true, - jscalendar.VirtualLocationFeatureVideo: true, - jscalendar.VirtualLocationFeatureScreen: true, - }, - }, - }, - RecurrenceRule: &jscalendar.RecurrenceRule{ - Type: jscalendar.RecurrenceRuleType, - Frequency: jscalendar.FrequencyWeekly, - Interval: 1, - Rscale: jscalendar.RscaleIso8601, - Skip: jscalendar.SkipOmit, - FirstDayOfWeek: jscalendar.DayOfWeekMonday, - Count: 4, - }, - FreeBusyStatus: jscalendar.FreeBusyStatusBusy, - Privacy: jscalendar.PrivacyPublic, - ReplyTo: map[jscalendar.ReplyMethod]string{ - jscalendar.ReplyMethodImip: "mailto:organizer@example.com", - }, - SentBy: "organizer@example.com", - Participants: map[string]jscalendar.Participant{ - "eegh7uph": { - Type: jscalendar.ParticipantType, - Name: "Anderson Dawes", - Email: "adawes@opa.org", - Description: "Called the meeting", - SendTo: map[jscalendar.SendToMethod]string{ - jscalendar.SendToMethodImip: "mailto:adawes@opa.org", - }, - Kind: jscalendar.ParticipantKindIndividual, - Roles: map[jscalendar.Role]bool{ - jscalendar.RoleAttendee: true, - jscalendar.RoleChair: true, - jscalendar.RoleOwner: true, - }, - LocationId: "ux1uokie", - Language: "en-GB", - ParticipationStatus: jscalendar.ParticipationStatusAccepted, - ParticipationComment: "I'll be there for sure", - ExpectReply: true, - ScheduleAgent: jscalendar.ScheduleAgentServer, - ScheduleSequence: 1, - ScheduleStatus: []string{"1.0"}, - ScheduleUpdated: mustParseTime("2025-10-01T11:59:12Z"), - SentBy: "adawes@opa.org", - InvitedBy: "eegh7uph", - Links: map[string]jscalendar.Link{ - "ieni5eiw": { - Type: jscalendar.LinkType, - Href: "https://static.wikia.nocookie.net/expanse/images/1/1e/OPA_leader.png/revision/latest?cb=20250121103410", - ContentType: "image/png", - Rel: jscalendar.RelIcon, - Size: 192812, - Display: jscalendar.DisplayBadge, - Title: "Anderson Dawes' photo", - }, - }, - ScheduleId: "mailto:adawes@opa.org", - }, - "xeikie9p": { - Type: jscalendar.ParticipantType, - Name: "Klaes Ashford", - Email: "ashford@opa.org", - Description: "As the first officer on the Behemoth", - SendTo: map[jscalendar.SendToMethod]string{ - jscalendar.SendToMethodImip: "mailto:ashford@opa.org", - jscalendar.SendToMethodOther: "https://behemoth.example.com/ping/@ashford", - }, - Kind: jscalendar.ParticipantKindIndividual, - Roles: map[jscalendar.Role]bool{ - jscalendar.RoleAttendee: true, - }, - LocationId: "em4eal0o", - Language: "en-GB", - ParticipationStatus: jscalendar.ParticipationStatusNeedsAction, - ExpectReply: true, - ScheduleAgent: jscalendar.ScheduleAgentServer, - ScheduleSequence: 0, - SentBy: "adawes@opa.org", - InvitedBy: "eegh7uph", - Links: map[string]jscalendar.Link{ - "oifooj6g": { - Type: jscalendar.LinkType, - Href: "https://static.wikia.nocookie.net/expanse/images/0/02/Klaes_Ashford_-_Expanse_season_4_promotional_2.png/revision/latest?cb=20191206012007", - ContentType: "image/png", - Rel: jscalendar.RelIcon, - Size: 201291, - Display: jscalendar.DisplayBadge, - Title: "Ashford on Medina Station", - }, - }, - ScheduleId: "mailto:ashford@opa.org", - }, - }, - Alerts: map[string]jscalendar.Alert{ - "ahqu4xi0": { - Type: jscalendar.AlertType, - Trigger: jscalendar.OffsetTrigger{ - Type: jscalendar.OffsetTriggerType, - Offset: "PT-5M", - RelativeTo: jscalendar.RelativeToStart, - }, - }, - }, - TimeZone: "UTC", - MayInviteSelf: true, - MayInviteOthers: true, - HideAttendees: false, - }, - }, -} - -var EventsMapByCalendarId = map[string][]jmap.CalendarEvent{ - C1.Id: { - E1, - }, -} diff --git a/services/groupware/pkg/groupware/groupware_mock_contacts.go b/services/groupware/pkg/groupware/groupware_mock_contacts.go deleted file mode 100644 index dfdc436b6..000000000 --- a/services/groupware/pkg/groupware/groupware_mock_contacts.go +++ /dev/null @@ -1,568 +0,0 @@ -package groupware - -import ( - "time" - - "github.com/opencloud-eu/opencloud/pkg/jmap" - "github.com/opencloud-eu/opencloud/pkg/jscontact" -) - -func mustParseTime(text string) time.Time { - t, err := time.Parse(time.RFC3339, text) - if err != nil { - panic(err) - } - return t -} - -var A1 = jmap.AddressBook{ - Id: "a1", - Name: "Contacts", - Description: "Your good old personal address book", - SortOrder: 1, - IsDefault: true, - IsSubscribed: true, - MyRights: jmap.AddressBookRights{ - MayRead: true, - MayWrite: true, - MayAdmin: true, - MayDelete: true, - }, -} - -var A2 = jmap.AddressBook{ - Id: "a2", - Name: "Collected Contacts", - Description: "This address book contains the contacts that were collected when sending and receiving emails", - SortOrder: 10, - IsDefault: false, - IsSubscribed: true, - MyRights: jmap.AddressBookRights{ - MayRead: true, - MayWrite: false, - MayAdmin: false, - MayDelete: false, - }, -} - -var CaminaDrummerContact = jscontact.ContactCard{ - Type: jscontact.ContactCardType, - Id: "cc1", - AddressBookIds: map[string]bool{ - A1.Id: true, - A2.Id: true, - }, - Version: jscontact.JSContactVersion_1_0, - Created: mustParseTime("2025-09-30T11:00:12Z").UTC(), - Updated: mustParseTime("2025-09-30T11:00:12Z").UTC(), - Kind: jscontact.ContactCardKindIndividual, - Language: "en-GB", - ProdId: "Mock 0.0", - Uid: "e8317f89-2a09-481d-8ce5-de3ab968dc63", - Name: &jscontact.Name{ - Type: jscontact.NameType, - Components: []jscontact.NameComponent{ - { - Type: jscontact.NameComponentType, - Kind: jscontact.NameComponentKindGiven, - Value: "Camina", - }, - { - Type: jscontact.NameComponentType, - Kind: jscontact.NameComponentKindSurname, - Value: "Drummer", - }, - }, - IsOrdered: true, - DefaultSeparator: " ", - Full: "Camina Drummer", - }, - Nicknames: map[string]jscontact.Nickname{ - "n1": { - Type: jscontact.NicknameType, - Name: "Bosmang", - Contexts: map[jscontact.NicknameContext]bool{ - jscontact.NicknameContextWork: true, - }, - Pref: 1, - }, - }, - Organizations: map[string]jscontact.Organization{ - "o1": { - Type: jscontact.OrganizationType, - Name: "Outer Planets Alliance", - SortAs: "OPA", - Contexts: map[jscontact.OrganizationContext]bool{ - jscontact.OrganizationContextWork: true, - }, - }, - }, - SpeakToAs: &jscontact.SpeakToAs{ - Type: jscontact.SpeakToAsType, - GrammaticalGender: jscontact.GrammaticalGenderFeminine, - Pronouns: map[string]jscontact.Pronouns{ - "p1": { - Type: jscontact.PronounsType, - Pronouns: "she/her", - Contexts: map[jscontact.PronounsContext]bool{ - jscontact.PronounsContextPrivate: true, - }, - Pref: 1, - }, - }, - }, - Titles: map[string]jscontact.Title{ - "t1": { - Type: jscontact.TitleType, - Name: "Bosmang", - Kind: jscontact.TitleKindTitle, - OrganizationId: "o1", - }, - }, - Emails: map[string]jscontact.EmailAddress{ - "e1": { - Type: jscontact.EmailAddressType, - Address: "cdrummer@opa.org", - Contexts: map[jscontact.EmailAddressContext]bool{ - jscontact.EmailAddressContextWork: true, - jscontact.EmailAddressContextPrivate: true, - }, - Pref: 10, - Label: "opa", - }, - "e2": { - Type: jscontact.EmailAddressType, - Address: "camina.drummer@ceres.net", - Contexts: map[jscontact.EmailAddressContext]bool{ - jscontact.EmailAddressContextPrivate: true, - }, - Pref: 20, - }, - }, - OnlineServices: map[string]jscontact.OnlineService{ - "s1": { - Type: jscontact.OnlineServiceType, - Service: "Ring Network", - Uri: "https://ring.example.com/contact/@cdrummer", - User: "@cdrummer18219", - Contexts: map[jscontact.OnlineServiceContext]bool{ - jscontact.OnlineServiceContextPrivate: true, - jscontact.OnlineServiceContextWork: true, - }, - Label: "ring", - }, - }, - Phones: map[string]jscontact.Phone{ - "p1": { - Type: jscontact.PhoneType, - Number: "+1-999-555-1234", - Features: map[jscontact.PhoneFeature]bool{ - jscontact.PhoneFeatureMainNumber: true, - jscontact.PhoneFeatureMobile: true, - jscontact.PhoneFeatureVoice: true, - jscontact.PhoneFeatureText: true, - jscontact.PhoneFeatureVideo: true, - }, - Contexts: map[jscontact.PhoneContext]bool{ - jscontact.PhoneContextPrivate: true, - jscontact.PhoneContextWork: true, - }, - Pref: 1, - Label: "main", - }, - }, - PreferredLanguages: map[string]jscontact.LanguagePref{ - "en": { - Type: jscontact.LanguagePrefType, - Language: "en-GB", - Contexts: map[jscontact.LanguagePrefContext]bool{ - jscontact.LanguagePrefContextPrivate: true, - jscontact.LanguagePrefContextWork: true, - }, - }, - }, - Calendars: map[string]jscontact.Calendar{ - "c1": { - Type: jscontact.CalendarType, - Kind: jscontact.CalendarKindCalendar, - Uri: "https://ceres.org/calendars/@cdrummer/c1", - MediaType: "application/jscontact+json", - Contexts: map[jscontact.CalendarContext]bool{ - jscontact.CalendarContextPrivate: true, - jscontact.CalendarContextWork: true, - }, - Pref: 1, - Label: "main", - }, - }, - SchedulingAddresses: map[string]jscontact.SchedulingAddress{ - "sa1": { - Type: jscontact.SchedulingAddressType, - Uri: "https://scheduling.example.com/@cdrummer/c1", - Contexts: map[jscontact.SchedulingAddressContext]bool{ - jscontact.SchedulingAddressContextPrivate: true, - jscontact.SchedulingAddressContextWork: true, - }, - Pref: 1, - Label: "main", - }, - }, - Addresses: map[string]jscontact.Address{ - "ad1": { - Type: jscontact.AddressType, - Components: []jscontact.AddressComponent{ - { - Kind: jscontact.AddressComponentKindNumber, - Value: "12", - }, - { - Kind: jscontact.AddressComponentKindSeparator, - Value: " ", - }, - { - Kind: jscontact.AddressComponentKindName, - Value: "Gravity Street", - }, - { - Kind: jscontact.AddressComponentKindLocality, - Value: "Medina Station", - }, - { - Kind: jscontact.AddressComponentKindRegion, - Value: "Outer Belt", - }, - { - Kind: jscontact.AddressComponentKindSeparator, - Value: " ", - }, - { - Kind: jscontact.AddressComponentKindPostcode, - Value: "618291", - }, - { - Kind: jscontact.AddressComponentKindCountry, - Value: "Sol", - }, - }, - IsOrdered: true, - DefaultSeparator: ", ", - CountryCode: "SOL", - Coordinates: "geo:43.6466107,-79.3889872", - TimeZone: "EDT", - Contexts: map[jscontact.AddressContext]bool{ - jscontact.AddressContextDelivery: true, - jscontact.AddressContextWork: true, - }, - Full: "12 Gravity Street, Medina Station, Outer Belt 618291, Sol", - Pref: 1, - }, - }, - CryptoKeys: map[string]jscontact.CryptoKey{ - "k1": { - Type: jscontact.CryptoKeyType, - Uri: "https://opa.org/keys/@cdrummer.gpg", - MediaType: "application/pgp-keys", - Contexts: map[jscontact.CryptoKeyContext]bool{ - jscontact.CryptoKeyContextPrivate: true, - jscontact.CryptoKeyContextWork: true, - }, - Pref: 10, - Label: "opa", - }, - }, - Directories: map[string]jscontact.Directory{ - "d1": { - Type: jscontact.DirectoryType, - Kind: jscontact.DirectoryKindEntry, - Uri: "https://directory.opa.org/addrbook/cdrummer/Camina%20Drummer.vcf", - MediaType: "text/vcard", - }, - "d2": { - Type: jscontact.DirectoryType, - Kind: jscontact.DirectoryKindDirectory, - Uri: "ldap://ldap.opa.org/o=OPA,ou=Bosmangs", - Pref: 1, - }, - }, - Links: map[string]jscontact.Link{ - "l1": { - Type: jscontact.LinkType, - Kind: jscontact.LinkKindContact, - Uri: "mailto:contact@opa.org", - Pref: 1, - }, - }, - Media: map[string]jscontact.Media{ - "m1": { - Type: jscontact.MediaType, - Kind: jscontact.MediaKindPhoto, - Uri: "https://static.wikia.nocookie.net/expanse/images/c/c7/Tycho-stn-14.png/revision/latest/scale-to-width-down/1000?cb=20170225140521", - MediaType: "image/png", - }, - }, - Anniversaries: map[string]jscontact.Anniversary{ - "an1": { - Type: jscontact.AnniversaryType, - Kind: jscontact.AnniversaryKindBirth, - Date: jscontact.PartialDate{ - Type: jscontact.PartialDateType, - Year: 1983, - Month: 7, - Day: 18, - CalendarScale: jscontact.RscaleIso8601, - }, - }, - }, - Keywords: map[string]bool{ - "bosmang": true, - "opa": true, - "tycho": true, - "rebel": true, - }, - PersonalInfo: map[string]jscontact.PersonalInfo{ - "p1": { - Type: jscontact.PersonalInfoType, - Kind: jscontact.PersonalInfoKindExpertise, - Value: "loyalty", - Level: jscontact.PersonalInfoLevelHigh, - }, - }, - Notes: map[string]jscontact.Note{ - "n1": { - Type: jscontact.NoteType, - Created: mustParseTime("2025-09-30T11:00:12Z").UTC(), - Author: &jscontact.Author{ - Type: jscontact.AuthorType, - Name: "expanse.fandom.com", - Uri: "https://expanse.fandom.com/wiki/Camina_Drummer_(TV)", - }, - Note: "Cammina Drummer is a strong-willed, pragmatic, and no-nonsense Belter captain. Having a strong connection to her roots and her cultural identity, Drummer is a Belter through and through: She is resilient and adaptable, treats her crew with respect and equality, and is committed to the Belter way of life, which involves hard work, communal life shared with others, and not taking anything for granted.", - }, - }, -} - -var AndersonDawesContact = jscontact.ContactCard{ - Type: jscontact.ContactCardType, - Id: "cc2", - AddressBookIds: map[string]bool{ - A1.Id: true, - }, - Version: jscontact.JSContactVersion_1_0, - Created: mustParseTime("2025-09-30T11:00:12Z").UTC(), - Updated: mustParseTime("2025-09-30T11:00:12Z").UTC(), - Kind: jscontact.ContactCardKindIndividual, - Language: "en-GB", - ProdId: "Mock 0.0", - Uid: "3c1c478e-ac6c-4c2f-a01d-5e528015958d", - Name: &jscontact.Name{ - Type: jscontact.NameType, - Components: []jscontact.NameComponent{ - { - Type: jscontact.NameComponentType, - Kind: jscontact.NameComponentKindGiven, - Value: "Anderson", - }, - { - Type: jscontact.NameComponentType, - Kind: jscontact.NameComponentKindSurname, - Value: "Dawes", - }, - }, - IsOrdered: true, - DefaultSeparator: " ", - Full: "Anderson Dawes", - }, - Organizations: map[string]jscontact.Organization{ - "o1": { - Type: jscontact.OrganizationType, - Name: "Outer Planets Alliance", - SortAs: "OPA", - Contexts: map[jscontact.OrganizationContext]bool{ - jscontact.OrganizationContextWork: true, - }, - }, - }, - SpeakToAs: &jscontact.SpeakToAs{ - Type: jscontact.SpeakToAsType, - GrammaticalGender: jscontact.GrammaticalGenderMasculine, - Pronouns: map[string]jscontact.Pronouns{ - "p1": { - Type: jscontact.PronounsType, - Pronouns: "he/him", - Contexts: map[jscontact.PronounsContext]bool{ - jscontact.PronounsContextPrivate: true, - }, - Pref: 1, - }, - }, - }, - Titles: map[string]jscontact.Title{ - "t1": { - Type: jscontact.TitleType, - Name: "President", - Kind: jscontact.TitleKindRole, - OrganizationId: "o1", - }, - }, - Emails: map[string]jscontact.EmailAddress{ - "e1": { - Type: jscontact.EmailAddressType, - Address: "adawes@opa.org", - Contexts: map[jscontact.EmailAddressContext]bool{ - jscontact.EmailAddressContextWork: true, - jscontact.EmailAddressContextPrivate: true, - }, - Pref: 10, - Label: "opa", - }, - }, - OnlineServices: map[string]jscontact.OnlineService{ - "s1": { - Type: jscontact.OnlineServiceType, - Service: "Ring Network", - Uri: "https://ring.example.com/contact/@adawes", - User: "@anderson.1882", - Contexts: map[jscontact.OnlineServiceContext]bool{ - jscontact.OnlineServiceContextPrivate: true, - jscontact.OnlineServiceContextWork: true, - }, - Label: "ring", - }, - }, - Phones: map[string]jscontact.Phone{ - "p1": { - Type: jscontact.PhoneType, - Number: "+1-999-555-5678", - Features: map[jscontact.PhoneFeature]bool{ - jscontact.PhoneFeatureMainNumber: true, - jscontact.PhoneFeatureMobile: true, - jscontact.PhoneFeatureVoice: true, - }, - Contexts: map[jscontact.PhoneContext]bool{ - jscontact.PhoneContextPrivate: true, - jscontact.PhoneContextWork: true, - }, - }, - }, - PreferredLanguages: map[string]jscontact.LanguagePref{ - "en": { - Type: jscontact.LanguagePrefType, - Language: "en-GB", - Contexts: map[jscontact.LanguagePrefContext]bool{ - jscontact.LanguagePrefContextPrivate: true, - jscontact.LanguagePrefContextWork: true, - }, - }, - }, - Calendars: map[string]jscontact.Calendar{ - "c5": { - Type: jscontact.CalendarType, - Kind: jscontact.CalendarKindCalendar, - Uri: "https://ceres.org/calendars/@adawes/c5", - MediaType: "application/jscontact+json", - Contexts: map[jscontact.CalendarContext]bool{ - jscontact.CalendarContextPrivate: true, - jscontact.CalendarContextWork: true, - }, - }, - }, - SchedulingAddresses: map[string]jscontact.SchedulingAddress{ - "sa1": { - Type: jscontact.SchedulingAddressType, - Uri: "mailto:adawes@opa.org", - Contexts: map[jscontact.SchedulingAddressContext]bool{ - jscontact.SchedulingAddressContextPrivate: true, - jscontact.SchedulingAddressContextWork: true, - }, - }, - }, - Addresses: map[string]jscontact.Address{ - "ad1": { - Type: jscontact.AddressType, - Components: []jscontact.AddressComponent{ - { - Kind: jscontact.AddressComponentKindNumber, - Value: "9218", - }, - { - Kind: jscontact.AddressComponentKindSeparator, - Value: " ", - }, - { - Kind: jscontact.AddressComponentKindName, - Value: "Main Street", - }, - { - Kind: jscontact.AddressComponentKindLocality, - Value: "Ceres Station", - }, - { - Kind: jscontact.AddressComponentKindSeparator, - Value: " ", - }, - { - Kind: jscontact.AddressComponentKindPostcode, - Value: "87A", - }, - { - Kind: jscontact.AddressComponentKindCountry, - Value: "Ceres", - }, - }, - IsOrdered: true, - DefaultSeparator: ", ", - CountryCode: "CRS", - Coordinates: "geo:43.6466107,-79.3889872", - TimeZone: "EDT", - Contexts: map[jscontact.AddressContext]bool{ - jscontact.AddressContextWork: true, - }, - }, - }, - CryptoKeys: map[string]jscontact.CryptoKey{ - "k1": { - Type: jscontact.CryptoKeyType, - Uri: "https://opa.org/keys/@adawes.gpg", - MediaType: "application/pgp-keys", - Contexts: map[jscontact.CryptoKeyContext]bool{ - jscontact.CryptoKeyContextPrivate: true, - jscontact.CryptoKeyContextWork: true, - }, - }, - }, - Media: map[string]jscontact.Media{ - "m1": { - Type: jscontact.MediaType, - Kind: jscontact.MediaKindPhoto, - Uri: "https://static.wikia.nocookie.net/expanse/images/0/0b/S02E07-JaredHarris_as_AndersonDawes_01c.jpg/revision/latest?cb=20170621040250", - MediaType: "image/png", - }, - }, - Anniversaries: map[string]jscontact.Anniversary{ - "an1": { - Type: jscontact.AnniversaryType, - Kind: jscontact.AnniversaryKindBirth, - Date: jscontact.Timestamp{ - Type: jscontact.TimestampType, - Utc: mustParseTime("1961-08-24T00:00:00Z"), - }, - }, - }, - Keywords: map[string]bool{ - "opa": true, - "ceres": true, - "rebel": true, - }, -} - -var AllAddressBooks = []jmap.AddressBook{A1, A2} - -var ContactsMapByAddressBookId = map[string][]jscontact.ContactCard{ - A1.Id: { - CaminaDrummerContact, - AndersonDawesContact, - }, - A2.Id: { - CaminaDrummerContact, - }, -} diff --git a/services/groupware/pkg/groupware/groupware_mock_tasks.go b/services/groupware/pkg/groupware/groupware_mock_tasks.go index 6c984ecad..aac805709 100644 --- a/services/groupware/pkg/groupware/groupware_mock_tasks.go +++ b/services/groupware/pkg/groupware/groupware_mock_tasks.go @@ -1,6 +1,8 @@ package groupware import ( + "time" + "github.com/opencloud-eu/opencloud/pkg/jmap" "github.com/opencloud-eu/opencloud/pkg/jscalendar" ) @@ -203,3 +205,11 @@ var TaskMapByTaskListId = map[string][]jmap.Task{ T1, }, } + +func mustParseTime(text string) time.Time { + t, err := time.Parse(time.RFC3339, text) + if err != nil { + panic(err) + } + return t +}