public void Handle(TlsRptEntityState state, Message message) { foreach (IChangeNotifier changeNotifier in _notifiers) { changeNotifier.Handle(state, message); } }
public async Task HandleTlsRptRecordsEvaluatedAndNewEvaluationUpdatesStateAndPublishes() { A.CallTo(() => _tlsRptEntityDao.Get(Id)).Returns( new TlsRptEntityState(Id, 2, TlsRptState.PollPending, DateTime.Now) { LastUpdated = DateTime.Now.AddDays(-1), TlsRptRecords = CreateTlsRptRecords() }); TlsRptEntityState entityState = CreateTlsRptEntityState(); entityState.Messages.Add(new Message(Guid.NewGuid(), MessageSources.TlsRptEvaluator, MessageType.error, "EvaluationError", string.Empty)); entityState.TlsRptRecords.Records[0].Tags[0].Explanation = "Explanation"; TlsRptRecordsEvaluated recordsEvaluated = new TlsRptRecordsEvaluated(Id, entityState.TlsRptRecords, new List <Message> { new Message(Guid.NewGuid(), MessageSources.TlsRptEvaluator, MessageType.error, "EvaluationError", string.Empty) }, DateTime.MinValue); await _tlsRptEntity.Handle(recordsEvaluated); A.CallTo(() => _dispatcher.Dispatch(A <TlsRptRecordEvaluationsChanged> .That.Matches( _ => _.Messages[0].Text.Equals(entityState.Messages[0].Text) && _.Records.Records[0].Tags[0].Explanation.Equals(entityState.TlsRptRecords.Records[0].Tags[0].Explanation)), A <string> ._)) .MustHaveHappenedOnceExactly(); A.CallTo(() => _tlsRptEntityDao.Save(A <TlsRptEntityState> ._)).MustHaveHappenedOnceExactly(); }
private static TlsRptEntityState CreateTlsRptEntityState(string domain = Id, string record = "v=TLSRPTv1;rua=mailto:[email protected]") { TlsRptEntityState state = new TlsRptEntityState(domain, 1, TlsRptState.Created, DateTime.UtcNow); state.TlsRptRecords = CreateTlsRptRecords(Id, record: record); return(state); }
private async Task Insert(TlsRptEntityState state) { await MySqlHelper.ExecuteNonQueryAsync(ConnectionString, @"INSERT INTO `tls_rpt_entity`(`id`,`version`,`state`)VALUES(@domain,@version,@state)", new MySqlParameter("domain", state.Id), new MySqlParameter("version", state.Version), new MySqlParameter("state", JsonConvert.SerializeObject(state))); }
public async Task SaveDuplicateEntryThrows() { TlsRptEntityState state1 = new TlsRptEntityState(Id, 1, TlsRptState.PollPending, DateTime.UtcNow); await _dao.Save(state1); Assert.ThrowsAsync <InvalidOperationException>(() => _dao.Save(state1)); }
private TlsRptEntityState CreateEntityStateWithMessages(params Message[] messages) { TlsRptEntityState entityState = new TlsRptEntityState("", 0, new TlsRptState(), DateTime.MaxValue) { Messages = messages.ToList() }; return(entityState); }
private TlsRptEntityState CreateEntityState(params string[] recordStrings) { IEnumerable <TlsRptRecord> tlsRptRecords = recordStrings.Select(x => new TlsRptRecord(x, x.Split(";").ToList(), null)); TlsRptEntityState entityState = new TlsRptEntityState("", 0, new TlsRptState(), DateTime.MaxValue) { TlsRptRecords = new TlsRptRecords("abc.com", tlsRptRecords.ToList(), 0) }; return(entityState); }
public async Task GetStateExistsReturnsState() { TlsRptEntityState state = new TlsRptEntityState(Id, 1, TlsRptState.PollPending, DateTime.UtcNow); await Insert(state); TlsRptEntityState stateFromDatabase = await _dao.Get(Id); Assert.That(stateFromDatabase.Id, Is.EqualTo(state.Id)); Assert.That(stateFromDatabase.Version, Is.EqualTo(state.Version)); }
//private TlsRptEntityState CreateEntityStateWithRecords(params Message[] messages) //{ // List<TlsRptRecord> records = messages.Select(x => new TlsRptRecord()).ToList(); // TlsRptEntityState entityState = new TlsRptEntityState("", 0, new TlsRptState(), DateTime.MaxValue) // { // TlsRptRecords = new TlsRptRecords("", records) // }; // return entityState; //} private static TlsRptEntityState CreateEntityStateWithRecords(params Message[] messages) { string domain = "abc.com"; string record = "v=TLSRPTv1;rua=mailto:[email protected]"; TlsRptEntityState state = new TlsRptEntityState(domain, 1, TlsRptState.Created, DateTime.UtcNow); state.TlsRptRecords = CreateTlsRptRecords(domain, record: record); state.Messages = messages.ToList(); return(state); }
public async Task SaveStateExistsStateIsUpdated() { TlsRptEntityState state = new TlsRptEntityState(Id, 1, TlsRptState.PollPending, DateTime.UtcNow); await _dao.Save(state); state = new TlsRptEntityState(Id, 2, TlsRptState.PollPending, DateTime.UtcNow); await _dao.Save(state); List <TlsRptEntityState> states = await SelectAll(Id); Assert.That(states.Count, Is.EqualTo(1)); Assert.That(states[0].Id, Is.EqualTo(state.Id)); Assert.That(states[0].Version, Is.EqualTo(state.Version)); }
public async Task Save(TlsRptEntityState state) { string connectionString = await _connectionInfoAsync.GetConnectionStringAsync(); string serializedState = JsonConvert.SerializeObject(state); int rowsAffected = await MySqlHelper.ExecuteNonQueryAsync(connectionString, TlsRptEntityDaoResouces.InsertTlsRptEntity, new MySqlParameter("domain", state.Id), new MySqlParameter("version", state.Version), new MySqlParameter("state", serializedState)); if (rowsAffected == 0) { throw new InvalidOperationException( $"Didn't update TlsRptEntityState because version {state.Version} has already been persisted."); } }
public void Handle(TlsRptEntityState state, Message message) { if (message is TlsRptRecordsEvaluated recordsEvaluated) { List <string> currentRecords = state.TlsRptRecords?.Records.Select(x => x.Record?.Replace("; ", ";")).ToList() ?? new List <string>(); List <string> newRecords = recordsEvaluated.Records?.Records.Select(x => x.Record?.Replace("; ", ";")).ToList() ?? new List <string>(); List <string> addedRecords = newRecords.Except(currentRecords).ToList(); if (addedRecords.Any()) { TlsRptRecordAdded advisoryAdded = new TlsRptRecordAdded(state.Id, addedRecords); _dispatcher.Dispatch(advisoryAdded, _tlsRptEntityConfig.SnsTopicArn); } List <string> removedRecords = currentRecords.Except(newRecords).ToList(); if (removedRecords.Any()) { TlsRptRecordRemoved advisoryRemoved = new TlsRptRecordRemoved(state.Id, removedRecords); _dispatcher.Dispatch(advisoryRemoved, _tlsRptEntityConfig.SnsTopicArn); } } }
public void Handle(TlsRptEntityState state, Common.Messaging.Abstractions.Message message) { if (message is TlsRptRecordsEvaluated evaluationResult) { List <Message> currentMessages = state.Messages.Where(_ => _.MessageDisplay != MessageDisplay.Prompt).ToList(); List <Message> newMessages = evaluationResult.Messages.Where(_ => _.MessageDisplay != MessageDisplay.Prompt).ToList(); List <Message> addedMessages = newMessages.Except(currentMessages, _messageEqualityComparer).ToList(); if (addedMessages.Any()) { TlsRptAdvisoryAdded advisoryAdded = new TlsRptAdvisoryAdded(state.Id, addedMessages.Select(x => new AdvisoryMessage((MessageType)x.MessageType, x.Text, (Notifications.MessageDisplay)x.MessageDisplay)).ToList()); _dispatcher.Dispatch(advisoryAdded, _tlsRptEntityConfig.SnsTopicArn); } List <Message> removedMessages = currentMessages.Except(newMessages, _messageEqualityComparer).ToList(); if (removedMessages.Any()) { TlsRptAdvisoryRemoved advisoryRemoved = new TlsRptAdvisoryRemoved(state.Id, removedMessages.Select(x => new AdvisoryMessage((MessageType)x.MessageType, x.Text, (Notifications.MessageDisplay)x.MessageDisplay)).ToList()); _dispatcher.Dispatch(advisoryRemoved, _tlsRptEntityConfig.SnsTopicArn); } } }
public async Task GetNoStateExistsReturnsNull() { TlsRptEntityState state = await _dao.Get(Id); Assert.That(state, Is.Null); }