public void DeleteFromCache()
        {
            var accountSession = new AccountSession
            {
                ClientId = "1",
                UserId   = "id",
            };

            var mockCacheItem1 = new MockTokenCacheItem();

            mockCacheItem1.Setup(item => item.AccessToken).Returns("token 1");
            mockCacheItem1.Setup(item => item.ClientId).Returns(accountSession.ClientId);
            mockCacheItem1.Setup(item => item.UniqueId).Returns(accountSession.UserId);

            var mockCacheItem2 = new MockTokenCacheItem();

            mockCacheItem2.Setup(item => item.AccessToken).Returns("token 2");
            mockCacheItem2.Setup(item => item.ClientId).Returns(accountSession.ClientId);

            var mockCacheItem3 = new MockTokenCacheItem();

            mockCacheItem3.Setup(item => item.AccessToken).Returns("token 3");
            mockCacheItem3.Setup(item => item.UniqueId).Returns(accountSession.UserId);

            this.tokenCache.Setup(cache => cache.ReadItems())
            .Returns(new List <ITokenCacheItem>
            {
                mockCacheItem1.Object,
                mockCacheItem2.Object,
                mockCacheItem3.Object
            });

            this.tokenCache.Setup(cache => cache.DeleteItem(
                                      It.Is <ITokenCacheItem>(item => string.Equals(accountSession.ClientId, item.ClientId))));

            this.tokenCache.ResetCalls();

            this.credentialCache.DeleteFromCache(accountSession);

            this.tokenCache.Verify(cache =>
                                   cache.DeleteItem(
                                       It.Is <ITokenCacheItem>(item => string.Equals("token 1", item.AccessToken))),
                                   Times.Once, "DeleteItem not called with expected item.");
        }
        public void DeleteFromCache()
        {
            var accountSession = new AccountSession
            {
                ClientId = "1",
                UserId = "id",
            };

            var mockCacheItem1 = new MockTokenCacheItem();
            mockCacheItem1.Setup(item => item.AccessToken).Returns("token 1");
            mockCacheItem1.Setup(item => item.ClientId).Returns(accountSession.ClientId);
            mockCacheItem1.Setup(item => item.UniqueId).Returns(accountSession.UserId);

            var mockCacheItem2 = new MockTokenCacheItem();
            mockCacheItem2.Setup(item => item.AccessToken).Returns("token 2");
            mockCacheItem2.Setup(item => item.ClientId).Returns(accountSession.ClientId);

            var mockCacheItem3 = new MockTokenCacheItem();
            mockCacheItem3.Setup(item => item.AccessToken).Returns("token 3");
            mockCacheItem3.Setup(item => item.UniqueId).Returns(accountSession.UserId);

            this.tokenCache.Setup(cache => cache.ReadItems())
                .Returns(new List<ITokenCacheItem>
                {
                    mockCacheItem1.Object,
                    mockCacheItem2.Object,
                    mockCacheItem3.Object
                });

            this.tokenCache.Setup(cache => cache.DeleteItem(
                It.Is<ITokenCacheItem>(item => string.Equals(accountSession.ClientId, item.ClientId))));

            this.tokenCache.ResetCalls();

            this.credentialCache.DeleteFromCache(accountSession);

            this.tokenCache.Verify(cache => 
                cache.DeleteItem(
                    It.Is<ITokenCacheItem>(item => string.Equals("token 1", item.AccessToken))),
                Times.Once, "DeleteItem not called with expected item.");
        }