/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.camel.component.google.calendar; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.TimeZone; import com.google.api.client.util.DateTime; import com.google.api.services.calendar.model.Event; import com.google.api.services.calendar.model.EventAttendee; import com.google.api.services.calendar.model.EventDateTime; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.google.calendar.internal.CalendarEventsApiMethod; import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiCollection; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Test class for {@link com.google.api.services.calendar.Calendar$Events} APIs. */ public class CalendarEventsIntegrationTest extends AbstractGoogleCalendarTestSupport { private static final Logger LOG = LoggerFactory.getLogger(CalendarEventsIntegrationTest.class); private static final String PATH_PREFIX = GoogleCalendarApiCollection.getCollection().getApiName(CalendarEventsApiMethod.class).getName(); @Test public void testInsert() throws Exception { Event event = new Event(); event.setSummary("Feed the Camel"); event.setLocation("Somewhere"); ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>(); attendees.add(new EventAttendee().setEmail("camel-google-calendar.janstey@gmail.com")); event.setAttendees(attendees); Date startDate = new Date(); Date endDate = new Date(startDate.getTime() + 3600000); DateTime start = new DateTime(startDate, TimeZone.getTimeZone("UTC")); event.setStart(new EventDateTime().setDateTime(start)); DateTime end = new DateTime(endDate, TimeZone.getTimeZone("UTC")); event.setEnd(new EventDateTime().setDateTime(end)); final Map<String, Object> headers = new HashMap<String, Object>(); // parameter type is String headers.put("CamelGoogleCalendar.calendarId", getCalendar().getId()); // parameter type is com.google.api.services.calendar.model.Event headers.put("CamelGoogleCalendar.content", event); final com.google.api.services.calendar.model.Event result = requestBodyAndHeaders("direct://INSERT", null, headers); assertEquals("Feed the Camel", result.getSummary()); LOG.debug("insert: " + result); } @Test public void testManipulatingAnEvent() throws Exception { // Add an event Map<String, Object> headers = new HashMap<String, Object>(); // parameter type is String headers.put("CamelGoogleCalendar.calendarId", getCalendar().getId()); // parameter type is String headers.put("CamelGoogleCalendar.text", "Feed the Camel"); com.google.api.services.calendar.model.Event result = requestBodyAndHeaders("direct://QUICKADD", null, headers); assertNotNull("quickAdd result", result); // Check if it is in the list of events for this calendar com.google.api.services.calendar.model.Events events = requestBody("direct://LIST", getCalendar().getId()); Event item = events.getItems().get(0); String eventId = item.getId(); assertEquals("Feed the Camel", item.getSummary()); // Get the event metadata headers = new HashMap<String, Object>(); // parameter type is String headers.put("CamelGoogleCalendar.calendarId", getCalendar().getId()); // parameter type is String headers.put("CamelGoogleCalendar.eventId", eventId); result = requestBodyAndHeaders("direct://GET", null, headers); assertEquals("Feed the Camel", result.getSummary()); // Change the event result.setSummary("Feed the Camel later"); // parameter type is com.google.api.services.calendar.model.Event headers.put("CamelGoogleCalendar.content", result); Event newResult = requestBodyAndHeaders("direct://UPDATE", null, headers); assertEquals("Feed the Camel later", newResult.getSummary()); // Delete the event headers = new HashMap<String, Object>(); // parameter type is String headers.put("CamelGoogleCalendar.calendarId", getCalendar().getId()); // parameter type is String headers.put("CamelGoogleCalendar.eventId", eventId); result = requestBodyAndHeaders("direct://DELETE", null, headers); // Check if it is NOT in the list of events for this calendar events = requestBody("direct://LIST", getCalendar().getId()); assertEquals(0, events.getItems().size()); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() { // test route for calendarImport from("direct://CALENDARIMPORT").to("google-calendar://" + PATH_PREFIX + "/calendarImport"); // test route for delete from("direct://DELETE").to("google-calendar://" + PATH_PREFIX + "/delete"); // test route for get from("direct://GET").to("google-calendar://" + PATH_PREFIX + "/get"); // test route for insert from("direct://INSERT").to("google-calendar://" + PATH_PREFIX + "/insert"); // test route for instances from("direct://INSTANCES").to("google-calendar://" + PATH_PREFIX + "/instances"); // test route for list from("direct://LIST").to("google-calendar://" + PATH_PREFIX + "/list?inBody=calendarId"); // test route for move from("direct://MOVE").to("google-calendar://" + PATH_PREFIX + "/move"); // test route for patch from("direct://PATCH").to("google-calendar://" + PATH_PREFIX + "/patch"); // test route for quickAdd from("direct://QUICKADD").to("google-calendar://" + PATH_PREFIX + "/quickAdd"); // test route for update from("direct://UPDATE").to("google-calendar://" + PATH_PREFIX + "/update"); // test route for watch from("direct://WATCH").to("google-calendar://" + PATH_PREFIX + "/watch"); } }; } }