//  [Ignore] // - this test requires user interaction
        public async Task DeleteCalendar()
        {
            var auth = new GoogleOAuth2("email profile https://www.googleapis.com/auth/calendar");

            _token = await auth.Authenticate(_token);

            Assert.IsNotNull(_token, "auth failed");

            using (var client = new HttpClient(MockInitialization.Handler, false))
            {
                client.BaseAddress = new Uri("https://www.googleapis.com/calendar/v3/");
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth", _token);

                using (dynamic proxy = new DynamicRestClient(client))
                {
                    var list = await proxy.users.me.calendarList.get();

                    Assert.IsNotNull(list);

                    string id = ((IEnumerable <dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => cal.id).FirstOrDefault();
                    Assert.IsFalse(string.IsNullOrEmpty(id), "calendar does not exist so we can't delete it");

                    var result = await proxy.calendars(id).delete();

                    Assert.IsNull(result);

                    //var list2 = await proxy.users.me.calendarList.get();
                    //Assert.IsNotNull(list2);
                    //var id2 = ((IEnumerable<dynamic>)(list2.items)).Where(cal => cal.summary == "unit_testing").Select(cal => (string)cal.id).FirstOrDefault();

                    //Assert.IsTrue(string.IsNullOrEmpty(id2), "calendar seems to have not been deleted");
                }
            }
        }
        //  [Ignore] // - this test requires user interaction
        public async Task UpdateCalendar()
        {
            var auth = new GoogleOAuth2("email profile https://www.googleapis.com/auth/calendar");

            _token = await auth.Authenticate(_token);

            Assert.IsNotNull(_token, "auth failed");

            using (var client = new HttpClient(MockInitialization.Handler, false))
            {
                client.BaseAddress = new Uri("https://www.googleapis.com/calendar/v3/");
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth", _token);

                using (dynamic proxy = new DynamicRestClient(client))
                {
                    var list = await proxy.users.me.calendarList.get();

                    Assert.IsNotNull(list);

                    string id = ((IEnumerable <dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => cal.id).FirstOrDefault();
                    Assert.IsFalse(string.IsNullOrEmpty(id));

                    var     guid     = Guid.NewGuid().ToString();
                    dynamic calendar = new ExpandoObject();
                    calendar.summary     = "unit_testing";
                    calendar.description = guid;

                    var result = await proxy.calendars(id).put(calendar);

                    Assert.IsNotNull(result);

                    list = await proxy.users.me.calendarList.get();

                    Assert.IsNotNull(list);
                    string description = ((IEnumerable <dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => cal.description).FirstOrDefault();

                    Assert.AreEqual(guid, description);
                }
            }
        }
        //  [Ignore] // - this test requires user interaction
        public async Task DeleteCalendar()
        {
            var auth = new GoogleOAuth2("email profile https://www.googleapis.com/auth/calendar");
            _token = await auth.Authenticate(_token);
            Assert.IsNotNull(_token, "auth failed");

            using (var client = new HttpClient(MockInitialization.Handler, false))
            {
                client.BaseAddress = new Uri("https://www.googleapis.com/calendar/v3/");
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth", _token);

                using (dynamic proxy = new DynamicRestClient(client))
                {
                    var list = await proxy.users.me.calendarList.get();
                    Assert.IsNotNull(list);

                    string id = ((IEnumerable<dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => cal.id).FirstOrDefault();
                    Assert.IsFalse(string.IsNullOrEmpty(id), "calendar does not exist so we can't delete it");

                    var result = await proxy.calendars(id).delete();
                    Assert.IsNull(result);

                    //var list2 = await proxy.users.me.calendarList.get();
                    //Assert.IsNotNull(list2);
                    //var id2 = ((IEnumerable<dynamic>)(list2.items)).Where(cal => cal.summary == "unit_testing").Select(cal => (string)cal.id).FirstOrDefault();

                    //Assert.IsTrue(string.IsNullOrEmpty(id2), "calendar seems to have not been deleted");
                }
            }
        }
        //  [Ignore] // - this test requires user interaction
        public async Task UpdateCalendar()
        {
            var auth = new GoogleOAuth2("email profile https://www.googleapis.com/auth/calendar");
            _token = await auth.Authenticate(_token);
            Assert.IsNotNull(_token, "auth failed");

            using (var client = new HttpClient(MockInitialization.Handler, false))
            {
                client.BaseAddress = new Uri("https://www.googleapis.com/calendar/v3/");
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth", _token);

                using (dynamic proxy = new DynamicRestClient(client))
                {
                    var list = await proxy.users.me.calendarList.get();
                    Assert.IsNotNull(list);

                    string id = ((IEnumerable<dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => cal.id).FirstOrDefault();
                    Assert.IsFalse(string.IsNullOrEmpty(id));

                    var guid = Guid.NewGuid().ToString();
                    dynamic calendar = new ExpandoObject();
                    calendar.summary = "unit_testing";
                    calendar.description = guid;

                    var result = await proxy.calendars(id).put(calendar);
                    Assert.IsNotNull(result);

                    list = await proxy.users.me.calendarList.get();
                    Assert.IsNotNull(list);
                    string description = ((IEnumerable<dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => cal.description).FirstOrDefault();

                    Assert.AreEqual(guid, description);
                }
            }
        }