Project

General

Profile

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

runcible / test / resources / consumer_group_test.rb @ master

1
require 'rubygems'
2
require 'minitest/autorun'
3
require './lib/runcible/resources/consumer_group'
4
require './lib/runcible/resources/consumer'
5
require './lib/runcible/extensions/consumer'
6
require './test/support/repository_support'
7
require './test/support/consumer_support'
8

    
9
module Resources
10
  module TestConsumerGroupBase
11
    def setup
12
      @resource = TestRuncible.server.resources.consumer_group
13
      @consumer_group_id = 'integration_test_consumer_group'
14
    end
15

    
16
    def create_consumer_group
17
      @resource.create(@consumer_group_id, :display_name => 'foo',
18
                                           :description => 'Test description.', :consumer_ids => [])
19
    rescue => e
20
      puts "Could not create consumer group #{@consumer_group_id}. Exception \n #{e}"
21
    end
22

    
23
    def destroy_consumer_group
24
      @resource.delete(@consumer_group_id)
25
    rescue => e
26
      puts "Could not destroy consumer group #{@consumer_group_id}. Exception \n #{e}"
27
    end
28
  end
29

    
30
  class TestConsumerGroupCreate < MiniTest::Unit::TestCase
31
    include TestConsumerGroupBase
32

    
33
    def teardown
34
      destroy_consumer_group
35
      super
36
    end
37

    
38
    def test_create
39
      response = create_consumer_group
40

    
41
      assert_equal @consumer_group_id, response['id']
42
    end
43
  end
44

    
45
  class TestConsumerGroupDestroy < MiniTest::Unit::TestCase
46
    include TestConsumerGroupBase
47

    
48
    def setup
49
      super
50
      create_consumer_group
51
    end
52

    
53
    def test_destroy
54
      response = @resource.delete(@consumer_group_id)
55

    
56
      assert_equal 200, response.code
57
    end
58
  end
59

    
60
  class ConsumerGroupTests < MiniTest::Unit::TestCase
61
    include TestConsumerGroupBase
62

    
63
    def setup
64
      super
65
      @support = ConsumerSupport.new
66
      create_consumer_group
67
    end
68

    
69
    def teardown
70
      destroy_consumer_group
71
      super
72
    end
73
  end
74

    
75
  class TestConsumerGroup < ConsumerGroupTests
76
    def test_path
77
      path = @resource.path
78

    
79
      assert_match 'consumer_groups/', path
80
    end
81

    
82
    def test_path_with_id
83
      path = @resource.path(@consumer_group_id)
84

    
85
      assert_match "consumer_groups/#{@consumer_group_id}/", path
86
    end
87

    
88
    def test_retrieve
89
      response = @resource.retrieve(@consumer_group_id)
90

    
91
      assert_equal 200, response.code
92
      refute_empty response
93
      assert_equal @consumer_group_id, response['id']
94
      assert_empty response['consumer_ids']
95
    end
96
  end
97

    
98
  class ConsumerGroupWithConsumerTests < ConsumerGroupTests
99
    def setup
100
      super
101
      @support = ConsumerSupport.new
102
      @support.create_consumer
103
      @criteria = {:criteria =>
104
                     {:filters =>
105
                       {:id =>
106
                          {'$in' => [ConsumerSupport.consumer_id]}
107
                       }
108
                     }
109
                  }
110
    end
111

    
112
    def teardown
113
      @support.destroy_consumer
114
      super
115
    end
116
  end
117

    
118
  class TestConsumerGroupAssociate < ConsumerGroupWithConsumerTests
119
    def test_associate
120
      response = @resource.associate(@consumer_group_id, @criteria)
121

    
122
      assert_equal 200, response.code
123
      assert_includes response, ConsumerSupport.consumer_id
124
    end
125
  end
126

    
127
  class TestConsumerGroupUnassociate < ConsumerGroupWithConsumerTests
128
    def setup
129
      super
130
      @resource.associate(@consumer_group_id, @criteria)
131
    end
132

    
133
    def test_unassociate
134
      assert_includes @resource.retrieve(@consumer_group_id)['consumer_ids'], ConsumerSupport.consumer_id
135

    
136
      response = @resource.unassociate(@consumer_group_id, @criteria)
137

    
138
      assert_equal 200, response.code
139
      refute_includes response, ConsumerSupport.consumer_id
140
      refute_includes @resource.retrieve(@consumer_group_id)['consumer_ids'], ConsumerSupport.consumer_id
141
    end
142
  end
143

    
144
  class TestConsumerGroupRequiresRepo < ConsumerGroupTests
145
    def self.before_suite
146
      RepositorySupport.new.create_and_sync_repo(:importer_and_distributor => true)
147
    end
148

    
149
    def self.after_suite
150
      RepositorySupport.new.destroy_repo
151
    end
152

    
153
    def setup
154
      super
155
      @support.create_consumer
156
      criteria = {:criteria =>
157
                     {:filters =>
158
                       {:id => {'$in' => [ConsumerSupport.consumer_id]}}}}
159

    
160
      distro_id = RepositorySupport.new.distributor['id']
161
      TestRuncible.server.resources.consumer.bind(ConsumerSupport.consumer_id, RepositorySupport.repo_id, distro_id)
162

    
163
      @resource.associate(@consumer_group_id, criteria)
164
    end
165

    
166
    def teardown
167
      @support.destroy_consumer
168
      super
169
    end
170

    
171
    def test_install_units
172
      response = @resource.install_units(@consumer_group_id, ['unit_key' => {:name => 'zsh'}, 'type_id' => 'rpm'])
173

    
174
      assert_equal 202, response.code
175
      assert response['spawned_tasks'].first['task_id']
176
    end
177

    
178
    def test_update_units
179
      response = @resource.update_units(@consumer_group_id, ['unit_key' => {:name => 'zsh'}, 'type_id' => 'rpm'])
180

    
181
      assert_equal 202, response.code
182
      assert response['spawned_tasks'].first['task_id']
183
    end
184

    
185
    def test_uninstall_units
186
      response = @resource.uninstall_units(@consumer_group_id, ['unit_key' => {:name => 'zsh'}, 'type_id' => 'rpm'])
187

    
188
      assert_equal 202, response.code
189
      assert response['spawned_tasks'].first['task_id']
190
    end
191
  end
192
end