Project

General

Profile

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

runcible / test / extensions / docker_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 TestDockerRepositoryBase
9
    def setup
10
      @support = RepositorySupport.new('docker')
11
      @extension = TestRuncible.server.extensions.repository
12
    end
13
  end
14

    
15
  class TestDockerRepositoryCreate < MiniTest::Unit::TestCase
16
    include TestDockerRepositoryBase
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(RepositorySupport.repo_id, :id => 'docker_importer')
25
      assert_equal 201, response.code
26
      response = @extension.retrieve(RepositorySupport.repo_id, :details => true)
27
      assert_equal RepositorySupport.repo_id, response['id']
28
      assert_equal 'docker_importer', response['importers'].first['importer_type_id']
29
    end
30

    
31
    def test_create_with_importer_object
32
      mock_importer = Runcible::Models::DockerImporter.new(:feed => 'https://index.docker.io',
33
                                                           :upstream_name => 'busybox')
34
      response = @extension.create_with_importer(RepositorySupport.repo_id, mock_importer)
35
      assert_equal 201, response.code
36
      response = @extension.retrieve(RepositorySupport.repo_id, :details => true)
37
      assert_equal RepositorySupport.repo_id, response['id']
38
      assert_equal 'docker_importer', response['importers'].first['importer_type_id']
39

    
40
      @extension.expects(:create).with(RepositorySupport.repo_id, has_entry(:notes, anything)).returns(true)
41
      @extension.create_with_importer(RepositorySupport.repo_id, Runcible::Models::DockerImporter.new)
42
    end
43

    
44
    def test_create_with_distributors
45
      distributors = [{'type_id' => 'docker_distributor_web', 'id' => '123', 'auto_publish' => true,
46
                       'config' => {'docker_publish_directory' => '/path'}}]
47
      response = @extension.create_with_distributors(RepositorySupport.repo_id, distributors)
48

    
49
      assert_equal 201, response.code
50
      assert_equal RepositorySupport.repo_id, response['id']
51
    end
52

    
53
    def test_create_with_distributor_object
54
      repo_id = RepositorySupport.repo_id + '_distro'
55
      url = "http://acme.org"
56
      repo_registry_id = "busybox"
57
      mock_distro = Runcible::Models::DockerDistributor.new(:docker_publish_directory => '/path',
58
                                                            :id => '123',
59
                                                            :redirect_url => url,
60
                                                            :repo_registry_id => repo_registry_id)
61
      response = @extension.create_with_distributors(repo_id, [mock_distro])
62
      assert_equal 201, response.code
63
      response = @extension.retrieve(repo_id, :details => true)
64
      assert_equal repo_id, response['id']
65
      assert_equal 'docker_distributor_web', response['distributors'].first['distributor_type_id']
66
      assert_equal url, response['distributors'].first['config']["redirect_url"]
67
      assert_equal repo_registry_id, response['distributors'].first['config']["repo-registry-id"]
68
    ensure
69
      @support.destroy_repo(repo_id)
70
    end
71

    
72
    def test_create_with_importer_and_distributors
73
      distributors = [{'type_id' => 'docker_distributor_web', 'id' => '123', 'auto_publish' => true,
74
                       'config' => {}}]
75
      response = @extension.create_with_importer_and_distributors(RepositorySupport.repo_id,
76
                                                                 {:id => 'docker_importer'}, distributors)
77
      assert_equal 201, response.code
78

    
79
      response = @extension.retrieve(RepositorySupport.repo_id, :details => true)
80
      assert_equal RepositorySupport.repo_id, response['id']
81
      assert_equal 'docker_distributor_web', response['distributors'].first['distributor_type_id']
82
    end
83

    
84
    def test_create_with_importer_and_distributors_objects
85
      distributors = [Runcible::Models::DockerDistributor.new(:id => '123')]
86
      importer = Runcible::Models::DockerImporter.new
87
      response = @extension.create_with_importer_and_distributors(RepositorySupport.repo_id, importer, distributors)
88
      assert_equal 201, response.code
89

    
90
      response = @extension.retrieve(RepositorySupport.repo_id, :details => true)
91
      assert_equal RepositorySupport.repo_id, response['id']
92
      assert_equal 'docker_importer', response['importers'].first['importer_type_id']
93
    end
94

    
95
    def test_docker_blob
96
      assert_equal 'docker_blob', Runcible::Extensions::DockerBlob.content_type
97
    end
98
  end
99
end