public void TestIsSatisfiedFalse()
        {
            ResourceContext context = new ResourceContext();
            BearerProcessor processor = new BearerProcessor(new Mock<IServiceFactory>().Object);

            Assert.IsFalse(processor.IsSatisfiedBy(context));
        }
 public void TestIsSatisfiedFalseWrongAuthorizaitonHeader()
 {
     ResourceContext context = new ResourceContext();
     context.Headers = new NameValueCollection();
     context.Headers["Authorization"] = "MAC token=\"something\",...";
     BearerProcessor processor = new BearerProcessor(new Mock<IServiceFactory>().Object);
     
     Assert.IsFalse(processor.IsSatisfiedBy(context));
 }
        public void TestIsSatisfiedByHeaderTrue()
        {
            ResourceContext context = new ResourceContext();
            context.Headers = new NameValueCollection();
            context.Headers["Authorization"] = "Bearer 123456";

            BearerProcessor processor = new BearerProcessor(new Mock<IServiceFactory>().Object);

            Assert.IsTrue(processor.IsSatisfiedBy(context));
        }
        public void TestIsSatisfiedByFormTrue()
        {
            ResourceContext context = new ResourceContext();
            context.Form = new NameValueCollection();
            context.Form["bearer_token"] = "12345";

            BearerProcessor processor = new BearerProcessor(new Mock<IServiceFactory>().Object);

            Assert.IsTrue(processor.IsSatisfiedBy(context));
        }
        public void TestAccessingNullTokenResource()
        {
            ResourceContext context = new ResourceContext();
            context.Headers = new NameValueCollection();
            context.Headers["Authorization"] = "bearer my-token";

            Mock<ContextProcessor<IResourceContext>> mckProvider = new Mock<ContextProcessor<IResourceContext>>(new Mock<IServiceFactory>().Object);
            mckProvider.Setup(x => x.IsSatisfiedBy(context)).Returns(true);
            mckProvider.Setup(x => x.Process(context));

            SimpleServiceLocator container = new SimpleServiceLocator();
            container.RegisterAll<ContextProcessor<IResourceContext>>(mckProvider.Object);

            ServiceLocator.SetLocatorProvider(() => container);

            ResourceProvider provider = new ResourceProvider();

            CommonErrorAssert(context, provider, Parameters.ErrorParameters.ErrorValues.InvalidToken);

            mckProvider.Verify();
        }
        public void TestAccessingResourceUnhandledByProcessor()
        {
            ResourceContext context = new ResourceContext();
            context.Headers = new NameValueCollection();
            context.Headers["Authorization"] = "bearer my-token";

            Mock<ContextProcessor<IResourceContext>> mckProvider = new Mock<ContextProcessor<IResourceContext>>(new Mock<IServiceFactory>().Object);
            mckProvider.Setup(x => x.IsSatisfiedBy(context)).Returns(false);

            SimpleServiceLocator container = new SimpleServiceLocator();
            container.RegisterAll<ContextProcessor<IResourceContext>>(mckProvider.Object);

            ServiceLocator.SetLocatorProvider(() => container);

            ResourceProvider provider = new ResourceProvider();

            provider.AccessProtectedResource(context);


            mckProvider.Verify();

        }
        public void TestProcessingContext()
        {
            ResourceContext context = new ResourceContext();
            context.Headers = new NameValueCollection();
            context.Headers["Authorization"] = "BEARER my-token";

            AccessTokenBase result = new AccessTokenBase() { Token = "my-token" };
            Mock<ITokenService> mckTokenService = new Mock<ITokenService>();
            mckTokenService.Setup(x => x.FindToken("my-token")).Returns(result);

            Mock<IServiceFactory> mckFactory = new Mock<IServiceFactory>();
            mckFactory.SetupGet(x => x.TokenService).Returns(mckTokenService.Object);

            BearerProcessor processor = new BearerProcessor(mckFactory.Object);

            processor.Process(context);

            Assert.AreEqual(result, context.Token);

            mckTokenService.VerifyAll();
            mckFactory.VerifyAll();

        }
        public void TestAccessingExpiredTokenResource()
        {
            ResourceContext context = new ResourceContext();
            context.Headers = new NameValueCollection();
            context.Headers["Authorization"] = "bearer my-token";

			IAccessToken expiredToken = new AccessTokenBase
            {
                Token = "my-token",
                ExpiresIn = 2,
                IssuedOn = DateTime.Now.AddMinutes(-1).ToEpoch()
            };
            Mock<ContextProcessor<IResourceContext>> mckProvider = new Mock<ContextProcessor<IResourceContext>>(new Mock<IServiceFactory>().Object);
            mckProvider.Setup(x => x.IsSatisfiedBy(context)).Returns(true);
            mckProvider.Setup(x => x.Process(context)).Callback(() => context.Token = expiredToken);

            SimpleServiceLocator container = new SimpleServiceLocator();
            container.RegisterAll<ContextProcessor<IResourceContext>>(mckProvider.Object);

            ServiceLocator.SetLocatorProvider(() => container);

            ResourceProvider provider = new ResourceProvider();

            CommonErrorAssert(context, provider, Parameters.ErrorParameters.ErrorValues.InvalidToken);

            mckProvider.Verify();
        }
 private static void CommonErrorAssert(ResourceContext context, ResourceProvider provider, string error)
 {
     try
     {
         provider.AccessProtectedResource(context);
         Assert.Fail("No exception was thrown");
     }
     catch (OAuthErrorResponseException<IResourceContext> x)
     {
         Assert.AreEqual(error, x.Error);
     }
     catch (Exception x)
     {
         Assert.Fail("Unexpected exception was thrown:" + x.Message);
     }
 }
        public void TestInvalidScope()
        {
            ResourceContext context = new ResourceContext();
            context.Token = new AccessTokenBase { Scope = new[] { "create" } };

            ResourceProvider provider = new ResourceProvider();

            try
            {
                provider.ValidateScope(context, new string[] { "delete" });
                Assert.Fail("No exception was thrown");
            }
            catch (OAuthErrorResponseException<IResourceContext> x)
            {
                Assert.AreEqual(Parameters.ErrorParameters.ErrorValues.InsufficientScope, x.Error);
                Assert.AreEqual(403, x.HttpStatusCode);
            }
            catch (Exception x)
            {
                Assert.Fail("Unexpected exception: " + x.Message);
            }
        }
        public void TestInvalidMissingTokenScope()
        {
            ResourceContext context = new ResourceContext();

            ResourceProvider provider = new ResourceProvider();

            try
            {
                provider.ValidateScope(context, new string[] { "delete" });
                Assert.Fail("No exception was thrown");
            }
            catch (OAuthErrorResponseException<IResourceContext> x)
            {
                Assert.AreEqual(Parameters.ErrorParameters.ErrorValues.InvalidToken, x.Error);
                Assert.AreEqual(401, x.HttpStatusCode);
            }
            catch (Exception x)
            {
                Assert.Fail("Unexpected exception: " + x.Message);
            }
        }
        public void TestValidScope()
        {
            ResourceContext context = new ResourceContext();
            context.Token = new AccessTokenBase { Scope = new[] { "create" } };

            ResourceProvider provider = new ResourceProvider();

            provider.ValidateScope(context, new string[] { "CREATE" });
        }