public void Example1()
        {
            List <string> testData = new List <string>
            {
                "class: 1-3 or 5-7",
                "row: 6-11 or 33-44",
                "seat: 13-40 or 45-50",
                "",
                "your ticket:",
                "7,1,14",
                "",
                "nearby tickets:",
                "7,3,47",
                "40,4,50",
                "55,2,20",
                "38,6,12"
            };

            TicketValidator validator = new TicketValidator();

            validator.ParseData(testData);
            int result = validator.ValidateAllNumbers();

            Assert.AreEqual(71, result);
        }
Exemplo n.º 2
0
        public Ticket(int orderNumber)
            : this()
        {
            this.orderNumber = orderNumber;

            TicketValidator.Validate(this);
        }
        public void Example2()
        {
            List <string> testData = new List <string>
            {
                "class: 1-3 or 5-7",
                "row: 6-11 or 33-44",
                "seat: 13-40 or 45-50",
                "",
                "your ticket:",
                "7,1,14",
                "",
                "nearby tickets:",
                "7,3,47",
                "40,4,50",
                "55,2,20",
                "38,6,12"
            };

            TicketValidator validator = new TicketValidator();

            validator.ParseData(testData);
            validator.DecodeColumns();


            Assert.AreEqual("row", validator.GetRuleForColumn(0).Name);
            Assert.AreEqual("class", validator.GetRuleForColumn(1).Name);
            Assert.AreEqual("seat", validator.GetRuleForColumn(2).Name);
        }
Exemplo n.º 4
0
        public Solution(string input)
        {
            var blocks = Input.GetInput(input).Split(Environment.NewLine + Environment.NewLine).Select(b => b.Split(Environment.NewLine)).ToArray();

            var inputParser = new InputParser <string, int, int, int, int>(true, 5, new List <string>()
            {
                ": ", "-", " or ", "-"
            });

            ScanRules = blocks[0].Select(line => new ScanRule(inputParser.Parse(line))).ToList();

            var ticketParser = new InputParser <int[]>("line");

            MyTicket = new Ticket()
            {
                values = ticketParser.Parse(blocks[1][1])
            };

            OtherTickets = new List <Ticket>();
            for (int n = 1; n < blocks[2].Length; n++)
            {
                OtherTickets.Add(new Ticket()
                {
                    index = n, values = ticketParser.Parse(blocks[2][n])
                });
            }

            Validator = new TicketValidator(ScanRules);
        }
Exemplo n.º 5
0
        public void Part1()
        {
            TicketValidationResult result = TicketValidator.ValidateNearby(
                TicketDataParser.Parse(StringListRetriever.Retreive("InputList15.txt").ToList()));

            Assert.Equal(29759, result.InvalidValues.Sum());
        }
Exemplo n.º 6
0
        public void SetUp()
        {
            var info = CreateModel.CreateInfo();

            _dbContextMock = new Mock <ApplicationDbContext>();
            _dbContextMock.Setup(x => x.Info).Returns(CreateMock.CreateDbSetMock <VisitInfo>(new VisitInfo[] { info }).Object);
            _validator = new TicketValidator(_dbContextMock.Object);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Validates a ticket contained in the URL, presumably generated by
        /// the CAS server after a successful authentication.  The actual ticket
        /// validation is performed by the configured TicketValidator
        /// (i.e., CAS 1.0, CAS 2.0, SAML 1.0).  If the validation succeeds, the
        /// request is authenticated and a FormsAuthenticationCookie and
        /// corresponding CasAuthenticationTicket are created for the purpose of
        /// authenticating subsequent requests (see ProcessTicketValidation
        /// method).  If the validation fails, the authentication status remains
        /// unchanged (generally the user is and remains anonymous).
        /// </summary>
        public void ProcessTicketValidation(HttpContextBase httpContext)
        {
            HttpApplication app     = httpContext.ApplicationInstance;
            HttpRequestBase request = httpContext.Request;

            string ticket = request[_casServices.Settings.ArtifactParameterName];

            try {
                // Attempt to authenticate the ticket and resolve to an ICasPrincipal
                var principal = TicketValidator.Validate(ticket);

                // Save the ticket in the FormsAuthTicket.  Encrypt the ticket and send it as a cookie.
                var casTicket = new CasAuthenticationTicket(
                    ticket,
                    _urlUtil.RemoveCasArtifactsFromUrl(request.Url.AbsoluteUri),
                    request.UserHostAddress,
                    principal.Assertion,
                    principal.MaxAttributes,
                    _clock.UtcNow
                    );

                if (_casServices.ProxyTicketManager != null && !string.IsNullOrEmpty(principal.ProxyGrantingTicket))
                {
                    casTicket.ProxyGrantingTicketIou = principal.ProxyGrantingTicket;
                    casTicket.Proxies.AddRange(principal.Proxies);
                    string proxyGrantingTicket = _casServices.ProxyTicketManager.GetProxyGrantingTicket(casTicket.ProxyGrantingTicketIou);
                    if (!string.IsNullOrEmpty(proxyGrantingTicket))
                    {
                        casTicket.ProxyGrantingTicket = proxyGrantingTicket;
                    }
                }

                // TODO: Check the last 2 parameters.  We want to take the from/to dates from the FormsAuthenticationTicket.
                // However, we may need to do some clock drift correction.
                FormsAuthenticationTicket formsAuthTicket = CreateFormsAuthenticationTicket(
                    principal.Identity.Name,
                    ticket,
                    null,
                    null);

                SetAuthCookie(httpContext, formsAuthTicket);

                // Also save the ticket in the server store (if configured)
                if (_casServices.ServiceTicketManager != null)
                {
                    _casServices.ServiceTicketManager.UpdateTicketExpiration(casTicket, formsAuthTicket.Expiration);
                }

                // Jump directly to EndRequest.  Don't allow the Page and/or Handler to execute.
                // EndRequest will redirect back without the ticket in the URL
                app.CompleteRequest();
                return;
            }
            catch (TicketValidationException e) {
                // Leave principal null.  This might not have been a CAS service ticket.
                Logger.Error(e, "Ticket validation error: {0}", e);
            }
        }
        public void execute_throws_validation_exception_on_missing_severity(
            Envelope<Ticket> ticket,
            Mock<ICommand<Ticket>> inner)
        {
            ticket.Item.Severity = null;
            var sut = new TicketValidator(inner.Object);

            sut.Invoking(s => s.Execute(ticket)).ShouldThrow<ValidationException>();
        }
        public void execute_throws_validation_exception_on_description_bigger_than_500_chars(
            Envelope<Ticket> ticket,
            Mock<ICommand<Ticket>> inner)
        {
            ticket.Item.Description = new string('b', 501);
            var sut = new TicketValidator(inner.Object);

            sut.Invoking(s => s.Execute(ticket)).ShouldThrow<ValidationException>();
        }
Exemplo n.º 10
0
        public void TestTicketValidation(bool result, params int[] ticketInfo)
        {
            var ticketValidator = new TicketValidator();

            ticketValidator.AddRule("class", 1, 3, 5, 7);
            ticketValidator.AddRule("row", 6, 11, 33, 44);
            ticketValidator.AddRule("seat", 13, 40, 45, 50);
            ticketValidator.IsTicketValid(ticketInfo).ShouldBe(result, string.Join(',', ticketInfo));
        }
        public void execute_calls_inner_command(
            Envelope<Ticket> ticket,
            Mock<ICommand<Ticket>> inner)
        {
            var sut = new TicketValidator(inner.Object);

            sut.Execute(ticket);

            inner.Verify(i => i.Execute(ticket), Times.Once);
        }
Exemplo n.º 12
0
        public void Part1Sample()
        {
            TicketData ticketData = TicketDataParser.Parse(GetPart1SampleData());

            Assert.Equal(3, ticketData.ValidationRules.Count);
            Assert.Equal(5, ticketData.Tickets.Count);
            TicketValidationResult ticketValidationResult = TicketValidator.ValidateNearby(ticketData);

            Assert.Equal(71, ticketValidationResult.InvalidValues.Sum());
        }
Exemplo n.º 13
0
        public void Part2()
        {
            TicketData             ticketData             = TicketDataParser.Parse(StringListRetriever.Retreive("InputList15.txt").ToList());
            TicketValidationResult ticketValidationResult = TicketValidator.ValidateNearby(ticketData);
            FieldOrderResult       fieldOrderResult       = FieldOrderFinder.FindFieldOrderFor(ticketValidationResult.Tickets, ticketData.ValidationRules);

            Assert.Equal(1307550234719, fieldOrderResult.FieldOrder.Keys.Where(x => x.StartsWith("departure"))
                         .Select(x => System.Convert.ToInt64(ticketData.Tickets[0].DataItems[fieldOrderResult.FieldOrder[x]]))
                         .Aggregate <long, long>(1, (x, y) => x * y));
        }
Exemplo n.º 14
0
        public void Part2Sample()
        {
            TicketData ticketData = TicketDataParser.Parse(GetPart2SampleData());

            Assert.Equal(3, ticketData.ValidationRules.Count);
            Assert.Equal(4, ticketData.Tickets.Count);
            TicketValidationResult ticketValidationResult = TicketValidator.ValidateNearby(ticketData);

            Assert.Equal(3, ticketValidationResult.Tickets.Count);
            FieldOrderResult fieldOrderResult = FieldOrderFinder.FindFieldOrderFor(ticketValidationResult.Tickets, ticketData.ValidationRules);
        }
Exemplo n.º 15
0
        public async Task <ActionResult> Update(int id, [FromBody] TicketRequestDto dto)
        {
            var validator = new TicketValidator();
            var result    = await validator.ValidateAsync(dto);

            if (!result.IsValid)
            {
                return(BadRequest(result.Errors));
            }
            return(Ok(await _service.Update(id, dto)));
        }
Exemplo n.º 16
0
        public void TestRule(string rule, int pos, bool result)
        {
            var ticketValidator = new TicketValidator();

            ticketValidator.AddRule("class", 0, 1, 4, 19);
            ticketValidator.AddRule("row", 0, 5, 8, 19);
            ticketValidator.AddRule("seat", 0, 13, 16, 19);
            ticketValidator.IsTicketValid(new int[] { 3, 9, 18 });
            ticketValidator.IsTicketValid(new int[] { 15, 1, 5 });
            ticketValidator.IsTicketValid(new int[] { 5, 14, 9 });
            ticketValidator.TestRule(rule, pos).ShouldBe(result, $"{rule} {pos}");
        }
Exemplo n.º 17
0
        public void TestTicketScanningErrorRate()
        {
            var ticketValidator = new TicketValidator();

            ticketValidator.AddRule("class", 1, 3, 5, 7);
            ticketValidator.AddRule("row", 6, 11, 33, 44);
            ticketValidator.AddRule("seat", 13, 40, 45, 50);
            ticketValidator.IsTicketValid(new int[] { 7, 3, 47 });
            ticketValidator.IsTicketValid(new int[] { 40, 4, 50 });
            ticketValidator.IsTicketValid(new int[] { 55, 2, 20 });
            ticketValidator.IsTicketValid(new int[] { 38, 6, 12 });
            ticketValidator.TicketScanningErrorRate.ShouldBe(71);
        }
Exemplo n.º 18
0
        public void TestMatrix()
        {
            var ticketValidator = new TicketValidator();

            ticketValidator.AddRule("class", 0, 1, 4, 19);
            ticketValidator.AddRule("row", 0, 5, 8, 19);
            ticketValidator.AddRule("seat", 0, 13, 16, 19);
            ticketValidator.IsTicketValid(new int[] { 3, 9, 18 });
            ticketValidator.IsTicketValid(new int[] { 15, 1, 5 });
            ticketValidator.IsTicketValid(new int[] { 5, 14, 9 });
            var fieldMatrix = ticketValidator.GetFieldMatrix();

            // Tests stopped working?
            //fieldMatrix.ShouldContainKeyAndValue<string, int[]>("class", new int[] { 0, 1, 1 });
            //fieldMatrix.ShouldContainKeyAndValue<string, int[]>("row", new int[] { 1, 1, 1 });
            //fieldMatrix.ShouldContainKeyAndValue<string, int[]>("seat", new int[] { 0, 0, 1 });
        }
Exemplo n.º 19
0
        public void TestResolvedFields()
        {
            var ticketValidator = new TicketValidator();

            ticketValidator.AddRule("class", 0, 1, 4, 19);
            ticketValidator.AddRule("row", 0, 5, 8, 19);
            ticketValidator.AddRule("seat", 0, 13, 16, 19);
            ticketValidator.IsTicketValid(new int[] { 3, 9, 18 });
            ticketValidator.IsTicketValid(new int[] { 15, 1, 5 });
            ticketValidator.IsTicketValid(new int[] { 5, 14, 9 });
            ticketValidator.GetResolvedFields().OrderBy(d => d.Key).ShouldBe(
                new Dictionary <string, int> {
                { "class", 1 },
                { "row", 0 },
                { "seat", 2 },
            }
                );
        }
Exemplo n.º 20
0
        static void Main(string[] args)
        {
            DatabaseConnectionManager databaseConnectionManager = new DatabaseConnectionManager();

            UserValidator   userValidator   = new UserValidator();
            MatchValidator  matchValidator  = new MatchValidator();
            TicketValidator ticketValidator = new TicketValidator();

            UserRepository   userRepository   = new UserRepository(databaseConnectionManager, "users", userValidator);
            TicketRepository ticketRepository = new TicketRepository(databaseConnectionManager, "tickets", ticketValidator);
            MatchRepository  matchRepository  = new MatchRepository(databaseConnectionManager, "matches", matchValidator);


            UserService   userService   = new UserService(userRepository);
            MatchService  matchService  = new MatchService(matchRepository);
            TicketService ticketService = new TicketService(ticketRepository, matchRepository);

            SellTicketsServer sellTicketsServer = new SellTicketsServer(ticketService, userService, matchService);
            ConcurrentServer  concurrentServer  = new SerialSellTicketsServer("127.0.0.1", 5555, sellTicketsServer);

            concurrentServer.Start();
        }
Exemplo n.º 21
0
        static void Main(string[] args)
        {
            DatabaseConnectionManager databaseConnectionManager = new DatabaseConnectionManager();

            UserValidator   userValidator   = new UserValidator();
            MatchValidator  matchValidator  = new MatchValidator();
            TicketValidator ticketValidator = new TicketValidator();

            UserRepository   userRepository   = new UserRepository(databaseConnectionManager, "users", userValidator);
            TicketRepository ticketRepository = new TicketRepository(databaseConnectionManager, "tickets", ticketValidator);
            MatchRepository  matchRepository  = new MatchRepository(databaseConnectionManager, "matches", matchValidator);


            UserService   userService   = new UserService(userRepository);
            MatchService  matchService  = new MatchService(matchRepository);
            TicketService ticketService = new TicketService(ticketRepository, matchRepository);

            SellTicketsServer sellTicketsServer = new SellTicketsServer(ticketService, userService, matchService);

            var server = new Grpc.Core.Server
            {
                Services = { AppService.BindService(sellTicketsServer) },
                Ports    = { new ServerPort("localhost", 5555, ServerCredentials.Insecure) }
            };

            server.Start();
            while (true)
            {
                var line = Console.ReadLine();
                if (line != null && line.ToLower().Equals("exit"))
                {
                    server.ShutdownAsync().Wait();
                    break;
                }
            }
        }
Exemplo n.º 22
0
 public Product3Validator()
 {
     TicketValidator.Validate().Policy().ApplSignedState().DistributionChannel();
 }
 public EditTicketCommand(MFGContext context, IMapper mapper, TicketValidator validator)
 {
     _context   = context;
     _mapper    = mapper;
     _validator = validator;
 }
        public void ValidateRange_WithNumStrings_ShouldReturnNums(string str, int expected)
        {
            int result = TicketValidator.ValidateRange(str);

            Assert.True(result == expected);
        }
 public TicketService(IUnitOfWork unitOfWork, IMapper mapper)
 {
     this.unitOfWork = unitOfWork;
     this.mapper     = mapper;
     validator       = new TicketValidator();
 }
Exemplo n.º 26
0
 public TicketRepository(DatabaseConnectionManager databaseConnectionManager, string tableName, TicketValidator validator) : base(databaseConnectionManager, tableName, validator)
 {
 }
Exemplo n.º 27
0
 public Product2Validator()
 {
     TicketValidator.Validate().Policy().ApplSignedState();
 }