public void Cannot_Register_with_null_client() { var sut = new TwitterUserTracker(); var ex = Record.Exception(() => sut.Register(Guid.NewGuid(), null)); ex.Should().BeOfType <ArgumentNullException>(); }
public void Get_Auth_Sign_In_Populates_Twitter_Auth_Link() { //arrange var twitterApi = A.Fake <ITwitterAuthenticatedClient>(); var callBackUrl = new Uri("http://api.faketwitter.com/?foo=bar"); A.CallTo(() => twitterApi.GetAuthorizationUri(A <string> ._)).Returns(callBackUrl); var twitterUserTracker = new TwitterUserTracker(); var bootstrapper = new TestBootstrapper( with => { with.Module <AuthModule>(); with.Dependency <ITwitterAuthenticatedClient>(twitterApi); with.Dependency <ITwitterUserTracker>(twitterUserTracker); }); var browser = new Browser(bootstrapper); //act var response = browser.Get("/auth/signin"); //assert response.StatusCode.Should().Be(HttpStatusCode.OK); response.GetViewName().Should().Be("SignIn"); var authUrl = (Uri)(response.Context.ViewBag.AuthUrl); authUrl.ShouldBeEquivalentTo(callBackUrl); }
protected override void ConfigureApplicationContainer(TinyIoCContainer container) { base.ConfigureApplicationContainer(container); //plug in twitter api var consumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; var consumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"]; var accessToken = ConfigurationManager.AppSettings["AccessToken"]; var accessTokenSecret = ConfigurationManager.AppSettings["AccessTokenSecret"]; var twitterApi = TweetSharpPublicClientAdapter.Create(consumerKey, consumerSecret, accessToken, accessTokenSecret) .GetAwaiter() .GetResult(); // public twitter client singleton container.Register <ITwitterPublicClient>(twitterApi); // factory method for authed twitter client // instantiated on sign in then cached in-mem // for each user container.Register <ITwitterAuthenticatedClient>((_, __) => new TweetSharpAuthenticatedClientAdapter(consumerKey, consumerSecret)); // user tracker singleton // maps session guids to IUserIdentity // retrieves authenticated twitter client for a given user var twitterUserTracker = new TwitterUserTracker(); container.Register <ITwitterUserTracker>(twitterUserTracker); container.Register <IUserMapper>(twitterUserTracker); }
public void Cannot_Register_with_invalid_Guid() { var client = A.Fake <ITwitterAuthenticatedClient>(); var sut = new TwitterUserTracker(); var ex = Record.Exception(() => sut.Register(new Guid(), client)); ex.Should().BeOfType <ArgumentOutOfRangeException>(); }
public void Returns_null_UserIdentity_When_Not_registered() { var context = new NancyContext(); var sut = new TwitterUserTracker(); var result = sut.GetUserFromIdentifier(Guid.NewGuid(), context); result.Should().BeNull(); }
public void When_registered_Can_retrieve_TwitterClient_from_UserId() { const long TwitterUserId = 123L; var sessionid = Guid.NewGuid(); var client = A.Fake <ITwitterAuthenticatedClient>(); A.CallTo(() => client.UserId).Returns(TwitterUserId); var sut = new TwitterUserTracker(); sut.Register(sessionid, client); var result = sut.GetAuthenticatedTwitterClientForUser(TwitterUserId); result.Should().NotBeNull(); result.UserId.Should().Be(TwitterUserId); }
public void Can_register_multiple_sessions_from_the_same_user() { const long TwitterUserId = 123L; var sessionid = Guid.NewGuid(); var secondSessionId = Guid.NewGuid(); var client = A.Fake <ITwitterAuthenticatedClient>(); A.CallTo(() => client.UserId).Returns(TwitterUserId); var sut = new TwitterUserTracker(); sut.Register(sessionid, client); sut.Register(secondSessionId, client); var result = sut.GetAuthenticatedTwitterClientForUser(TwitterUserId); result.Should().NotBeNull(); result.UserId.Should().Be(TwitterUserId); }
public void When_registered_Can_retrieve_UserIdentity_from_Session_Id() { const long TwitterUserId = 123L; var sessionid = Guid.NewGuid(); var client = A.Fake <ITwitterAuthenticatedClient>(); A.CallTo(() => client.UserId).Returns(TwitterUserId); var context = new NancyContext(); var sut = new TwitterUserTracker(); sut.Register(sessionid, client); var user = sut.GetUserFromIdentifier(sessionid, context); user.Should().NotBeNull(); user.Should().BeOfType <TwitterUser>(); user.As <TwitterUser>().TwitterUserId.Should().Be(TwitterUserId); }
public void Unauthenticated_Get_should_return_403() { //arrange var twitterUserTracker = new TwitterUserTracker(); var bootstrapper = new TestBootstrapper( with => { with.Module <TweetModule>(); with.Dependency <ITwitterUserTracker>(twitterUserTracker); }); var browser = new Browser(bootstrapper); //act var response = browser.Get("/tweet"); //assert response.StatusCode.Should().Be(HttpStatusCode.Unauthorized); }