<gh_stars>0
# SPDX-FileCopyrightText: 2020 2020
#
# SPDX-License-Identifier: Apache-2.0

import sys
import os.path as op
import pytest

sys.path.insert(0, op.dirname(op.dirname(op.abspath(__file__))))
from solnlib import compression


class TestGzipHandler(object):
    normal_data = b"test"
    gzcomp_data = b"\x1f\x8b\x08\x08\xc7I\xd5V\x02\xfftest\x00+I-.\x01\x00\x0c~\x7f\xd8\x04\x00\x00\x00"

    def test_check_format(self, monkeypatch):
        assert compression.GzipHandler.check_format(self.normal_data) is False

        assert compression.GzipHandler.check_format(self.gzcomp_data) is True

    def test_decompress(self, monkeypatch):
        with pytest.raises(ValueError):
            compression.GzipHandler.decompress(self.normal_data)

        assert compression.GzipHandler.decompress(self.gzcomp_data) == self.normal_data


class TestZiphandler(object):
    normal_data = b"test"
    zcomp_bad_data = b"PK\x03\x04\x14\x00\x00\x00\x00\x00\x03\x89aH\xc65\xb9;\x05\x00\x00\x00\x05\x00\x00\x00\t\x00\x00\x00test1.txttestPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00\x03\x89aH\xc65\xb9;\x05\x00\x00\x00\x05\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00test1.txtPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x007\x00\x00\x00,\x00\x00\x00\x00\x00"
    zcomp_data_2files = b"PK\x03\x04\x14\x00\x00\x00\x00\x00d\x84aHS\xfcQg\x02\x00\x00\x00\x02\x00\x00\x00\t\x00\x00\x00test1.txt1\nPK\x03\x04\x14\x00\x00\x00\x00\x00g\x84aH\x90\xaf|L\x02\x00\x00\x00\x02\x00\x00\x00\t\x00\x00\x00test2.txt2\nPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00d\x84aHS\xfcQg\x02\x00\x00\x00\x02\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00test1.txtPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00g\x84aH\x90\xaf|L\x02\x00\x00\x00\x02\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81)\x00\x00\x00test2.txtPK\x05\x06\x00\x00\x00\x00\x02\x00\x02\x00n\x00\x00\x00R\x00\x00\x00\x00\x00"
    zcomp_data_1files = b"PK\x03\x04\x14\x00\x00\x00\x00\x00\x03\x89aH\xc65\xb9;\x05\x00\x00\x00\x05\x00\x00\x00\t\x00\x00\x00test1.txttest\nPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00\x03\x89aH\xc65\xb9;\x05\x00\x00\x00\x05\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00test1.txtPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x007\x00\x00\x00,\x00\x00\x00\x00\x00"

    def test_check_format(self, monkeypatch):
        assert not compression.ZipHandler.check_format(self.normal_data)

    def test_decompress(self, monkeypatch):
        with pytest.raises(ValueError):
            compression.ZipHandler.decompress(self.normal_data)

        with pytest.raises(ValueError):
            compression.ZipHandler.decompress(self.zcomp_bad_data)

        with pytest.raises(ValueError):
            compression.ZipHandler.decompress(self.zcomp_data_2files)

        assert compression.ZipHandler.decompress(self.zcomp_data_1files) == b"test\n"

# SPDX-FileCopyrightText: 2020 2020
#
# SPDX-License-Identifier: Apache-2.0

import sys
import os.path as op
import pytest

sys.path.insert(0, op.dirname(op.dirname(op.abspath(__file__))))
from solnlib import compression


class TestGzipHandler(object):
    normal_data = b"test"
    gzcomp_data = b"\x1f\x8b\x08\x08\xc7I\xd5V\x02\xfftest\x00+I-.\x01\x00\x0c~\x7f\xd8\x04\x00\x00\x00"

    def test_check_format(self, monkeypatch):
        assert compression.GzipHandler.check_format(self.normal_data) is False

        assert compression.GzipHandler.check_format(self.gzcomp_data) is True

    def test_decompress(self, monkeypatch):
        with pytest.raises(ValueError):
            compression.GzipHandler.decompress(self.normal_data)

        assert compression.GzipHandler.decompress(self.gzcomp_data) == self.normal_data


class TestZiphandler(object):
    normal_data = b"test"
    zcomp_bad_data = b"PK\x03\x04\x14\x00\x00\x00\x00\x00\x03\x89aH\xc65\xb9;\x05\x00\x00\x00\x05\x00\x00\x00\t\x00\x00\x00test1.txttestPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00\x03\x89aH\xc65\xb9;\x05\x00\x00\x00\x05\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00test1.txtPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x007\x00\x00\x00,\x00\x00\x00\x00\x00"
    zcomp_data_2files = b"PK\x03\x04\x14\x00\x00\x00\x00\x00d\x84aHS\xfcQg\x02\x00\x00\x00\x02\x00\x00\x00\t\x00\x00\x00test1.txt1\nPK\x03\x04\x14\x00\x00\x00\x00\x00g\x84aH\x90\xaf|L\x02\x00\x00\x00\x02\x00\x00\x00\t\x00\x00\x00test2.txt2\nPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00d\x84aHS\xfcQg\x02\x00\x00\x00\x02\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00test1.txtPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00g\x84aH\x90\xaf|L\x02\x00\x00\x00\x02\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81)\x00\x00\x00test2.txtPK\x05\x06\x00\x00\x00\x00\x02\x00\x02\x00n\x00\x00\x00R\x00\x00\x00\x00\x00"
    zcomp_data_1files = b"PK\x03\x04\x14\x00\x00\x00\x00\x00\x03\x89aH\xc65\xb9;\x05\x00\x00\x00\x05\x00\x00\x00\t\x00\x00\x00test1.txttest\nPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00\x03\x89aH\xc65\xb9;\x05\x00\x00\x00\x05\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00test1.txtPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x007\x00\x00\x00,\x00\x00\x00\x00\x00"

    def test_check_format(self, monkeypatch):
        assert not compression.ZipHandler.check_format(self.normal_data)

    def test_decompress(self, monkeypatch):
        with pytest.raises(ValueError):
            compression.ZipHandler.decompress(self.normal_data)

        with pytest.raises(ValueError):
            compression.ZipHandler.decompress(self.zcomp_bad_data)

        with pytest.raises(ValueError):
            compression.ZipHandler.decompress(self.zcomp_data_2files)

        assert compression.ZipHandler.decompress(self.zcomp_data_1files) == b"test\n"
# SPDX-FileCopyrightText: 2020 2020 # # SPDX-License-Identifier: Apache-2.0