Пример #1
0
        public void ShouldContainNoErrors(string description, string image)
        {
            // Arrange
            var name    = "name";
            var command = new CreateFlowCommand(name, description, image);

            // Act
            var validationResult = _validator.Validate(command);
            var exists           = validationResult.Errors.Count > 0;

            // Assert
            exists.Should().BeFalse();
        }
Пример #2
0
        public void ShouldHaveFlowNameCannotStartOrEndWithWhiteSpaceValidationErrorWhenNameStartsOrEndsWithWhiteSpace(string symbols)
        {
            // Arrange
            var invalidName = symbols;
            var command     = new CreateFlowCommand(invalidName, "any", "any");

            // Act
            var validationResult = _validator.Validate(command);
            var exists           = validationResult.Errors.Any(a => a.PropertyName.Equals("Name") && a.ErrorMessage.Contains(ValidationFailures.FlowNameCannotStartOrEndWithWhiteSpace));

            // Assert
            exists.Should().BeTrue();
        }
Пример #3
0
        public void ShouldHaveFlowNameMandatoryValidationFailureWhenNameIsNull()
        {
            // Arrange
            string name        = null;
            var    description = "description";
            var    image       = "image";
            var    command     = new CreateFlowCommand(name, description, image);

            // Act
            var validationResult = _validator.Validate(command);
            var exists           =
                validationResult.Errors.Any(
                    a => a.PropertyName.Equals("Name") && a.ErrorMessage.Contains(ValidationFailures.FlowNameMandatory));

            // Assert
            exists.Should().BeTrue();
        }
Пример #4
0
 public GenerateContextMiddleware(RequestDelegate next, CreateFlowCommand createFlowCommand,
                                  ILogger <GenerateContextMiddleware> logger) : base(next, logger)
 {
     _createFlowCommand = createFlowCommand;
 }
Пример #5
0
        public CreateFlowCommand Map(CreateFlowRequest request)
        {
            var result = new CreateFlowCommand(request.BodyName, request.BodyDescription, request.BodyImage);

            return(result);
        }
        public async Task ExecuteAsync_GeneralFlow(ChallengeType challengeType, bool isQr, bool isPartial,
                                                   string payload, bool fido2Enabled, FlowType expectedFlowType)
        {
            var fixture = new Fixture().SetOwnidSpecificSettings();

            var cacheService       = fixture.Freeze <Mock <ICacheItemRepository> >();
            var urlProvider        = fixture.Freeze <IUrlProvider>();
            var identitiesProvider = fixture.Freeze <IIdentitiesProvider>();
            var configuration      = fixture.Freeze <IOwnIdCoreConfiguration>();
            var linkAdapter        = fixture.Freeze <Mock <IAccountLinkHandler> >();
            var language           = fixture.Freeze <string>();

            configuration.TFAEnabled = fido2Enabled;
            configuration.MaximumNumberOfConnectedDevices = 99;

            var did = fixture.Create <string>();

            linkAdapter.Setup(x => x.GetCurrentUserLinkStateAsync(It.IsAny <string>()))
            .ReturnsAsync(new LinkState(did, 1));

            var command = new CreateFlowCommand(cacheService.Object, urlProvider, identitiesProvider,
                                                configuration, linkAdapter.Object);

            var actual = await command.ExecuteAsync(new GenerateContextRequest
            {
                Type      = challengeType,
                IsQr      = isQr,
                IsPartial = isPartial,
                Payload   = payload,
                Language  = language
            });

            var context    = identitiesProvider.GenerateContext();
            var nonce      = identitiesProvider.GenerateNonce();
            var expiration = configuration.CacheExpirationTimeout;

            //TODO: refactor implementation
            if (challengeType == ChallengeType.Link)
            {
                var capturedPayload = payload;

                linkAdapter.Verify(x => x.GetCurrentUserLinkStateAsync(capturedPayload), Times.Once);
                payload = null;
            }
            else
            {
                did = null;
            }

            cacheService.Verify(
                x => x.CreateAsync(
                    It.Is <CacheItem>(y => y.Context == context && y.Nonce == nonce && y.FlowType == expectedFlowType),
                    null), Times.Once);

            var url      = urlProvider.GetWebAppSignWithCallbackUrl(urlProvider.GetStartFlowUrl(context), language);
            var expected = new GetChallengeLinkResponse(context, url.ToString(), nonce, expiration, false);

            expected.Config.LogLevel = "0";

            actual.Should().BeEquivalentTo(expected);
        }