public void getRegisteredSipsOnline_should_be_updated_by_codec_registration() { var repo = GetCachedRegisteredSipRepository(); var sipsOnline = repo.GetCachedRegisteredSips(); var sipOnline = sipsOnline.First(); var updated = sipOnline.Updated; var repo2 = GetSimpleRegisteredSipRepository(); var sip = repo2.GetRegisteredSipById(sipOnline.Id); Thread.Sleep(1200); var newSip = new RegisteredSip { IP = sip.IP, Port = sip.Port, ServerTimeStamp = sip.ServerTimeStamp, SIP = sip.SIP, UserAgentHead = sip.UserAgentHead, Username = sip.Username, DisplayName = sip.DisplayName, Expires = sip.Expires }; var changeStatus = repo.UpdateRegisteredSip(newSip); Assert.AreEqual(KamailioMessageChangeStatus.NothingChanged, changeStatus); sipOnline = repo.GetCachedRegisteredSips().First(); var updated2 = sipOnline.Updated; Assert.AreNotEqual(updated, updated2); }
public void should_not_reload_list_from_internal_repository_when_codec_reregistered() { var registeredSip = new RegisteredSip() { SIP = "*****@*****.**" }; var internalList = new List <RegisteredSipDto> { new RegisteredSipDto { Id = Guid.NewGuid(), Sip = "*****@*****.**" } }; A.CallTo(() => _internalRegisteredSipRepository.GetCachedRegisteredSips()).Returns(internalList); A.CallTo(() => _internalRegisteredSipRepository.UpdateRegisteredSip(registeredSip)).Returns( new KamailioMessageHandlerResult() { ChangedObjectId = internalList[0].Id, ChangeStatus = KamailioMessageChangeStatus.NothingChanged }); // Act _sut.GetCachedRegisteredSips(); A.CallTo(() => _internalRegisteredSipRepository.GetCachedRegisteredSips()).MustHaveHappened(Repeated.Exactly.Once); _sut.UpdateRegisteredSip(registeredSip); A.CallTo(() => _internalRegisteredSipRepository.GetCachedRegisteredSips()).MustHaveHappened(Repeated.Exactly.Once); _sut.GetCachedRegisteredSips(); A.CallTo(() => _internalRegisteredSipRepository.GetCachedRegisteredSips()).MustHaveHappened(Repeated.Exactly.Once); }
public void should_handle_properties_with_null_value_in_object_hierarcy() { var obj = new RegisteredSip() { Location = null }; var s = MetadataHelper.GetPropertyValue(obj, "Location.ShortName"); Assert.AreEqual(string.Empty, s); }
public void should_handle_invalid_path() { var obj = new RegisteredSip() { Location = new Location() { ShortName = "kort namn" } }; var s = MetadataHelper.GetPropertyValue(obj, "Location.SkjortName"); Assert.AreEqual("", s); }
public void should_handle_object_hierarchy() { var obj = new RegisteredSip() { Location = new Location() { ShortName = "kort namn" } }; var s = MetadataHelper.GetPropertyValue(obj, "Location.ShortName"); Assert.AreEqual("kort namn", s); }
public void should_handle_empty_path() { var obj = new RegisteredSip() { Location = new Location() { ShortName = "kort namn" } }; var s = MetadataHelper.GetPropertyValue(obj, string.Empty); Assert.AreEqual("", s); }
public KamailioMessageHandlerResult RegisterSip(KamailioRegistrationMessage sipMessage) { var sip = new RegisteredSip { IP = sipMessage.Ip, Port = sipMessage.Port, ServerTimeStamp = sipMessage.UnixTimeStamp, SIP = sipMessage.Sip.UserAtHost, UserAgentHead = sipMessage.UserAgent, Username = sipMessage.Username, DisplayName = sipMessage.ToDisplayName, Expires = sipMessage.Expires }; return(_sipRepository.UpdateRegisteredSip(sip)); }
public void ReloadOnUpdate() { var repo = GetCachedRegisteredSipRepository(); var sipsOnline = repo.GetCachedRegisteredSips(); var sipOnline = sipsOnline.First(); var updated = sipOnline.Updated; var repo2 = GetSimpleRegisteredSipRepository(); RegisteredSip sip = repo2.GetRegisteredSipById(sipOnline.Id); sip.DisplayName += "¤"; repo.UpdateRegisteredSip(sip); sipOnline = repo.GetCachedRegisteredSips().First(rs => rs.Id == sip.Id); Assert.AreNotEqual(updated, sipOnline.Updated); }
public void RegisterSip(string sipAddress, string ip, string displayName, string userAgent) { var sip = new RegisteredSip { IP = ip, Port = 5060, ServerTimeStamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(), SIP = sipAddress, UserAgentHead = userAgent, Username = sipAddress, DisplayName = displayName, Expires = 60 }; var changeStatus = _registeredSipRepository.UpdateRegisteredSip(sip); Console.WriteLine("Registered {0} with result: {1}", sip.SIP, changeStatus); }
public KamailioMessageHandlerResult UpdateRegisteredSip(RegisteredSip registeredSip) { var result = _internalRepository.UpdateRegisteredSip(registeredSip); // When reregistration of codec already in cache, just update timestamp if (result.ChangeStatus == KamailioMessageChangeStatus.NothingChanged && result.ChangedObjectId != Guid.Empty) { var regSip = GetCachedRegisteredSips().FirstOrDefault(rs => rs.Id == result.ChangedObjectId); if (regSip != null) { regSip.Updated = DateTime.UtcNow; return(result); } } // Otherwise reload cache. _lazyCache.ClearRegisteredSips(); return(result); }
public void should_reload_list_from_internal_repository_when_codec_added() { var newRegisteredSip = new RegisteredSip() { SIP = "c" }; A.CallTo(() => _internalRegisteredSipRepository.UpdateRegisteredSip(newRegisteredSip)).Returns( new KamailioMessageHandlerResult() { ChangedObjectId = Guid.NewGuid(), ChangeStatus = KamailioMessageChangeStatus.CodecAdded }); _sut.GetCachedRegisteredSips(); A.CallTo(() => _internalRegisteredSipRepository.GetCachedRegisteredSips()).MustHaveHappened(Repeated.Exactly.Once); _sut.UpdateRegisteredSip(newRegisteredSip); A.CallTo(() => _internalRegisteredSipRepository.GetCachedRegisteredSips()).MustHaveHappened(Repeated.Exactly.Once); _sut.GetCachedRegisteredSips(); A.CallTo(() => _internalRegisteredSipRepository.GetCachedRegisteredSips()).MustHaveHappened(Repeated.Exactly.Twice); }
private RegisteredSip MapToRegisteredSip(RegisteredSipEntity dbRegisteredSip) { if (dbRegisteredSip == null) { return(null); } var registredSip = new RegisteredSip { DisplayName = dbRegisteredSip.DisplayName, Expires = dbRegisteredSip.Expires, Id = dbRegisteredSip.Id, IP = dbRegisteredSip.IP, Port = dbRegisteredSip.Port, SIP = dbRegisteredSip.SIP, ServerTimeStamp = dbRegisteredSip.ServerTimeStamp, Updated = dbRegisteredSip.Updated, UserAgentHead = dbRegisteredSip.UserAgentHeader, Username = dbRegisteredSip.Username, }; return(registredSip); }
public static string GetDisplayName(RegisteredSip registeredSip, string sipDomain) { return(GetDisplayName(registeredSip.DisplayName, registeredSip.User != null ? registeredSip.User.DisplayName : string.Empty, string.Empty, registeredSip.Username, registeredSip.SIP, "", sipDomain)); }
public KamailioMessageHandlerResult UpdateRegisteredSip(RegisteredSip registeredSip) { // Returnerar värde som indikerar om // 1. Kodaren lagts till // 2. Kodaren fanns sedan tidigare men har på relevant sätt uppdaterad information // 3. Kodaren fanns sedan tidigare men registreringen i identisk. = NothingChanged if (registeredSip == null) { return(KamailioMessageHandlerResult.NothingChanged); } try { using (var db = GetDbContext()) { var dbSip = db.RegisteredSips.SingleOrDefault(rs => rs.SIP == registeredSip.SIP); if (dbSip == null) { if (registeredSip.Expires == 0) { // Avregistrering av ej registrerad kodare. Gör ingenting. return(KamailioMessageHandlerResult.NothingChanged); } dbSip = new Entities.RegisteredSipEntity { Id = Guid.NewGuid(), Updated = DateTime.UtcNow }; db.RegisteredSips.Add(dbSip); //registeredSip.Id = dbSip.Id; } //else //{ //registeredSip.Id = dbSip.Id; //} // Matcha och mappa var user = db.Users.FirstOrDefault(u => u.UserName == registeredSip.Username); var userId = user != null ? user.Id : (Guid?)null; var userAgentId = GetUserAgentId(db, registeredSip.UserAgentHead); var locationId = LocationManager.GetLocationIdByIp(registeredSip.IP); registeredSip.Updated = registeredSip.Expires == 0 ? DateTime.UtcNow.AddSeconds(-SettingsManager.MaxRegistrationAge) // Expire immediately : DateTime.UtcNow; dbSip.UserAgentId = userAgentId; dbSip.Location_LocationId = locationId != Guid.Empty ? locationId : (Guid?)null; dbSip.User_UserId = userId; dbSip.SIP = registeredSip.SIP; dbSip.UserAgentHead = registeredSip.UserAgentHead; dbSip.Username = registeredSip.Username; dbSip.DisplayName = registeredSip.DisplayName; dbSip.IP = registeredSip.IP; dbSip.Port = registeredSip.Port; dbSip.ServerTimeStamp = registeredSip.ServerTimeStamp; dbSip.Updated = registeredSip.Updated; dbSip.Expires = registeredSip.Expires; var changeStatus = GetChangeStatus(db, dbSip); db.SaveChanges(); return(new KamailioMessageHandlerResult { ChangedObjectId = dbSip.Id, ChangeStatus = changeStatus }); } } catch (Exception ex) { log.Error(ex, "Error while updating registered sip {0}", registeredSip.SIP); return(KamailioMessageHandlerResult.NothingChanged); } }