summaryrefslogtreecommitdiff
path: root/spec/features/projects/issues/design_management/user_views_design_images_spec.rb
blob: c5fc11222c2131adfd0f3960a6672d57b9e27ded (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe 'Users views raw design image files', feature_category: :design_management do
  include DesignManagementTestHelpers

  let_it_be(:project) { create(:project, :public) }
  let_it_be(:issue) { create(:issue, project: project) }
  let_it_be(:design) { create(:design, :with_file, issue: issue, versions_count: 2) }

  let(:newest_version) { design.versions.ordered.first }
  let(:oldest_version) { design.versions.ordered.last }

  before do
    enable_design_management
  end

  it 'serves the latest design version when no ref is given' do
    visit project_design_management_designs_raw_image_path(design.project, design)

    expect(response_headers[Gitlab::Workhorse::SEND_DATA_HEADER]).to eq(
      workhorse_data_header_for_version(oldest_version.sha)
    )
  end

  it 'serves the correct design version when a ref is given' do
    visit project_design_management_designs_raw_image_path(design.project, design, oldest_version.sha)

    expect(response_headers[Gitlab::Workhorse::SEND_DATA_HEADER]).to eq(
      workhorse_data_header_for_version(oldest_version.sha)
    )
  end

  private

  def workhorse_data_header_for_version(ref)
    blob = project.design_repository.blob_at(ref, design.full_path)

    Gitlab::Workhorse.send_git_blob(project.design_repository, blob).last
  end
end