58 lines
1.9 KiB
Ruby
58 lines
1.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'fast_spec_helper'
|
|
|
|
RSpec.describe Gitlab::Utils::Gzip do
|
|
before do
|
|
example_class = Class.new do
|
|
include Gitlab::Utils::Gzip
|
|
|
|
def lorem_ipsum
|
|
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "\
|
|
"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim "\
|
|
"veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea "\
|
|
"commodo consequat. Duis aute irure dolor in reprehenderit in voluptate "\
|
|
"velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat "\
|
|
"cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id "\
|
|
"est laborum."
|
|
end
|
|
end
|
|
|
|
stub_const('ExampleClass', example_class)
|
|
end
|
|
|
|
subject { ExampleClass.new }
|
|
|
|
let(:sample_string) { subject.lorem_ipsum }
|
|
let(:compressed_string) { subject.gzip_compress(sample_string) }
|
|
|
|
describe "#gzip_compress" do
|
|
it "compresses data passed to it" do
|
|
expect(compressed_string.length).to be < sample_string.length
|
|
end
|
|
|
|
it "returns uncompressed data when encountering Zlib::GzipFile::Error" do
|
|
expect(ActiveSupport::Gzip).to receive(:compress).and_raise(Zlib::GzipFile::Error)
|
|
|
|
expect(compressed_string.length).to eq sample_string.length
|
|
end
|
|
end
|
|
|
|
describe "#gzip_decompress" do
|
|
let(:decompressed_string) { subject.gzip_decompress(compressed_string) }
|
|
|
|
it "decompresses encoded data" do
|
|
expect(decompressed_string).to eq sample_string
|
|
end
|
|
|
|
it "returns compressed data when encountering Zlib::GzipFile::Error" do
|
|
expect(ActiveSupport::Gzip).to receive(:decompress).and_raise(Zlib::GzipFile::Error)
|
|
|
|
expect(decompressed_string).not_to eq sample_string.length
|
|
end
|
|
|
|
it "returns unmodified data when it is determined to be uncompressed" do
|
|
expect(subject.gzip_decompress(sample_string)).to eq sample_string
|
|
end
|
|
end
|
|
end
|