Project

General

Profile

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

runcible / test / extensions / srpm_test.rb @ master

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

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

    
8
module Extensions
9
  class TestSrpm < MiniTest::Unit::TestCase
10
    def self.before_suite
11
      self.support = RepositorySupport.new
12
      self.support.repo_url = "file://#{RepositorySupport::FIXTURE_PATH}/srpm"
13

    
14
      @@extension = TestRuncible.server.extensions.srpm
15
      self.support.create_and_sync_repo(:importer => true)
16
    end
17

    
18
    def self.after_suite
19
      self.support.destroy_repo
20
    end
21

    
22
    def test_content_type
23
      assert_equal 'srpm', @@extension.content_type
24
    end
25

    
26
    def test_all
27
      response = @@extension.all
28

    
29
      assert_equal 200, response.code
30
      refute_empty response
31
    end
32

    
33
    def test_find
34
      assert_raises(NotImplementedError) { @@extension.find }
35
    end
36

    
37
    def test_find_all
38
      assert_raises(NotImplementedError) { @@extension.find_all }
39
    end
40

    
41
    def test_find_by_unit_id
42
      id = @@extension.all.sort_by { |p| p['_id'] }.first['_id']
43
      response = @@extension.find_by_unit_id(id)
44

    
45
      refute_empty response
46
      assert_equal id, response['_id']
47
    end
48

    
49
    def test_find_unknown
50
      response = @@extension.find_all_by_unit_ids(['f'])
51

    
52
      assert_empty response
53
    end
54

    
55
    def test_find_all_by_unit_ids
56
      pkgs = @@extension.all.sort_by { |p| p['_id'] }
57
      ids = pkgs[0..2].map { |p| p['_id'] }
58
      response = @@extension.find_all_by_unit_ids(ids)
59

    
60
      assert_equal 200, response.code
61
      assert_equal ids.length, response.length
62
    end
63

    
64
    def test_find_all_by_unit_ids_no_repos
65
      pkgs = @@extension.all.sort_by { |p| p['_id'] }
66
      ids = pkgs[0..2].map { |p| p['_id'] }
67
      response = @@extension.find_all_by_unit_ids(ids, [:name], :include_repos => false)
68

    
69
      assert_equal 200, response.code
70
      assert_nil response.first[:repository_memberships]
71
    end
72
  end
73

    
74
  class TestSrpmCopy < UnitCopyBase
75
    def self.repo_url
76
      "file://#{RepositorySupport::FIXTURE_PATH}/srpm"
77
    end
78

    
79
    def self.extension_class
80
      TestRuncible.server.extensions.srpm
81
    end
82

    
83
    def test_copy
84
      response = self.class.extension_class.copy(RepositorySupport.repo_id, self.class.clone_name)
85

    
86
      tasks = assert_async_response(response)
87
      assert_includes tasks.first['tags'], 'pulp:action:associate'
88
    end
89

    
90
    def test_copy_with_filters
91
      response = self.class.extension_class.copy(
92
        RepositorySupport.repo_id,
93
        self.class.clone_name,
94
        :filters => {
95
          :unit => {
96
            '$and' => [{'name' => {'$regex' => 'p.*'}},
97
                       {'version' => {'$gt' => '1.0'}}]
98
          }}
99
      )
100
      tasks = assert_async_response(response)
101
      assert_includes tasks.first['tags'], 'pulp:action:associate'
102
    end
103
  end
104

    
105
  class TestSrpmUnassociate < UnitUnassociateBase
106
    def self.extension_class
107
      TestRuncible.server.extensions.srpm
108
    end
109

    
110
    def self.repo_url
111
      "file://#{RepositorySupport::FIXTURE_PATH}/srpm"
112
    end
113

    
114
    def setup
115
      response = TestRuncible.server.extensions.repository.unit_copy(self.class.clone_name, RepositorySupport.repo_id)
116
      self.class.support.wait_on_response(response)
117
    end
118

    
119
    def test_unassociate_ids_from_repo
120
      ids = content_ids(RepositorySupport.repo_id)
121
      refute_empty ids
122
      assert_raises(NotImplementedError) do
123
        self.class.extension_class.unassociate_ids_from_repo(self.class.clone_name, [ids.first])
124
      end
125
    end
126

    
127
    def test_unassociate_unit_ids_from_repo
128
      ids = unit_ids(self.class.clone_name)
129
      refute_empty ids
130
      response = self.class.extension_class.unassociate_unit_ids_from_repo(self.class.clone_name, [ids.first])
131

    
132
      assert_async_response(response)
133
      assert_equal((ids.length - 1), unit_ids(self.class.clone_name).length)
134
    end
135

    
136
    def test_unassociate_from_repo
137
      ids = unit_ids(self.class.clone_name)
138
      refute_empty ids
139
      response = self.class.extension_class.unassociate_from_repo(self.class.clone_name,
140
                                                              :association => {'unit_id' => {'$in' => [ids.first]}})
141
      assert_async_response(response)
142
      assert_equal((ids.length - 1), unit_ids(self.class.clone_name).length)
143
    end
144
  end
145
end