Skip to content

Commit

Permalink
[ci] Add specs & tests for releasing multibuild package
Browse files Browse the repository at this point in the history
Introduced in f08032e.
Quick and dirty c&p from the old test suite to get
the PR merged as it is required by release team.
  • Loading branch information
ChrisBr committed Oct 18, 2017
1 parent f08032e commit 96631de
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/api/spec/controllers/source_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,27 @@
it { expect(response).to be_success }
it { expect(project.config.to_s).to include('Updated', 'by', 'test') }
end

describe "POST #package_command" do
let(:multibuild_package) { create(:package, name: 'multibuild') }
let(:multibuild_project) { multibuild_package.project }
let(:repository) { create(:repository) }
let(:target_repository) { create(:repository) }

before do
multibuild_project.repositories << repository
project.repositories << target_repository
login user
end

context "with 'diff' command for a multibuild package" do
before do
post :package_command, params: {
cmd: 'diff', package: "#{multibuild_package.name}:one", project: multibuild_project, target_project: project
}
end
it { expect(flash[:error]).to eq("invalid_package_name(invalid package name '#{multibuild_package.name}:one'): ") }
it { expect(response.status).to eq(302) }
end
end
end
87 changes: 87 additions & 0 deletions src/api/test/functional/source_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2812,6 +2812,93 @@ def test_release_package
assert_response :success
end

def test_release_multibuild_package
login_adrian
# define manual release target
put '/source/home:adrian:RT/_meta', params: "<project name='home:adrian:RT'> <title/> <description/>
<repository name='rt'>
<arch>i586</arch>
<arch>x86_64</arch>
</repository>
</project>"
assert_response :success

run_scheduler('i586')
run_scheduler('x86_64')

login_Iggy
get '/source/home:Iggy/_meta'
assert_response :success
orig_project_meta = @response.body
doc = REXML::Document.new(@response.body)
rt = doc.elements["/project/repository'"].add_element 'releasetarget'
rt.add_attribute REXML::Attribute.new('project', 'home:adrian:RT')
rt.add_attribute REXML::Attribute.new('repository', 'rt')
put '/source/home:Iggy/_meta', params: doc.to_s
assert_response :success

# add correct trigger
login_Iggy
rt.add_attribute REXML::Attribute.new('trigger', 'manual')
put '/source/home:Iggy/_meta', params: doc.to_s
assert_response :success

# release for real
login_adrian
post '/source/home:Iggy/TestPack:package?cmd=release'
assert_response :success
assert_xml_tag tag: 'status', attributes: { code: 'ok' }

# process events
run_scheduler('i586')

# verify result
get '/source/home:adrian:RT'
assert_response :success
assert_xml_tag tag: 'entry', attributes: { name: 'TestPack' }

# cleanup
login_Iggy
put '/source/home:Iggy/_meta', params: orig_project_meta
assert_response :success
login_adrian
delete '/source/home:adrian:RT'
assert_response :success
end

def test_manual_release_multibuild_package
login_adrian
# define manual release target
put '/source/home:adrian:RT/_meta', params: "<project name='home:adrian:RT'> <title/> <description/>
<repository name='rt'>
<arch>i586</arch>
<arch>x86_64</arch>
</repository>
</project>"
assert_response :success

run_scheduler('i586')
run_scheduler('x86_64')

# release for real
login_adrian
post '/source/home:Iggy/TestPack:package?cmd=release&target_project=home:adrian:RT&target_repository=rt&repository=10.2'
assert_response :success
assert_xml_tag tag: 'status', attributes: { code: 'ok' }

# process events
run_scheduler('i586')

# verify result
get '/source/home:adrian:RT'
assert_response :success
assert_xml_tag tag: 'entry', attributes: { name: 'TestPack' }

login_adrian
delete '/source/home:adrian:RT'
assert_response :success
end

def test_copy_package
# fred has maintainer permissions in this single package of Iggys home
# this is the osc way
Expand Down

0 comments on commit 96631de

Please sign in to comment.