@ -1,5 +1,12 @@
using System ;
using System ;
using AutoFixture ;
using AutoFixture.AutoMoq ;
using Emby.Server.Implementations.Data ;
using Emby.Server.Implementations.Library ;
using Emby.Server.Implementations.Library ;
using MediaBrowser.Controller ;
using MediaBrowser.Controller.Entities ;
using MediaBrowser.Model.Entities ;
using Moq ;
using SharpFuzz ;
using SharpFuzz ;
namespace Emby.Server.Implementations.Fuzz
namespace Emby.Server.Implementations.Fuzz
@ -11,6 +18,7 @@ namespace Emby.Server.Implementations.Fuzz
switch ( args [ 0 ] )
switch ( args [ 0 ] )
{
{
case "PathExtensions.TryReplaceSubPath" : Run ( PathExtensions_TryReplaceSubPath ) ; return ;
case "PathExtensions.TryReplaceSubPath" : Run ( PathExtensions_TryReplaceSubPath ) ; return ;
case "SqliteItemRepository.ItemImageInfoFromValueString" : Run ( SqliteItemRepository_ItemImageInfoFromValueString ) ; return ;
default : throw new ArgumentException ( $"Unknown fuzzing function: {args[0]}" ) ;
default : throw new ArgumentException ( $"Unknown fuzzing function: {args[0]}" ) ;
}
}
}
}
@ -28,5 +36,27 @@ namespace Emby.Server.Implementations.Fuzz
_ = PathExtensions . TryReplaceSubPath ( parts [ 0 ] , parts [ 1 ] , parts [ 2 ] , out _ ) ;
_ = 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 > ( ) ;
}
}
}
}
}