public void Success_WhenCandidateHasValidToken_ReturnsTrue()
        {
            var candidate = new Candidate()
            {
                MagicLinkTokenExpiresAt = DateTime.UtcNow.AddMinutes(1)
            };

            var result = new CandidateMagicLinkExchangeResult(candidate);

            result.Success.Should().BeTrue();
        }
        public void Status_WhenCandidateHasAlreadyExchangedToken_ReturnsAlreadyExchanged()
        {
            var candidate = new Candidate()
            {
                MagicLinkTokenStatusId = (int)Candidate.MagicLinkTokenStatus.Exchanged
            };

            var result = new CandidateMagicLinkExchangeResult(candidate);

            result.Status.Should().Be(ExchangeStatus.AlreadyExchanged);
        }
        public void Status_WhenCandidateHasExpiredToken_ReturnsExpired()
        {
            var candidate = new Candidate()
            {
                MagicLinkTokenExpiresAt = DateTime.UtcNow.AddMinutes(-1)
            };

            var result = new CandidateMagicLinkExchangeResult(candidate);

            result.Status.Should().Be(ExchangeStatus.Expired);
        }
        public void ExchangeMagicLinkTokenForMember_InvalidToken_RespondsWithUnauthorized()
        {
            var token  = Guid.NewGuid().ToString();
            var result = new CandidateMagicLinkExchangeResult(null);

            _mockMagicLinkTokenService.Setup(m => m.Exchange(token)).Returns(result);

            var response = _controller.ExchangeMagicLinkTokenForMember(token);

            var unauthorized = response.Should().BeOfType <UnauthorizedObjectResult>().Subject;

            unauthorized.Value.Should().BeEquivalentTo(result);
        }
        public void ExchangeMagicLinkTokenForMember_ValidToken_RespondsWithMailingListAddMember()
        {
            var candidate = new Candidate {
                Id = Guid.NewGuid(), MagicLinkTokenExpiresAt = DateTime.UtcNow.AddMinutes(1)
            };
            var result = new CandidateMagicLinkExchangeResult(candidate);

            _mockMagicLinkTokenService.Setup(m => m.Exchange(candidate.MagicLinkToken)).Returns(result);

            var response = _controller.ExchangeMagicLinkTokenForMember(candidate.MagicLinkToken);

            var ok            = response.Should().BeOfType <OkObjectResult>().Subject;
            var responseModel = ok.Value as MailingListAddMember;

            responseModel.CandidateId.Should().Be(candidate.Id);
        }
        public void ExchangeMagicLinkTokenForMember_ValidToken_UpdatesTokenAsExchanged()
        {
            var candidate = new Candidate {
                Id = Guid.NewGuid(), MagicLinkTokenExpiresAt = DateTime.UtcNow.AddMinutes(1)
            };
            var result = new CandidateMagicLinkExchangeResult(candidate);

            _mockMagicLinkTokenService.Setup(m => m.Exchange(candidate.MagicLinkToken)).Returns(result);

            var response = _controller.ExchangeMagicLinkTokenForMember(candidate.MagicLinkToken);

            _mockJobClient.Verify(x => x.Create(
                                      It.Is <Job>(job => job.Type == typeof(UpsertCandidateJob) && job.Method.Name == "Run" &&
                                                  IsMatch(candidate, (string)job.Args[0])),
                                      It.IsAny <EnqueuedState>()));
        }
Пример #7
0
        public CandidateMagicLinkExchangeResult Exchange(string token)
        {
            var matchingCandidates = _crm.MatchCandidates(token);

            // Return null if there are no matches and also in the very
            // unlikely case a token has been duplicated.
            if (matchingCandidates.Count() != 1)
            {
                return(new CandidateMagicLinkExchangeResult(null));
            }

            var candidate = matchingCandidates.First();
            var result    = new CandidateMagicLinkExchangeResult(candidate);

            candidate.MagicLinkTokenStatusId = (int)Candidate.MagicLinkTokenStatus.Exchanged;

            return(result);
        }
        public void Success_WhenCandidateHasInvalidToken_ReturnsFalse()
        {
            var result = new CandidateMagicLinkExchangeResult(null);

            result.Success.Should().BeFalse();
        }
        public void Status_WithNullCandidate_ReturnsInvalid()
        {
            var result = new CandidateMagicLinkExchangeResult(null);

            result.Status.Should().Be(ExchangeStatus.Invalid);
        }