mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 00:01:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using AutoFixture;
 | |
| using AutoFixture.AutoMoq;
 | |
| using Emby.Server.Implementations.Data;
 | |
| using Emby.Server.Implementations.Library;
 | |
| using MediaBrowser.Controller;
 | |
| using MediaBrowser.Controller.Entities;
 | |
| using MediaBrowser.Model.Entities;
 | |
| using Moq;
 | |
| using SharpFuzz;
 | |
| 
 | |
| namespace Emby.Server.Implementations.Fuzz
 | |
| {
 | |
|     public static class Program
 | |
|     {
 | |
|         public static void Main(string[] args)
 | |
|         {
 | |
|             switch (args[0])
 | |
|             {
 | |
|                 case "PathExtensions.TryReplaceSubPath": Run(PathExtensions_TryReplaceSubPath); return;
 | |
|                 case "SqliteItemRepository.ItemImageInfoFromValueString": Run(SqliteItemRepository_ItemImageInfoFromValueString); return;
 | |
|                 default: throw new ArgumentException($"Unknown fuzzing function: {args[0]}");
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private static void Run(Action<string> action) => Fuzzer.OutOfProcess.Run(action);
 | |
| 
 | |
|         private static void PathExtensions_TryReplaceSubPath(string data)
 | |
|         {
 | |
|             // Stupid, but it worked
 | |
|             var parts = data.Split(':');
 | |
|             if (parts.Length != 3)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             _ = PathExtensions.TryReplaceSubPath(parts[0], parts[1], parts[2], out _);
 | |
|         }
 | |
| 
 | |
|         private static void SqliteItemRepository_ItemImageInfoFromValueString(string data)
 | |
|         {
 | |
|             var sqliteItemRepository = MockSqliteItemRepository();
 | |
|             sqliteItemRepository.ItemImageInfoFromValueString(data);
 | |
|         }
 | |
| 
 | |
|         private static SqliteItemRepository MockSqliteItemRepository()
 | |
|         {
 | |
|             const string VirtualMetaDataPath = "%MetadataPath%";
 | |
|             const string MetaDataPath = "/meta/data/path";
 | |
| 
 | |
|             var appHost = new Mock<IServerApplicationHost>();
 | |
|             appHost.Setup(x => x.ExpandVirtualPath(It.IsAny<string>()))
 | |
|                 .Returns((string x) => x.Replace(VirtualMetaDataPath, MetaDataPath, StringComparison.Ordinal));
 | |
|             appHost.Setup(x => x.ReverseVirtualPath(It.IsAny<string>()))
 | |
|                 .Returns((string x) => x.Replace(MetaDataPath, VirtualMetaDataPath, StringComparison.Ordinal));
 | |
| 
 | |
|             IFixture fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true });
 | |
|             fixture.Inject(appHost);
 | |
|             return fixture.Create<SqliteItemRepository>();
 | |
|         }
 | |
|     }
 | |
| }
 |