Beispiel #1
0
    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"])
Beispiel #2
0
  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"])