public void TestCheckForUpdates() { int lobbyId = 0; using (var db = new CSSDataContext()) { //Create autoupdate files var file = new AutoUpdateFile() { Filename = "mdl", IsProtected = true }; db.AutoUpdateFiles.InsertOnSubmit(file); var lobby = db.Lobbies.FirstOrDefault(); lobbyId = lobby.Id; file.AutoUpdateFile_Lobbies.Add(new AutoUpdateFile_Lobby() { CurrentVersion = "1.0", DateCreated = DateTime.Now, DateModified = DateTime.Now, Lobby = lobby, ValidChecksum = "VALID" }); db.SubmitChanges(); } var clientService = new ClientService(); var files = clientService.CheckForUpdates(lobbyId); var fileResult = files.Files.FirstOrDefault(); Assert.AreEqual(1, files.Files.Count); Assert.IsTrue(fileResult.IsProtected); Assert.AreEqual("mdl", fileResult.Filename); Assert.AreEqual("VALID", fileResult.ValidChecksum.Trim()); Assert.AreEqual("1.0", fileResult.CurrentVersion); Assert.AreEqual(lobbyId, fileResult.LobbyId); }
public static void AddAutoUpdateFiles(string baseDirectory) { using (var db = new CSSDataContext()) { foreach (var path in Directory.GetDirectories(baseDirectory)) { int lobbyId; if (!int.TryParse(Path.GetFileName(path), out lobbyId)) { continue; } //Find lobby var lobby = db.Lobbies.FirstOrDefault(p => p.Id == lobbyId); var files = Directory.GetFiles(path, "*", SearchOption.AllDirectories); foreach (var filePath in files) { string file = filePath.Substring(path.Length, filePath.Length - path.Length); if (file.StartsWith(@"\")) { file = file.Remove(0, 1); } //Check if file_lobby exists var fileLobby = lobby.AutoUpdateFile_Lobbies.FirstOrDefault(p => p.AutoUpdateFile.Filename == file); if (fileLobby == null) { //Check if file exists var autoUpdateFile = db.AutoUpdateFiles.FirstOrDefault(p => p.Filename == file); if (autoUpdateFile == null) { //Create autoupdatefile autoUpdateFile = new AutoUpdateFile() { Filename = file, IsProtected = true }; } fileLobby = new AutoUpdateFile_Lobby() { AutoUpdateFile = autoUpdateFile, CurrentVersion = new Version(1, 0).ToString(), ValidChecksum = HashFile(filePath), DateCreated = DateTime.Now, DateModified = DateTime.Now, }; lobby.AutoUpdateFile_Lobbies.Add(fileLobby); } else { var version = new Version(fileLobby.CurrentVersion); var nextVersion = new Version(version.Minor, version.Minor + 1); fileLobby.CurrentVersion = nextVersion.ToString(); fileLobby.ValidChecksum = HashFile(filePath); fileLobby.DateModified = DateTime.Now; } } db.SubmitChanges(); } } }