diff options
Diffstat (limited to 'spec/lib/gitlab/utils/gzip_spec.rb')
-rw-r--r-- | spec/lib/gitlab/utils/gzip_spec.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/spec/lib/gitlab/utils/gzip_spec.rb b/spec/lib/gitlab/utils/gzip_spec.rb new file mode 100644 index 00000000000..5d1c62e03d3 --- /dev/null +++ b/spec/lib/gitlab/utils/gzip_spec.rb @@ -0,0 +1,58 @@ +# 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 |