1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- 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 Microsoft.Extensions.Configuration;
- 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));
- var configSection = new Mock<IConfigurationSection>();
- configSection.SetupGet(x => x[It.Is<string>(s => s == MediaBrowser.Controller.Extensions.ConfigurationExtensions.SqliteCacheSizeKey)])
- .Returns("0");
- var config = new Mock<IConfiguration>();
- config.Setup(x => x.GetSection(It.Is<string>(s => s == MediaBrowser.Controller.Extensions.ConfigurationExtensions.SqliteCacheSizeKey)))
- .Returns(configSection.Object);
- IFixture fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true });
- fixture.Inject(appHost);
- fixture.Inject(config);
- return fixture.Create<SqliteItemRepository>();
- }
- }
- }
|