public void AuthorizeCallback_ExistingUser()
        {
            var db = new TestTweetHarborDbContext();
            var ts = new Mock<ITweetHarborTwitterService>();
            string token = Guid.NewGuid().ToString();
            string verifier = Guid.NewGuid().ToString();
            string TestUsername = "******";
            string imageUrl = "http://test.com/image.jpg";

            db.Users.Add(new User()
            {
                DateCreated = DateTime.Now.AddDays(-1),
                TwitterUserName = TestUsername,
                UserProfilePicUrl = "http://oldurl.com"
            });

            ts.Setup<OAuthAccessToken>(a => a.GetAccessToken(It.IsAny<OAuthRequestToken>(), It.IsAny<string>())).Returns(new OAuthAccessToken() { Token = token, TokenSecret = verifier });
            ts.Setup<TwitterUser>(a => a.VerifyCredentials()).Returns(new TwitterUser() { ScreenName = TestUsername, ProfileImageUrl = imageUrl });

            var auth = new Mock<IFormsAuthenticationWrapper>();

            var controller = new AccountController(db, ts.Object, auth.Object);
            controller.SetFakeControllerContext();
            var val = controller.AuthorizeCallback(token, verifier);

            Assert.AreEqual(1, db.Users.Count());
            Assert.AreEqual(token, db.Users.First().OAuthToken);
            Assert.AreEqual(verifier, db.Users.First().OAuthTokenSecret);
            Assert.AreEqual(TestUsername, db.Users.First().TwitterUserName);
            Assert.AreEqual(imageUrl, db.Users.First().UserProfilePicUrl);
        }
        public void AuthorizeCallback_NewUser()
        {
            var db = new TestTweetHarborDbContext();

            var ts = new Mock<ITweetHarborTwitterService>();
            string token = Guid.NewGuid().ToString();
            string verifier = Guid.NewGuid().ToString();
            string TestUsername = "******";

            ts.Setup<OAuthAccessToken>(a => a.GetAccessToken(It.IsAny<OAuthRequestToken>(), It.IsAny<string>())).Returns(new OAuthAccessToken() { Token = token, TokenSecret = verifier });
            ts.Setup<TwitterUser>(a => a.VerifyCredentials()).Returns(new TwitterUser() { ScreenName = TestUsername });

            var auth = new Mock<IFormsAuthenticationWrapper>();

            var controller = new AccountController(db, ts.Object, auth.Object);
            controller.SetFakeControllerContext();
            var val = controller.AuthorizeCallback(token, verifier);

            Assert.AreNotEqual(0, db.Users.Count());
            Assert.AreEqual(token, db.Users.First().OAuthToken);
            Assert.AreEqual(verifier, db.Users.First().OAuthTokenSecret);
            Assert.AreEqual(TestUsername, db.Users.First().TwitterUserName);
        }