public async Task ShoudNotReset_TokenExpiration_WhenToken_IsExpired(
            long id, string username, string password, int minutes)
        {
            var testToken      = new Token(id, username, password, TimeSpan.FromMinutes(minutes));
            var initialValidTo = testToken.ValidTo;

            var spec = TokenSpecification.GetNotExpiredByValue(testToken.Value);

            _fixture.Data
            .Setup(x => x.Tokens.SingleOrDefaultAsync(It.IsAny <TokenSpecification>()))
            .Returns(Task.FromResult(testToken));

            _fixture.Configuration
            .Setup(x => x.ValidDurationInMinutes)
            .Returns(minutes);

            var command = new ValidateTokenCommand
            {
                Value = testToken.Value
            };

            var resultToken = await _fixture.Handler.Handle(command, CancellationToken.None);

            Assert.True(initialValidTo == resultToken.ValidTo);
        }
Пример #2
0
        private static void PrintSpec(TokenSpecification specification, bool draft)
        {
            _log.Info("Print Controller printing Token Specification: " + specification.Artifact.Name);

            var trimName = specification.Artifact.Name.Replace(" ", "-");

            _outputFolder = ModelMap.FilePath + ModelMap.SpecificationsFolder + ModelMap.FolderSeparator + trimName +
                            ModelMap.FolderSeparator + ModelMap.Latest;
            _filePath = _outputFolder + ModelMap.FolderSeparator + trimName + "-spec.docx";
            try
            {
                Directory.CreateDirectory(_outputFolder);
                InitWorkingDocument(ModelMap.StyleSource);
            }
            catch (Exception ex)
            {
                _log.Error("Artifact Output Folder: " + _outputFolder + " cannot be created.");
                _log.Error(ex);
                return;
            }

            SpecificationPrinter.PrintSpecification(_document, specification, true);
            Utils.InsertCustomWatermark(_document, draft ? ModelMap.DraftWaterMark : ModelMap.WaterMark);
            Utils.AddFooter(_document, specification.Artifact.Name + " - " + specification.SpecificationHash);
            Save();
        }
        public async Task ShoudNotThrow_Exception_WhenValidToken(
            long id, string username, string password, int minutes)
        {
            var testToken = new Token(id, username, password, TimeSpan.FromMinutes(minutes));

            var spec = TokenSpecification.GetNotExpiredByValue(testToken.Value);

            _fixture.Data
            .Setup(x => x.Tokens.SingleOrDefaultAsync(It.IsAny <TokenSpecification>()))
            .Returns(Task.FromResult(testToken));

            _fixture.Configuration
            .Setup(x => x.ValidDurationInMinutes)
            .Returns(minutes);

            var command = new ValidateTokenCommand
            {
                Value = testToken.Value
            };

            var exception = await Record.ExceptionAsync(
                () => _fixture.Handler.Handle(command, CancellationToken.None));

            Assert.True(exception == null);
        }
Пример #4
0
        public static void OutputSpecification(TokenSpecification tokenSpec)
        {
            Log.Error("---------------------------------------------------");
            Log.Error("Token Specification:");
            Log.Error("---------------------------------------------------");

            var tDef = tokenSpec.ToString();

            var fDef = JToken.Parse(tDef).ToString();

            Log.Info(fDef);
        }
Пример #5
0
        public static Classification GetClassification(TokenSpecification spec)
        {
            var template = ModelManager.GetTokenTemplate(new TokenTemplateId
            {
                DefinitionId = spec.DefinitionReference.Id
            });

            return(new Classification
            {
                RepresentationType = spec.TokenBase.RepresentationType,
                TemplateType = template.Formula.TemplateType,
                ValueType = spec.TokenBase.ValueType,
                TokenType = spec.TokenBase.TokenType,
                TokenUnit = spec.TokenBase.TokenUnit,
                Supply = spec.TokenBase.Supply
            });
        }
Пример #6
0
        public TokenAuthenticationService(TokenSigningCredentials signingCredentials,
                                          TokenSpecification verificationSpecification,
                                          ApplicationDbContext dbContext,
                                          ILogger logger,
                                          JwtSecurityTokenHandler tokenHandler = null)
        {
            _signingCredentials = signingCredentials ??
                                  throw new ArgumentNullException(nameof(signingCredentials));

            _verificationSpecification = verificationSpecification ??
                                         throw new ArgumentNullException(nameof(verificationSpecification));

            _dbContext = dbContext ??
                         throw new ArgumentNullException(nameof(dbContext));
            _logger = logger;

            _tokenHandler = tokenHandler ?? new JwtSecurityTokenHandler();
        }
Пример #7
0
        public async Task <Token> Handle(ValidateTokenCommand request, CancellationToken cancellationToken)
        {
            var spec  = TokenSpecification.GetNotExpiredByValue(request.Value);
            var token = await _data.Tokens.SingleOrDefaultAsync(spec);

            if (token == null)
            {
                throw new AuthenticationApplicationException();
            }

            var now = DateTime.UtcNow;

            if (now < token.ValidTo && _configuration.ValidDurationInMinutes.Value > 0)
            {
                token.ResetExpiration(_configuration.ValidDuration);
            }

            return(token);
        }
Пример #8
0
 public Validation(VolunteerSpecifications volunteerSpecifications, OrganisationSpecifications organisationSpecifications, TokenSpecification tokenSpecification)
 {
     _volunteerSpecifications    = volunteerSpecifications;
     _organisationSpecifications = organisationSpecifications;
     _tokenSpecification         = tokenSpecification;
 }
Пример #9
0
        public static void PrintSpecification(WordprocessingDocument document, TokenSpecification spec, bool isForAppendix = false)
        {
            var classification = ModelMap.GetClassification(spec);

            ArtifactPrinter.AddArtifactSpecification(document, spec.Artifact, classification, true);
            _log.Info("Printing Token Specification Properties: " + spec.Artifact.Name);
            var body = document.MainDocumentPart.Document.Body;

            var beDef = body.AppendChild(new Paragraph());
            var beRun = beDef.AppendChild(new Run());

            beRun.AppendChild(new Text(spec.Artifact.Name + " is:"));
            Utils.ApplyStyleToParagraph(document, "Heading1", "Heading1", beDef);

            var behaviorList = spec.Behaviors.Select(b => b.Artifact.Name).ToList();

            Utils.AddBulletList(document, behaviorList);

            if (spec.PropertySets.Count > 0)
            {
                var bgDef = body.AppendChild(new Paragraph());
                var bgRun = bgDef.AppendChild(new Run());
                bgRun.AppendChild(new Text("It includes the following Property Sets:"));
                Utils.ApplyStyleToParagraph(document, "Heading3", "Heading3", bgDef, JustificationValues.Center);

                var propSetList = spec.PropertySets.Select(b => b.Artifact.Name).ToList();
                Utils.AddBulletList(document, propSetList);
            }

            if (spec.ChildTokens.Count > 0)
            {
                var cDef = body.AppendChild(new Paragraph());
                var cRun = cDef.AppendChild(new Run());
                cRun.AppendChild(new Text("As a Hybrid " + spec.Artifact.Name + " has the following Child Tokens:"));
                Utils.ApplyStyleToParagraph(document, "Heading3", "Heading3", cDef, JustificationValues.Center);
                foreach (var c in spec.ChildTokens)
                {
                    ArtifactPrinter.AddChildArtifactSpecification(document, c);
                    var bbDef = body.AppendChild(new Paragraph());
                    var bbRun = bbDef.AppendChild(new Run());
                    bbRun.AppendChild(new Text(""));
                    Utils.ApplyStyleToParagraph(document, "Normal", "Normal", bbDef, JustificationValues.Center);
                }
            }

            var detailsDef = body.AppendChild(new Paragraph());
            var detailsRun = detailsDef.AppendChild(new Run());

            detailsRun.AppendChild(new Text(spec.Artifact.Name + " Details"));
            Utils.ApplyStyleToParagraph(document, "Heading1", "Heading1", detailsDef, JustificationValues.Center);

            BasePrinter.AddBaseSpecification(document, spec.TokenBase);

            var dDef = body.AppendChild(new Paragraph());
            var dRun = dDef.AppendChild(new Run());

            dRun.AppendChild(new Text("Behaviors"));
            Utils.ApplyStyleToParagraph(document, "Heading2", "Heading2", dDef);

            foreach (var b in spec.Behaviors)
            {
                BehaviorPrinter.AddBehaviorSpecification(document, b);
            }

            foreach (var bg in spec.BehaviorGroups)
            {
                BehaviorGroupPrinter.AddBehaviorGroupSpecification(document, bg);
            }

            foreach (var ps in spec.PropertySets)
            {
                PropertySetPrinter.AddPropertySetSpecification(document, ps);
            }

            foreach (var c in spec.ChildTokens)
            {
                PrintSpecification(document, c, false);
                var bbDef = body.AppendChild(new Paragraph());
                var bbRun = bbDef.AppendChild(new Run());
                bbRun.AppendChild(new Text(""));
                Utils.ApplyStyleToParagraph(document, "Normal", "Normal", bbDef, JustificationValues.Center);
            }

            if (isForAppendix)
            {
                return;
            }
            var pageBreak = body.AppendChild(new Paragraph());
            var pbr       = pageBreak.AppendChild(new Run());

            pbr.AppendChild(new Text(""));

            if (pageBreak.ParagraphProperties == null)
            {
                pageBreak.ParagraphProperties = new ParagraphProperties();
            }
            pageBreak.ParagraphProperties.PageBreakBefore = new PageBreakBefore();
            Utils.ApplyStyleToParagraph(document, "Normal", "Normal", pageBreak);
        }