Project

General

Profile

Download (4.46 KB) Statistics
| Branch: | Tag: | Revision:

runcible / test / extensions / python_repository_test.rb @ master

1
require 'rubygems'
2
require 'minitest/autorun'
3

    
4
require './test/support/repository_support'
5
require './lib/runcible'
6

    
7
module Extensions
8
  module TestPythonRepositoryBase
9
    def setup
10
      @support = RepositorySupport.new('python')
11
      @extension = TestRuncible.server.extensions.repository
12
    end
13
  end
14

    
15
  class TestPythonRepositoryCreate < MiniTest::Unit::TestCase
16
    include TestPythonRepositoryBase
17

    
18
    def teardown
19
      @support.destroy_repo
20
      super
21
    end
22

    
23
    def test_create_with_importer
24
      response = @extension.create_with_importer(
25
        RepositorySupport.repo_id,
26
        :id => 'python_importer',
27
        :packages_names => ['django']
28
      )
29
      assert_equal 201, response.code
30
      response = @extension.retrieve(RepositorySupport.repo_id, :details => true)
31
      assert_equal RepositorySupport.repo_id, response['id']
32
      assert_equal 'python_importer', response['importers'].first['importer_type_id']
33
    end
34

    
35
    def test_create_with_importer_object
36
      mock_importer = Runcible::Models::PythonImporter.new(
37
        :feed => 'https://pypi.python.org/pypi',
38
        :packages_names => ['django']
39
      )
40
      response = @extension.create_with_importer(RepositorySupport.repo_id, mock_importer)
41
      assert_equal 201, response.code
42
      response = @extension.retrieve(RepositorySupport.repo_id, :details => true)
43
      assert_equal RepositorySupport.repo_id, response['id']
44
      assert_equal 'python_importer', response['importers'].first['importer_type_id']
45

    
46
      @extension.expects(:create).with(RepositorySupport.repo_id, has_entry(:notes, anything)).returns(true)
47
      @extension.create_with_importer(RepositorySupport.repo_id, Runcible::Models::PythonImporter.new)
48
    end
49

    
50
    def test_create_with_distributors
51
      distributors = [{'type_id' => 'python_distributor', 'auto_publish' => true,
52
                       'config' => {'publish_dir' => '/path'}}]
53
      response = @extension.create_with_distributors(RepositorySupport.repo_id, distributors)
54

    
55
      assert_equal 201, response.code
56
      assert_equal RepositorySupport.repo_id, response['id']
57
    end
58

    
59
    def test_create_with_distributor_object
60
      repo_id = RepositorySupport.repo_id + '_distro'
61
      distributor = Runcible::Models::PythonDistributor.new(:id => '123')
62
      response = @extension.create_with_distributors(repo_id, [distributor])
63
      assert_equal 201, response.code
64
      response = @extension.retrieve(repo_id, :details => true)
65

    
66
      assert_equal repo_id, response['id']
67
      assert_equal 'python_distributor', response['distributors'].first['distributor_type_id']
68
    ensure
69
      @support.destroy_repo(repo_id)
70
    end
71

    
72
    def test_create_with_importer_and_distributors
73
      distributors = [{'type_id' => 'python_distributor', 'auto_publish' => true,
74
                       'config' => {'publish_dir' => '/path'}}]
75
      response = @extension.create_with_importer_and_distributors(
76
        RepositorySupport.repo_id,
77
        {:id => 'python_importer', :packages_names => ['django']},
78
        distributors
79
      )
80
      assert_equal 201, response.code
81

    
82
      response = @extension.retrieve(RepositorySupport.repo_id, :details => true)
83
      assert_equal RepositorySupport.repo_id, response['id']
84
      assert_equal 'python_distributor', response['distributors'].first['distributor_type_id']
85
    end
86

    
87
    def test_create_with_importer_and_distributors_objects
88
      distributors = [Runcible::Models::PythonDistributor.new(:id => '123')]
89
      importer = Runcible::Models::PythonImporter.new
90
      response = @extension.create_with_importer_and_distributors(RepositorySupport.repo_id, importer, distributors)
91
      assert_equal 201, response.code
92

    
93
      response = @extension.retrieve(RepositorySupport.repo_id, :details => true)
94
      assert_equal RepositorySupport.repo_id, response['id']
95
      assert_equal 'python_importer', response['importers'].first['importer_type_id']
96
    end
97
  end
98

    
99
  class TestPythonRepositorySync < MiniTest::Unit::TestCase
100
    include TestPythonRepositoryBase
101

    
102
    def setup
103
      super
104
    end
105

    
106
    def teardown
107
      @support.destroy_repo
108
    ensure
109
      super
110
    end
111

    
112
    def test_sync_repo_with_python_importer
113
      @support.create_repo(:importer => true, :importer_config => {:package_names => 'django'})
114
      response = @extension.sync(RepositorySupport.repo_id)
115

    
116
      tasks = assert_async_response(response)
117
      assert_includes tasks.first['tags'], 'pulp:action:sync'
118

    
119
      response = @extension.unit_search(RepositorySupport.repo_id, {})
120
      refute_empty response
121
    end
122
  end
123
end