Project

General

Profile

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

runcible / test / extensions / consumer_group_test.rb @ master

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

    
9
module Extensions
10
  class TestConsumerGroup < MiniTest::Unit::TestCase
11
    def self.before_suite
12
      @@repo_support = RepositorySupport.new
13
      @@consumer_support = ConsumerSupport.new
14
      @@group_support = ConsumerGroupSupport.new
15
      @@repo_support.create_and_sync_repo(:importer_and_distributor => true)
16
    end
17

    
18
    def self.after_suite
19
      @@repo_support.destroy_repo
20
    end
21

    
22
    def setup
23
      @resource = TestRuncible.server.resources.consumer_group
24
      @extension = TestRuncible.server.extensions.consumer_group
25

    
26
      @@group_support.create_consumer_group
27
      @@consumer_support.create_consumer
28

    
29
      criteria = {:criteria =>
30
                     {:filters =>
31
                       {:id => {'$in' => [ConsumerSupport.consumer_id]}}}}
32
      distro_id = @@repo_support.distributor['id']
33

    
34
      TestRuncible.server.extensions.consumer.bind(ConsumerSupport.consumer_id, RepositorySupport.repo_id, distro_id)
35
      @resource.associate(ConsumerGroupSupport.consumer_group_id, criteria)
36
      @consumer_group_id = ConsumerGroupSupport.consumer_group_id
37
    end
38

    
39
    def teardown
40
      @@consumer_support.destroy_consumer
41
      @@group_support.destroy_consumer_group
42
    end
43

    
44
    def test_add_consumers_by_id
45
      response = @extension.add_consumers_by_id(ConsumerGroupSupport.consumer_group_id, [ConsumerSupport.consumer_id])
46

    
47
      assert_equal 200, response.code
48
      refute_empty response
49
      assert_includes response, ConsumerSupport.consumer_id
50
    end
51

    
52
    def test_remove_consumers_by_id
53
      assert_includes(@resource.retrieve(ConsumerGroupSupport.consumer_group_id)['consumer_ids'],
54
                      ConsumerSupport.consumer_id)
55

    
56
      response = @extension.remove_consumers_by_id(ConsumerGroupSupport.consumer_group_id,
57
                                                   [ConsumerSupport.consumer_id])
58

    
59
      assert_equal 200, response.code
60
      assert_empty response # no consumers
61
      refute_includes(@resource.retrieve(ConsumerGroupSupport.consumer_group_id)['consumer_ids'],
62
                       ConsumerSupport.consumer_id)
63
    end
64

    
65
    def test_make_consumer_criteria
66
      criteria = @extension.make_consumer_criteria([ConsumerSupport.consumer_id])
67

    
68
      assert_kind_of Hash, criteria
69
      refute_empty criteria[:criteria][:filters][:id]['$in']
70
    end
71

    
72
    def test_install_content
73
      response = @extension.install_content(@consumer_group_id, 'rpm', ['zsh', 'foo'])
74

    
75
      assert_equal 202, response.code
76
      assert response['spawned_tasks'].first['task_id']
77
    end
78

    
79
    def test_update_content
80
      response = @extension.update_content(@consumer_group_id, 'rpm', ['zsh', 'foo'])
81

    
82
      assert_equal 202, response.code
83
      assert response['spawned_tasks'].first['task_id']
84
    end
85

    
86
    def test_uninstall_content
87
      response = @extension.uninstall_content(@consumer_group_id, 'rpm', ['zsh', 'foo'])
88

    
89
      assert_equal 202, response.code
90
      assert response['spawned_tasks'].first['task_id']
91
    end
92

    
93
    def test_generate_content
94
      content = @extension.generate_content('rpm', ['unit_1', 'unit_2'])
95

    
96
      refute_empty content
97
      refute_empty content.select { |unit| unit[:type_id] == 'rpm' }
98
    end
99

    
100
    def test_generate_content_all
101
      content = @extension.generate_content('rpm', ['unit_1'], :all => true)
102

    
103
      refute_empty content
104
      assert_equal 'rpm', content.first[:type_id]
105
      assert_empty content.first[:unit_key]
106
    end
107
  end
108
end