public void NewUserProfileIsAddedAndResourceReturned()
            {
                MethodToTest(() => service.GetUserProfile(A <Auth0UserProfile> .Ignored, A <IPrincipal> .Ignored));

                var auth0Profile = new Auth0UserProfile();
                var auth0UserSet = new FakeDbSet <Auth0User>();

                A.CallTo(() => dependencies.StorageService.SetOf <Auth0User>()).Returns(auth0UserSet);
                var user = new Auth0User();

                A.CallTo(() => service.BuildAuth0User(auth0Profile)).Returns(user);
                var claimsIdentity = new ClaimsIdentity();
                var resource       = new UserProfileResource();

                A.CallTo(() => service.BuildUserProfileResource(user)).Returns(resource);
                var principal = A.Fake <IPrincipal>();

                A.CallTo(() => principal.Identity).Returns(claimsIdentity);

                var result = service.GetUserProfile(auth0Profile, principal);

                Assert.AreSame(resource, result);
                A.CallTo(() => service.VerifyProfile(auth0Profile, claimsIdentity)).MustHaveHappened();
                Assert.AreEqual(1, auth0UserSet.Count());
                Assert.AreSame(user, auth0UserSet.First());
                A.CallTo(() => dependencies.StorageService.SaveChanges()).MustHaveHappened();
            }
            public void UserIsVerifiedAndResourceReturned()
            {
                MethodToTest(() => service.GetUserProfile(A <Auth0UserProfile> .Ignored, A <IPrincipal> .Ignored));

                var user = new Auth0User {
                    Id = "someId"
                };
                var auth0Profile = new Auth0UserProfile {
                    sub = user.Id
                };
                var auth0UserSet = new FakeDbSet <Auth0User> {
                    user
                };

                A.CallTo(() => dependencies.StorageService.SetOf <Auth0User>()).Returns(auth0UserSet);
                A.CallTo(() => service.BuildAuth0User(auth0Profile)).Returns(user);
                var claimsIdentity = new ClaimsIdentity();
                var resource       = new UserProfileResource();

                A.CallTo(() => service.BuildUserProfileResource(user)).Returns(resource);
                var principal = A.Fake <IPrincipal>();

                A.CallTo(() => principal.Identity).Returns(claimsIdentity);



                var result = service.GetUserProfile(auth0Profile, principal);

                Assert.AreSame(resource, result);
                A.CallTo(() => service.VerifyProfile(auth0Profile, claimsIdentity)).MustHaveHappened();
            }
Example #3
0
        public virtual Auth0User BuildAuth0User(Auth0UserProfile auth0Profile)
        {
            var user = _dependencies.StorageService.SetOf <Auth0User>().Create();

            user.Id         = auth0Profile.sub;
            user.PictureUrl = auth0Profile.Picture;
            user.Name       = auth0Profile.Name;
            return(user);
        }
        public virtual Auth0User BuildAuth0User(Auth0UserProfile auth0Profile)
        {
            var user = new Auth0User();

            user.Id         = auth0Profile.sub;
            user.PictureUrl = auth0Profile.Picture;
            user.Name       = auth0Profile.Name;
            return(user);
        }
Example #5
0
        public virtual void VerifyProfile(Auth0UserProfile auth0Profile, ClaimsIdentity claimsIdentity)
        {
            var authenticatedUserId = GetLoggedInUserId(claimsIdentity);

            if (authenticatedUserId != null && authenticatedUserId == auth0Profile.sub)
            {
                return;
            }
            if (!claimsIdentity.IsAuthenticated)
            {
                throw new AccessViolationException("Not authenticated");
            }
            throw new AccessViolationException("Not authenticated for the identified user");
        }
                public void NoExceptionIsThrown()
                {
                    MethodToTest(() => service.VerifyProfile(A <Auth0UserProfile> .Ignored, A <ClaimsIdentity> .Ignored));

                    var profile = new Auth0UserProfile {
                        sub = "someUserId"
                    };
                    var claimsIdentity = A.Fake <ClaimsIdentity>();

                    A.CallTo(() => service.GetLoggedInUserId(claimsIdentity)).Returns(profile.sub);
                    //A.CallTo(()=> claimsIdentity.Claims).Returns(
                    //    new[] { new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",profile.user_id) });
                    A.CallTo(() => claimsIdentity.IsAuthenticated).Returns(true);

                    service.VerifyProfile(profile, claimsIdentity);
                }
Example #7
0
        public virtual UserProfileResource GetUserProfile(Auth0UserProfile auth0UserProfile, IPrincipal principal)
        {
            var claimsIdentity = principal.Identity as ClaimsIdentity;

            VerifyProfile(auth0UserProfile, claimsIdentity);
            var user =
                _dependencies.StorageService.SetOf <Auth0User>().FirstOrDefault(x => x.Id == auth0UserProfile.sub);

            if (user == null)
            {
                user = BuildAuth0User(auth0UserProfile);
                _dependencies.StorageService.SetOf <Auth0User>().Add(user);
                _dependencies.StorageService.SaveChanges();
            }
            else
            {
                user.PictureUrl = auth0UserProfile.Picture;
                _dependencies.StorageService.SaveChanges();
            }
            return(BuildUserProfileResource(user));
        }
                public void NoExceptionIsThrown()
                {
                    MethodToTest(() => service.VerifyProfile(A <Auth0UserProfile> .Ignored, A <ClaimsIdentity> .Ignored));

                    var profile = new Auth0UserProfile {
                        sub = "someUserId"
                    };
                    var claimsIdentity = A.Fake <ClaimsIdentity>();

                    A.CallTo(() => service.GetLoggedInUserId(claimsIdentity)).Returns(null);
                    //A.CallTo(() => claimsIdentity.Claims).Returns(
                    //    new[]
                    //    {
                    //        new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
                    //            profile.user_id)
                    //    });
                    //A.CallTo(() => claimsIdentity.IsAuthenticated).Returns(false);

                    var exception =
                        Assert.Throws <AccessViolationException>(() => service.VerifyProfile(profile, claimsIdentity));

                    Assert.AreEqual("Not authenticated for the identified user", exception.Message);
                }
                public void PropertiesSetCorrectly()
                {
                    MethodToTest(() => service.BuildAuth0User(A <Auth0UserProfile> .Ignored));

                    var auth0Profile = new Auth0UserProfile
                    {
                        Name    = "someone",
                        sub     = "something from facebookand auth0",
                        Picture = "some url - maybe just a fake pic"
                    };
                    var fakeSet = A.Fake <IDbSet <Auth0User> >();

                    A.CallTo(() => dependencies.StorageService.SetOf <Auth0User>()).Returns(fakeSet);
                    var user = new Auth0User();

                    A.CallTo(() => fakeSet.Create()).Returns(user);

                    var result = service.BuildAuth0User(auth0Profile);

                    Assert.AreEqual(auth0Profile.sub, result.Id);
                    Assert.AreEqual(auth0Profile.Picture, result.PictureUrl);
                    Assert.AreEqual(auth0Profile.Name, result.Name);
                    Assert.AreSame(user, result);
                }
 public UserProfileResource PostFullUserProfileRequest(Auth0UserProfile profile)
 {
     return(_userService.GetUserProfile(profile, User));
 }
Example #11
0
 public HttpResponseMessage PostFullUserProfileRequest(Auth0UserProfile profile)
 {
     return(Request.CreateResponse(HttpStatusCode.OK, _userService.GetUserProfile(profile, User)));
 }