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" }); }