def testSimple(self): self.Touch("fs/os/foo/bar/baz") class FooDecoder(decoders.AbstractDecoder): def Check(self, filedesc): del filedesc # Unused. return True def Decode(self, filedesc): raise NotImplementedError() decoders.FACTORY.Register("Foo", FooDecoder) args = vfs_plugin.ApiGetFileDecodersArgs() args.client_id = self.client_id args.file_path = "fs/os/foo/bar/baz" result = self.handler.Handle(args, context=self.context) self.assertEqual(result.decoder_names, ["Foo"])
def testMultipleDecoders(self): self.Touch("fs/os/foo/bar", content=b"bar") self.Touch("fs/os/foo/baz", content=b"baz") self.Touch("fs/os/foo/quux", content=b"quux") class BarQuuxDecoder(decoders.AbstractDecoder): def Check(self, filedesc): return filedesc.Read(1024) in [b"bar", b"quux"] def Decode(self, filedesc): raise NotImplementedError() class BazQuuxDecoder(decoders.AbstractDecoder): def Check(self, filedesc): return filedesc.Read(1024) in [b"baz", b"quux"] def Decode(self, filedesc): raise NotImplementedError() decoders.FACTORY.Register("BarQuux", BarQuuxDecoder) decoders.FACTORY.Register("BazQuux", BazQuuxDecoder) args = vfs_plugin.ApiGetFileDecodersArgs() args.client_id = self.client_id args.file_path = "fs/os/foo/bar" result = self.handler.Handle(args, context=self.context) self.assertCountEqual(result.decoder_names, ["BarQuux"]) args.file_path = "fs/os/foo/baz" result = self.handler.Handle(args) self.assertCountEqual(result.decoder_names, ["BazQuux"]) args.file_path = "fs/os/foo/quux" result = self.handler.Handle(args) self.assertCountEqual(result.decoder_names, ["BarQuux", "BazQuux"])