RC1ForwardingActivatorTests.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright (c) .NET Foundation. All rights reserved.
  2. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
  3. using System;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using Xunit;
  6. namespace Microsoft.AspNetCore.DataProtection
  7. {
  8. public class RC1ForwardingActivatorTests
  9. {
  10. [Fact]
  11. public void CreateInstance_ForwardsToNewNamespaceIfExists()
  12. {
  13. // Arrange
  14. var serviceCollection = new ServiceCollection();
  15. serviceCollection.AddDataProtection();
  16. var services = serviceCollection.BuildServiceProvider();
  17. var activator = services.GetActivator();
  18. // Act
  19. var name = "Microsoft.AspNet.DataProtection.RC1ForwardingActivatorTests+ClassWithParameterlessCtor, Microsoft.AspNet.DataProtection.Test";
  20. var instance = activator.CreateInstance<object>(name);
  21. // Assert
  22. Assert.IsType<ClassWithParameterlessCtor>(instance);
  23. }
  24. [Fact]
  25. public void CreateInstance_DoesNotForwardIfClassDoesNotExist()
  26. {
  27. // Arrange
  28. var serviceCollection = new ServiceCollection();
  29. serviceCollection.AddDataProtection();
  30. var services = serviceCollection.BuildServiceProvider();
  31. var activator = services.GetActivator();
  32. // Act & Assert
  33. var name = "Microsoft.AspNet.DataProtection.RC1ForwardingActivatorTests+NonExistentClassWithParameterlessCtor, Microsoft.AspNet.DataProtection.Test";
  34. var exception = Assert.ThrowsAny<Exception>(()=> activator.CreateInstance<object>(name));
  35. Assert.Contains("Microsoft.AspNet.DataProtection.Test", exception.Message);
  36. }
  37. private class ClassWithParameterlessCtor
  38. {
  39. }
  40. }
  41. }