public Task Fail_WhenNotConfirmed()
        {
            #region Arrange

            const int taskId = 3;

            var modelMock = new Mock <IModel>();

            modelMock.Setup(m => m.NextPublishSeqNo)
            .Returns(taskId);

            var propertiesMock = new FakeOptions
            {
                Headers = new Dictionary <string, object>()
            };

            var confirmableChannel = new PublishConfirmableChannel(modelMock.Object);

            #endregion Arrange

            #region Act

            var publishTask = confirmableChannel.BasicPublishAsync(
                string.Empty,
                string.Empty,
                true,
                propertiesMock,
                ReadOnlyMemory <byte> .Empty
                );

            Assert.IsTrue(confirmableChannel.HasTaskWith(taskId), "PublishTaskInfo not added!");

            modelMock.Raise(m => m.ModelShutdown += null, new ShutdownEventArgs(
                                ShutdownInitiator.Application,
                                500,
                                "REASON_FROM_RABBIT"
                                )
                            );

            #endregion Act

            #region Assert

            return(publishTask.ContinueWith(t =>
            {
                Assert.IsTrue(t.IsFaulted, "Task should be faulted.");
                Assert.AreEqual(
                    "The message was not confirmed by RabbitMQ within the specified period. REASON_FROM_RABBIT",
                    t.Exception?.InnerException?.Message
                    );
                Assert.IsFalse(confirmableChannel.HasTaskWith(taskId));
            }));

            #endregion Assert
        }
        public async Task Returns_failure_for_unauthorized_token(string exceptionTypeToThrow)
        {
            const string AudienceForTest       = "AudienceForTest";
            const string IssuerUrlForTest      = "https://issuerUrl.for.test/";
            const string ExtractedTokenForTest = "ExtractedTokenForTest";

            Exception exceptionToThrow = exceptionTypeToThrow == "SecurityTokenException"
                    ? new SecurityTokenException()
                    : new Exception();

            var fakeApiAuthorizationSettingsOptions
                = new FakeOptions <OidcApiAuthorizationSettings>()
                {
                Value = new OidcApiAuthorizationSettings()
                {
                    Audience  = AudienceForTest,
                    IssuerUrl = IssuerUrlForTest
                }
                };

            var fakeAuthorizationHeaderBearerTokenExractor = new FakeAuthorizationHeaderBearerTokenExractor()
            {
                TokenToReturn = ExtractedTokenForTest
            };

            var fakeJwtSecurityTokenHandlerWrapper = new FakeJwtSecurityTokenHandlerWrapper()
            {
                // Throw for unauthrorized token.
                ExceptionToThrow = exceptionToThrow
            };

            var fakeOidcConfigurationManager = new FakeOidcConfigurationManager()
            {
                SecurityKeysForTest = new List <SecurityKey>()
            };

            IHeaderDictionary httpRequestHeaders = null;

            var service = new OidcApiAuthorizationService(
                fakeApiAuthorizationSettingsOptions,
                fakeAuthorizationHeaderBearerTokenExractor,
                fakeJwtSecurityTokenHandlerWrapper,
                fakeOidcConfigurationManager);

            ApiAuthorizationResult result = await service.AuthorizeAsync(
                httpRequestHeaders);

            Assert.True(result.Failed);

            Assert.Equal(1, fakeJwtSecurityTokenHandlerWrapper.ValidateTokenCalledCount);

            Assert.Equal(0, fakeOidcConfigurationManager.RequestRefreshCalledCount);
        }
        public Task Fail_WhenNack()
        {
            #region Arrange

            const int taskId = 2;

            var modelMock = new Mock <IModel>();

            modelMock.Setup(m => m.NextPublishSeqNo)
            .Returns(taskId);

            var propertiesMock = new FakeOptions
            {
                Headers = new Dictionary <string, object>()
            };

            var confirmableChannel = new PublishConfirmableChannel(modelMock.Object);

            #endregion Arrange

            #region Act

            var publishTask = confirmableChannel.BasicPublishAsync(
                string.Empty,
                string.Empty,
                true,
                propertiesMock,
                ReadOnlyMemory <byte> .Empty
                );

            Assert.IsTrue(confirmableChannel.HasTaskWith(taskId), "PublishTaskInfo not added!");

            modelMock.Raise(m => m.BasicNacks += null, new BasicNackEventArgs
            {
                DeliveryTag = taskId,
                Multiple    = false
            });

            #endregion Act

            #region Assert

            return(publishTask.ContinueWith(t =>
            {
                Assert.IsTrue(t.IsFaulted);
                Assert.AreEqual("The message was not acknowledged by RabbitMQ", t.Exception?.InnerException?.Message);
                Assert.IsFalse(confirmableChannel.HasTaskWith(taskId));
            }));

            #endregion Assert
        }
        public Task Success_WhenAck()
        {
            #region Arrange

            const int taskId = 1;

            var modelMock = new Mock <IModel>();

            modelMock.Setup(m => m.NextPublishSeqNo)
            .Returns(taskId);

            var propertiesMock = new FakeOptions
            {
                Headers = new Dictionary <string, object>()
            };

            var confirmableChannel = new PublishConfirmableChannel(modelMock.Object);

            #endregion Arrange

            #region Act

            var publishTask = confirmableChannel.BasicPublishAsync(
                string.Empty,
                string.Empty,
                true,
                propertiesMock,
                ReadOnlyMemory <byte> .Empty
                );

            Assert.IsTrue(confirmableChannel.HasTaskWith(taskId), "PublishTaskInfo not added!");

            modelMock.Raise(m => m.BasicAcks += null, new BasicAckEventArgs
            {
                DeliveryTag = taskId,
                Multiple    = false
            });

            #endregion Act

            #region Assert

            return(publishTask.ContinueWith(t =>
            {
                Assert.IsTrue(t.IsCompletedSuccessfully, "Task should complete successful");
                Assert.IsFalse(confirmableChannel.HasTaskWith(taskId), "PublishTaskInfo not removed!");
            }));

            #endregion Assert
        }
        public Task Fail_WhenTimedOut()
        {
            #region Arrange

            const int taskId = 5;

            var modelMock = new Mock <IModel>();

            modelMock.Setup(m => m.NextPublishSeqNo)
            .Returns(taskId);

            var propertiesMock = new FakeOptions
            {
                Headers = new Dictionary <string, object>()
            };

            // timeout confirm immediatelly - we can add task to tracker, but timeout cancel it fast
            var confirmTimeout = TimeSpan.FromMilliseconds(10);

            var confirmableChannel = new PublishConfirmableChannel(modelMock.Object, confirmTimeout);

            #endregion Arrange

            #region Act

            var publishTask = confirmableChannel.BasicPublishAsync(
                string.Empty,
                string.Empty,
                true,
                propertiesMock,
                ReadOnlyMemory <byte> .Empty,
                0
                );

            Assert.IsTrue(confirmableChannel.HasTaskWith(taskId), "PublishTaskInfo not added!");

            #endregion Act

            #region Assert

            return(publishTask.ContinueWith(t =>
            {
                Assert.IsTrue(t.IsCanceled, "Task should be cancelled.");
                Assert.IsNull(t.Exception);
                Assert.IsFalse(confirmableChannel.HasTaskWith(taskId));
            }));

            #endregion Assert
        }
Exemple #6
0
        public async Task Retrys_once_if_SecurityTokenSignatureKeyNotFoundException()
        {
            const string AudianceForTest       = "AudianceForTest";
            const string IssuerUrlForTest      = "https://issuerUrl.for.test/";
            const string ExtractedTokenForTest = "ExtractedTokenForTest";

            var fakeApiAuthorizationSettingsOptions
                = new FakeOptions <OidcApiAuthorizationSettings>()
                {
                Value = new OidcApiAuthorizationSettings()
                {
                    Audience  = AudianceForTest,
                    IssuerUrl = IssuerUrlForTest
                }
                };

            var fakeAuthorizationHeaderBearerTokenExractor = new FakeAuthorizationHeaderBearerTokenExractor()
            {
                TokenToReturn = ExtractedTokenForTest
            };

            var fakeJwtSecurityTokenHandlerWrapper = new FakeJwtSecurityTokenHandlerWrapper()
            {
                ThrowFirstTime = true
            };

            var fakeOidcConfigurationManager = new FakeOidcConfigurationManager()
            {
                SecurityKeysForTest = new List <SecurityKey>()
            };

            IHeaderDictionary httpRequestHeaders = null;

            var service = new OidcApiAuthorizationService(
                fakeApiAuthorizationSettingsOptions,
                fakeAuthorizationHeaderBearerTokenExractor,
                fakeJwtSecurityTokenHandlerWrapper,
                fakeOidcConfigurationManager);

            ApiAuthorizationResult result = await service.AuthorizeAsync(
                httpRequestHeaders);

            Assert.True(result.Success);

            Assert.Equal(2, fakeJwtSecurityTokenHandlerWrapper.ValidateTokenCalledCount);

            Assert.Equal(1, fakeOidcConfigurationManager.RequestRefreshCalledCount);
        }
Exemple #7
0
        public void Parse_options()
        {
            // Fixture setup
            var expectedOptions = new FakeOptions
            {
                StringValue = "strvalue", IntSequence = new[] { 1, 2, 3 }
            };
            var sut = new Parser();

            // Exercize system
            var result = sut.ParseArguments <FakeOptions>(new[] { "--stringvalue=strvalue", "-i1", "2", "3" });

            // Verify outcome
            ((Parsed <FakeOptions>)result).Value.ShouldBeEquivalentTo(expectedOptions);
            // Teardown
        }
Exemple #8
0
        public void Should_throw_when_generator_fails_and_arguments_for_constructor_are_specified()
        {
            // Arrange
            this.StubProxyGeneratorToFail("fail reason");

            var options = new FakeOptions
            {
                ArgumentsForConstructor = new object[] { "argument for constructor " }
            };

            // Act
            this.fakeObjectCreator.CreateFake(typeof(IFoo), options, A.Dummy <IDummyValueCreationSession>(), throwOnFailure: true);

            // Assert
            A.CallTo(() => this.thrower.ThrowFailedToGenerateProxyWithArgumentsForConstructor(typeof(IFoo), "fail reason"))
            .MustHaveHappened();
        }
Exemple #9
0
        public void Parse_options()
        {
            // Fixture setup
            var expectedOptions = new FakeOptions
            {
                StringValue = "strvalue", IntSequence = new[] { 1, 2, 3 }
            };
            var sut = new Parser();

            // Exercize system
            var result = sut.ParseArguments <FakeOptions>(new[] { "--stringvalue=strvalue", "-i1", "2", "3" });

            // Verify outcome
            result.Value.ShouldHave().AllProperties().EqualTo(expectedOptions);
            Assert.False(result.Errors.Any());
            // Teardown
        }
Exemple #10
0
        public void Should_try_protected_constructors()
        {
            // Arrange
            var session = A.Fake <IDummyValueCreationSession>();

            StubSessionWithDummyValue(session, 1);
            this.StubProxyGeneratorToFail();

            var options = new FakeOptions();

            // Act
            this.fakeObjectCreator.CreateFake(typeof(TypeWithProtectedConstructor), options, session, throwOnFailure: false);

            // Assert
            A.CallTo(() => this.proxyGenerator.GenerateProxy(typeof(TypeWithProtectedConstructor), options.AdditionalInterfacesToImplement, A <IEnumerable <object> > .That.IsThisSequence(1), A <IEnumerable <CustomAttributeBuilder> > ._, A <IFakeCallProcessorProvider> ._))
            .MustHaveHappened();
        }
Exemple #11
0
        public void Should_use_new_fake_call_processor_for_the_proxy_generator()
        {
            // Arrange
            var options = new FakeOptions();

            var fakeCallProcessorProvider = A.Fake <IFakeCallProcessorProvider>();

            A.CallTo(() => this.fakeCallProcessorProviderFactory(A <Type> ._, A <FakeOptions> ._)).Returns(fakeCallProcessorProvider);

            // Act
            this.fakeObjectCreator.CreateFake(typeof(IFoo), options, A.Dummy <IDummyValueCreationSession>(), throwOnFailure: false);

            // Assert
            A.CallTo(() => this.fakeCallProcessorProviderFactory(typeof(IFoo), options)).MustHaveHappened();

            A.CallTo(() => this.proxyGenerator.GenerateProxy(A <Type> ._, A <IEnumerable <Type> > ._, A <IEnumerable <object> > ._, A <IEnumerable <CustomAttributeBuilder> > ._, fakeCallProcessorProvider))
            .MustHaveHappened();
        }
Exemple #12
0
        public void Short_Parameters_names_are_used()
        {
            // Fixture setup
            var expectedOptions = new FakeOptions
            {
                IntSequence = new[] { 1, 2, 3 },
                BoolValue   = true
            };
            var sut = new Parser();

            // Exercize system
            var result = sut.ParseArguments <FakeOptions>(new[] { "-x", "-i1", "2", "3" });

            // Verify outcome
            result.Value.ShouldHave().AllProperties().EqualTo(expectedOptions);
            Assert.False(result.Errors.Any());
            // Teardown
        }
Exemple #13
0
        public async Task Returns_failure_if_cant_get_signing_keys_from_issuer()
        {
            const string AudianceForTest         = "AudianceForTest";
            const string IssuerUrlForTest        = "https://issuerUrl.for.test/";
            const string ExtractedTokenForTest   = "ExtractedTokenForTest";
            const string ExceptionMessageForTest = "ExceptionMessageForTest";

            var fakeApiAuthorizationSettingsOptions
                = new FakeOptions <OidcApiAuthorizationSettings>()
                {
                Value = new OidcApiAuthorizationSettings()
                {
                    Audience  = AudianceForTest,
                    IssuerUrl = IssuerUrlForTest
                }
                };

            var fakeAuthorizationHeaderBearerTokenExractor = new FakeAuthorizationHeaderBearerTokenExractor()
            {
                TokenToReturn = ExtractedTokenForTest
            };

            var fakeOidcConfigurationManager = new FakeOidcConfigurationManager()
            {
                ExceptionMessageForTest = ExceptionMessageForTest,
            };

            IHeaderDictionary httpRequestHeaders = null;

            var service = new OidcApiAuthorizationService(
                fakeApiAuthorizationSettingsOptions,
                fakeAuthorizationHeaderBearerTokenExractor,
                jwtSecurityTokenHandlerWrapper: null, // Not accessed in this test.
                fakeOidcConfigurationManager);

            ApiAuthorizationResult result = await service.AuthorizeAsync(
                httpRequestHeaders);

            Assert.True(result.Failed);

            Assert.StartsWith(
                "Problem getting signing keys from Open ID Connect provider (issuer).",
                result.FailureReason);
        }
Exemple #14
0
        public void Should_use_new_fake_call_processor_for_every_tried_constructor()
        {
            // Arrange
            var session = A.Fake <IDummyValueCreationSession>();

            StubSessionWithDummyValue(session, 1);
            StubSessionWithDummyValue(session, "dummy");

            this.StubProxyGeneratorToFail();

            var options = new FakeOptions();

            // Act
            this.fakeObjectCreator.CreateFake(typeof(TypeWithMultipleConstructors), options, session, throwOnFailure: false);

            // Assert
            A.CallTo(() => this.fakeCallProcessorProviderFactory(typeof(TypeWithMultipleConstructors), options))
            .MustHaveHappened(Repeated.Exactly.Times(3));
        }
Exemple #15
0
        public FakeManagerProvider(
            FakeManager.Factory fakeManagerFactory,
            IFakeManagerAccessor fakeManagerAccessor,
            IFakeObjectConfigurator fakeObjectConfigurator,
            Type typeOfFake,
            FakeOptions fakeOptions)
        {
            Guard.AgainstNull(fakeManagerFactory, "fakeManagerFactory");
            Guard.AgainstNull(fakeManagerAccessor, "fakeManagerAccessor");
            Guard.AgainstNull(fakeObjectConfigurator, "fakeObjectConfigurator");
            Guard.AgainstNull(typeOfFake, "typeOfFake");
            Guard.AgainstNull(fakeOptions, "fakeOptions");

            this.fakeManagerFactory     = fakeManagerFactory;
            this.fakeManagerAccessor    = fakeManagerAccessor;
            this.fakeObjectConfigurator = fakeObjectConfigurator;
            this.typeOfFake             = typeOfFake;
            this.fakeOptions            = fakeOptions;
        }
        public async void Returns_error_if_missing_all_settings()
        {
            var fakeApiAuthorizationSettingsOptions
                = new FakeOptions <OidcApiAuthorizationSettings>()
                {
                Value = null     // No settings.
                };

            var service = new OidcApiAuthorizationService(
                fakeApiAuthorizationSettingsOptions,
                authorizationHeaderBearerTokenExractor: null, // Not accessed in this test.
                jwtSecurityTokenHandlerWrapper: null,         // Not accessed in this test.
                oidcConfigurationManager: null);;             // Not accessed in this test.

            HealthCheckResult result = await service.HealthCheckAsync();

            Assert.False(result.IsHealthy);
            Assert.Equal(_expectedMissingSettingsMessage, result.BadHealthMessage);
        }
Exemple #17
0
        public void Should_not_perform_actions_froM_options_when_trying_to_create_fake_but_fails()
        {
            // Arrange
            var wasInvoked = false;

            var options = new FakeOptions();

            options.OnFakeCreatedActions.Add(x => wasInvoked = true);

            A.CallTo(() =>
                     this.fakeCreator.CreateFake(A <Type> ._, A <FakeOptions> ._, A <IDummyValueCreationSession> ._, A <bool> ._))
            .Returns(null);

            // Act
            this.manager.TryCreateFake(typeof(IFoo), options, out Ignore.This <object>().Value);

            // Assert
            Assert.That(wasInvoked, Is.False);
        }
Exemple #18
0
        public void Explicit_help_request_generates_help_requested_error()
        {
            // Fixture setup
            var fakeOptions    = new FakeOptions();
            var expectedResult = new NotParsed <FakeOptions>(
                TypeInfo.Create(typeof(FakeOptions)), new Error[] { new HelpRequestedError() });

            // Exercize system
            var result = InstanceBuilder.Build(
                Maybe.Just <Func <FakeOptions> >(() => fakeOptions),
                new[] { "--help" },
                StringComparer.Ordinal,
                CultureInfo.InvariantCulture);

            // Verify outcome
            Assert.True(expectedResult.Equals(result));

            // Teardown
        }
Exemple #19
0
        public void Parse_to_mutable()
        {
            // Fixture setup
            var expectedResult = new FakeOptions {
                StringValue = "strval0", IntSequence = new[] { 9, 7, 8 }, BoolValue = true, LongValue = 9876543210L
            };

            // Exercize system
            var result = InstanceBuilder.Build(
                Maybe.Just <Func <FakeOptions> >(() => new FakeOptions()),
                new[] { "--stringvalue=strval0", "-i", "9", "7", "8", "-x", "9876543210" },
                StringComparer.Ordinal,
                CultureInfo.InvariantCulture);

            // Verify outcome
            expectedResult.ShouldBeEquivalentTo(((Parsed <FakeOptions>)result).Value);

            // Teardown
        }
Exemple #20
0
        public async Task Returns_success_for_happy_path()
        {
            const string AudianceForTest       = "AudianceForTest";
            const string IssuerUrlForTest      = "https://issuerUrl.for.test/";
            const string ExtractedTokenForTest = "ExtractedTokenForTest";

            var fakeApiAuthorizationSettingsOptions
                = new FakeOptions <OidcApiAuthorizationSettings>()
                {
                Value = new OidcApiAuthorizationSettings()
                {
                    Audience  = AudianceForTest,
                    IssuerUrl = IssuerUrlForTest
                }
                };

            var fakeAuthorizationHeaderBearerTokenExractor = new FakeAuthorizationHeaderBearerTokenExractor()
            {
                TokenToReturn = ExtractedTokenForTest
            };

            var fakeJwtSecurityTokenHandlerWrapper = new FakeJwtSecurityTokenHandlerWrapper();

            var fakeOidcConfigurationManager = new FakeOidcConfigurationManager()
            {
                SecurityKeysForTest = new List <SecurityKey>()
            };

            IHeaderDictionary httpRequestHeaders = null;

            var service = new OidcApiAuthorizationService(
                fakeApiAuthorizationSettingsOptions,
                fakeAuthorizationHeaderBearerTokenExractor,
                fakeJwtSecurityTokenHandlerWrapper,
                fakeOidcConfigurationManager);

            ApiAuthorizationResult result = await service.AuthorizeAsync(
                httpRequestHeaders);

            Assert.True(result.Success);
        }
Exemple #21
0
        public void Should_not_try_to_resolve_constructors_when_arguments_for_constructor_are_specified()
        {
            // Arrange
            var session = A.Fake <IDummyValueCreationSession>();

            StubSessionWithDummyValue(session, 1);

            this.StubProxyGeneratorToFail();

            var options = new FakeOptions
            {
                ArgumentsForConstructor = new object[] { 2, 2 }
            };

            // Act
            this.fakeObjectCreator.CreateFake(typeof(TypeWithMultipleConstructors), options, session, throwOnFailure: false);

            // Assert
            A.CallTo(() => this.proxyGenerator.GenerateProxy(typeof(TypeWithMultipleConstructors), options.AdditionalInterfacesToImplement, A <IEnumerable <object> > .That.Not.IsThisSequence(2, 2), A <IFakeCallProcessorProvider> ._))
            .MustNotHaveHappened();
        }
Exemple #22
0
        public void Should_perform_actions_from_options_on_created_fake_when_trying_to_create_fake()
        {
            // Arrange
            object invokedWithFake = null;

            var options = new FakeOptions();

            options.OnFakeCreatedActions.Add(x => invokedWithFake = x);

            var fake = A.Dummy <IFoo>();

            A.CallTo(() =>
                     this.fakeCreator.CreateFake(typeof(IFoo), options, this.dummySession, false))
            .Returns(fake);

            // Act
            this.manager.TryCreateFake(typeof(IFoo), options, out Ignore.This <object>().Value);

            // Assert
            Assert.That(invokedWithFake, Is.SameAs(fake));
        }
Exemple #23
0
        public async Task GetFileTree(string filePath, FakeOptions <FileServiceSettings> settings, ICollection <string> files, FileViewModel expected)
        {
            using (var pathCreator = new PathCreator(files))
            {
                pathCreator.CreateFiles();
                var fileService = new FileService(new FakeLogger <FileService>(), settings);
                var response    = await fileService.GetFileTree(pathCreator.GetFullPath(filePath));

                var flatTreeResult   = new List <FileViewModel>();
                var flatTreeExpected = new List <FileViewModel>();

                MakeTreeFlat(response.Item, flatTreeResult);
                MakeTreeFlat(expected, flatTreeExpected);

                var comparer = new FileViewModelComparer();
                foreach (var expectedItem in flatTreeExpected)
                {
                    Assert.Contains(expectedItem, flatTreeResult, comparer);
                }
            }
        }
Exemple #24
0
        public void Should_return_fake_when_successful()
        {
            // Arrange
            var argumentsForConstructor = new object[] { };

            var options = new FakeOptions
            {
                AdditionalInterfacesToImplement = new Type[] { },
                ArgumentsForConstructor         = new object[] { }
            };

            var proxy = A.Fake <IFoo>();

            A.CallTo(() => this.proxyGenerator.GenerateProxy(typeof(IFoo), options.AdditionalInterfacesToImplement, options.ArgumentsForConstructor, A <IEnumerable <CustomAttributeBuilder> > ._))
            .Returns(new ProxyGeneratorResult(proxy, A.Dummy <ICallInterceptedEventRaiser>()));

            // Act
            var createdFake = this.fakeObjectCreator.CreateFake(typeof(IFoo), options, A.Dummy <IDummyValueCreationSession>(), throwOnFailure: false);

            // Assert
            Assert.That(createdFake, Is.SameAs(proxy));
        }
Exemple #25
0
        public static IEnumerable <object[]> GetFileData()
        {
            var setting = new FakeOptions <FileServiceSettings>(new FileServiceSettings
            {
                FileDelimeter = "\t",
                InitialPath   = string.Empty,
                MaxLoadDepth  = int.MaxValue
            });

            return(new List <object[]>
            {
                new object[]
                {
                    $"test.txt",
                    setting,
                    new string [][]
                    {
                        new string[] { "column1", "column2", "column3" },
                        new string[] { "item1", "item2", "item3" }
                    }
                }
            });
        }
Exemple #26
0
        public void Should_return_first_successfully_generated_proxy()
        {
            // Arrange
            var session = A.Fake <IDummyValueCreationSession>();

            StubSessionWithDummyValue(session, 1);

            var options = new FakeOptions();

            var proxy = A.Fake <IFoo>();

            this.StubProxyGeneratorToFail();
            A.CallTo(() => this.proxyGenerator.GenerateProxy(typeof(TypeWithMultipleConstructors), options.AdditionalInterfacesToImplement, A <IEnumerable <object> > .That.IsThisSequence(1, 1), A <IEnumerable <CustomAttributeBuilder> > ._, A <IFakeCallProcessorProvider> ._))
            .Returns(new ProxyGeneratorResult(proxy));
            A.CallTo(() => this.proxyGenerator.GenerateProxy(typeof(TypeWithMultipleConstructors), options.AdditionalInterfacesToImplement, A <IEnumerable <object> > .That.IsThisSequence(1), A <IEnumerable <CustomAttributeBuilder> > ._, A <IFakeCallProcessorProvider> ._))
            .Returns(new ProxyGeneratorResult(new object()));

            // Act
            var createdFake = this.fakeObjectCreator.CreateFake(typeof(TypeWithMultipleConstructors), options, session, throwOnFailure: false);

            // Assert
            createdFake.Should().BeSameAs(proxy);
        }
Exemple #27
0
        public void Should_pass_fake_options_to_the_proxy_generator_and_return_the_fake_when_successful()
        {
            // Arrange
            var options = new FakeOptions();

            var proxy = A.Fake <IFoo>();

            A.CallTo(() => this.proxyGenerator.GenerateProxy(A <Type> ._, A <IEnumerable <Type> > ._, A <IEnumerable <object> > ._, A <IEnumerable <CustomAttributeBuilder> > ._, A <IFakeCallProcessorProvider> ._))
            .Returns(new ProxyGeneratorResult(proxy));

            // Act
            var createdFake = this.fakeObjectCreator.CreateFake(typeof(IFoo), options, A.Dummy <IDummyValueCreationSession>(), throwOnFailure: false);

            // Assert
            createdFake.Should().BeSameAs(proxy);

            A.CallTo(() => this.proxyGenerator.GenerateProxy(
                         typeof(IFoo),
                         options.AdditionalInterfacesToImplement,
                         options.ArgumentsForConstructor,
                         options.AdditionalAttributes,
                         A <IFakeCallProcessorProvider> ._))
            .MustHaveHappened();
        }
 public static void UnParsing_instance_returns_command_line(FakeOptions options, string result)
 {
     new Parser()
     .FormatCommandLine(options)
     .ShouldBeEquivalentTo(result);
 }
Exemple #29
0
        public static IEnumerable <object[]> GetFileTreeData()
        {
            var setting = new FakeOptions <FileServiceSettings>(new FileServiceSettings
            {
                FileDelimeter = "\t",
                InitialPath   = string.Empty,
                MaxLoadDepth  = int.MaxValue
            });

            return(new List <object[]>
            {
                new object[]
                {
                    $"testdir",
                    setting,
                    new List <string>
                    {
                        $"testdir",
                        $"testdir\\testdir1_level1",
                        $"testdir\\testdir1_level1\\testdir1_level2",
                        $"testdir\\testdir1_level1\\testfile1_level2.txt",
                        $"testdir\\testfile1_level1.txt"
                    },
                    new FileViewModel
                    {
                        Name = $"testdir",
                        IsDirectory = true,
                        IsExpandable = true
                    }
                    .AddChild(new FileViewModel
                    {
                        Name = $"testdir\\testdir1_level1",
                        IsDirectory = true,
                        IsExpandable = true
                    }
                              .AddChild(new FileViewModel {
                        Name = $"testdir\\testdir1_level1\\testdir1_level2", IsDirectory = true
                    })
                              .AddChild(new FileViewModel {
                        Name = $"testdir\\testdir1_level1\\testfile1_level2.txt"
                    }))
                    .AddChild(new FileViewModel
                    {
                        Name = $"testdir\\testfile1_level1.txt"
                    })
                },
                new object[]
                {
                    $"testdir2\\testdir1_level1",
                    setting,
                    new List <string>
                    {
                        $"testdir2",
                        $"testdir2\\testdir1_level1",
                        $"testdir2\\testdir1_level1\\testdir1_level2",
                        $"testdir2\\testdir1_level1\\testfile1_level2.txt",
                        $"testdir2\\testfile1_level1.txt"
                    },
                    new FileViewModel
                    {
                        Name = $"testdir2\\testdir1_level1",
                        IsDirectory = true,
                        IsExpandable = true
                    }
                    .AddChild(new FileViewModel {
                        Name = $"testdir2\\testdir1_level1\\testdir1_level2", IsDirectory = true
                    })
                    .AddChild(new FileViewModel {
                        Name = $"testdir2\\testdir1_level1\\testfile1_level2.txt"
                    })
                },
            });
        }