slicehost 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,10 @@
1
+ == 0.2.0 2007-12-24
2
+
3
+ * Capistrano tasks to
4
+ * Create DNS zone
5
+ * Create Google Apps MX records (all 5 of them in one command)
6
+ * README + Website updated
7
+
1
8
  == 0.1.0 2007-12-23
2
9
 
3
10
  * 1 major enhancement:
@@ -6,7 +6,10 @@ Rakefile
6
6
  config/hoe.rb
7
7
  config/requirements.rb
8
8
  lib/slicehost.rb
9
+ lib/slicehost/recipes/capistrano.rb
10
+ lib/slicehost/samples/config.yml
9
11
  lib/slicehost/version.rb
12
+ lib/tasks/zone.rake
10
13
  local/slicehost.rb.sample
11
14
  log/debug.log
12
15
  script/destroy
@@ -18,6 +21,7 @@ tasks/environment.rake
18
21
  tasks/website.rake
19
22
  test/test_admin.rb
20
23
  test/test_helper.rb
24
+ test/test_sample_files.rb
21
25
  test/test_slices.rb
22
26
  test/test_zones.rb
23
27
  website/index.html
data/README.txt CHANGED
@@ -4,8 +4,22 @@ This library provides a simple set of helper methods
4
4
  to manage slices and DNS zones/records on your Slicehost
5
5
  account (http://slicehost.com).
6
6
 
7
+ == Capistrano tasks
8
+
9
+ There are two capistrano tasks:
10
+ cap slicehost:zone:add # Create DNS zone
11
+ cap slicehost:zone:mx:google # Add Google Apps MX records
12
+
13
+ To your config/deploy.rb, add the following:
14
+
15
+ require "slicehost/recipes/capistrano" if Capistrano::Version::MAJOR >= 2
16
+ # Used to setup/update DNS registry of url => ip
17
+ set :domain_mapping, "myurl.com" => "123.456.789.012"
18
+
19
+ == Underlying API
20
+
7
21
  The current API is very alpha. It was just the simplest thing that worked.
8
- There are unit tests demonstrating it working and everything.
22
+ There are unit tests demonstrating it working and everything.
9
23
 
10
24
  Future releases will have a nicer, class-based API.
11
25
 
@@ -48,7 +48,7 @@ end
48
48
  # Run 'rake -T' to see list of generated tasks (from gem root directory)
49
49
  hoe = Hoe.new(GEM_NAME, VERS) do |p|
50
50
  p.author = AUTHOR
51
- p.description = p.paragraphs_of("README.txt", 1..3).join("\n\n")
51
+ p.description = p.paragraphs_of("README.txt", 1..-1).join("\n\n")
52
52
  p.email = EMAIL
53
53
  p.summary = p.description
54
54
  p.url = HOMEPATH
@@ -4,6 +4,7 @@ require 'rubygems'
4
4
  require 'mechanize'
5
5
 
6
6
  module Slicehost
7
+ ConfigSampleFile = File.dirname(__FILE__) + "/slicehost/samples/config.yml"
7
8
  end
8
9
 
9
10
  class Slicehost::Helper
@@ -0,0 +1,109 @@
1
+ require "yaml"
2
+ require File.dirname(__FILE__) + '/../../slicehost'
3
+ Capistrano::Configuration.instance(:must_exist).load do
4
+ namespace :slicehost do
5
+ namespace :zone do
6
+ desc "Create DNS zone"
7
+ task :add do
8
+
9
+ begin
10
+ # check that the capistrano variable is set, else it raises exception
11
+ # TODO cleaner way to test this?
12
+ domain_mapping
13
+ rescue
14
+ puts (<<-EOS).gsub(/^\s+/s,"")
15
+ ERROR: must setup domain_mapping capistrano variable
16
+ For example, add to deploy.rb:
17
+ set :domain_mapping, #{domain} => "123.456.789.012"
18
+ EOS
19
+ next
20
+ end
21
+ config_file = File.join(File.dirname(__FILE__), "../slicehost.yml")
22
+ unless File.exists?(config_file)
23
+ require 'fileutils'
24
+ FileUtils.copy(Slicehost::ConfigSampleFile, config_file + ".sample")
25
+ puts (<<-EOS).gsub(/^\s+/s,"")
26
+ ERROR: No config/slicehost.yml found.
27
+ Copied sample file to config/slicehost.yml.sample.
28
+ Please modify with your email/password for slicehost.
29
+ EOS
30
+ next
31
+ end
32
+ config = YAML.load File.open(config_file)
33
+ email, password = config["email"], config["password"]
34
+
35
+ session = Slicehost::Helper.new
36
+ if session.login(email, password)
37
+ puts "Logged in as #{email}"
38
+ # TODO only tested for one pair, e.g url.com => "123.456.789.012"
39
+ # not sure what the correct DNS setup is if multiple
40
+ # domain_mapping pairs passed in.
41
+ # Tell Dr Nic if you know @ drnicwilliams@gmail.com
42
+ domain_mapping.each_pair do |url, ipaddr|
43
+ puts "Creating zone for #{url}"
44
+ if session.zone?(url)
45
+ session.delete_zone(url)
46
+ puts "Deleted existing DNS settings for #{url}"
47
+ end
48
+ session.create_zone(url)
49
+ puts "Created zone" if session.zone?(url)
50
+ session.create_simple_zone(url, ipaddr)
51
+ puts "Created basic DNS settings for #{url}"
52
+ end
53
+ else
54
+ puts "Login failed. Check email/password in config/slicehost.yml"
55
+ next
56
+ end
57
+ end
58
+
59
+ namespace :mx do
60
+ desc "Add Google Apps MX records"
61
+ task :google do
62
+ begin
63
+ # check that the capistrano variable is set, else it raises exception
64
+ # TODO cleaner way to test this?
65
+ domain_mapping
66
+ rescue
67
+ puts (<<-EOS).gsub(/^\s+/s,"")
68
+ ERROR: must setup domain_mapping capistrano variable
69
+ For example, add to deploy.rb:
70
+ set :domain_mapping, #{domain} => "123.456.789.012"
71
+ EOS
72
+ next
73
+ end
74
+ config_file = File.join(File.dirname(__FILE__), "../slicehost.yml")
75
+ unless File.exists?(config_file)
76
+ require 'fileutils'
77
+ FileUtils.copy(Slicehost::ConfigSampleFile, config_file + ".sample")
78
+ puts (<<-EOS).gsub(/^\s+/s,"")
79
+ ERROR: No config/slicehost.yml found.
80
+ Copied sample file to config/slicehost.yml.sample.
81
+ Please modify with your email/password for slicehost.
82
+ EOS
83
+ next
84
+ end
85
+ config = YAML.load File.open(config_file)
86
+ email, password = config["email"], config["password"]
87
+
88
+ session = Slicehost::Helper.new
89
+ unless session.login(email, password)
90
+ puts "Login failed. Check email/password in config/slicehost.yml"
91
+ next
92
+ end
93
+ puts "Logged in as #{email}"
94
+ # TODO only tested for one pair, e.g url.com => "123.456.789.012"
95
+ # not sure what the correct DNS setup is if multiple
96
+ # domain_mapping pairs passed in.
97
+ # Tell Dr Nic if you know @ drnicwilliams@gmail.com
98
+ url = domain_mapping.keys.first # TODO .smallest really
99
+ unless session.zone?(url)
100
+ puts "No zone setup for #{url}; use: cap slicehost_zone_add"
101
+ next
102
+ end
103
+ session.create_googleapps_mx(url)
104
+ puts "Created MX records for Google Apps for #{url}"
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,3 @@
1
+ ---
2
+ email: your@email.com
3
+ password: yourpassword
@@ -1,8 +1,8 @@
1
1
  module Slicehost #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 1
5
- TINY = 1
4
+ MINOR = 2
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -0,0 +1,42 @@
1
+ namespace :slicehost do
2
+ namespace :zone do
3
+ desc "Create DNS zone"
4
+ task :add do
5
+ require 'rubygems'
6
+ require 'hpricot'
7
+ require 'open-uri'
8
+ require "yaml"
9
+ require 'slicehost'
10
+
11
+ # require File.dirname(__FILE__) + "/../lib/core-ext/open-uri"
12
+ unless (url = ENV['URL']) && (ipaddr = ENV['IP'])
13
+ puts "USAGE: rake slicehost:zone URL=url.com IP=123.456.789.012"
14
+ next
15
+ end
16
+ config_file = File.join(File.dirname(__FILE__), "../config/slicehost.yml")
17
+ unless File.exists?(config_file)
18
+ require 'fileutils'
19
+ FileUtils.copy File.join(File.dirname(__FILE__), "../config/slicehost.yml.sample"), config_file
20
+ puts (<<-EOS).gsub(/^\s+/s,"")
21
+ ERROR: No config/slicehost.yml found.
22
+ Copied sample file. Please modify with your email/password for slicehost.
23
+ EOS
24
+ next
25
+ end
26
+ config = YAML.load File.open(config_file)
27
+
28
+ session = Slicehost::Helper.new
29
+ if session.login(config["email"], config["password"])
30
+ puts "Logged in as #{config['email']}"
31
+ puts "Creating zone for #{url}"
32
+ session.delete_zone(url) if session.zone?(url)
33
+ session.create_zone(url)
34
+ puts "Created zone" if session.zone?(url)
35
+ session.create_simple_zone(url, ipaddr)
36
+ else
37
+ puts "Login failed. Check email/password in config/slicehost.yml"
38
+ next
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,16 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class TestSampleFiles < Test::Unit::TestCase
4
+ def setup
5
+ end
6
+
7
+ def teardown
8
+ end
9
+
10
+ # Replace this with your real tests.
11
+ def test_config_sample
12
+ file = Slicehost::ConfigSampleFile
13
+ assert_not_nil(file)
14
+ assert(File.exists?(file), "The constant is defined, but no actual file available at #{file}")
15
+ end
16
+ end
@@ -5,7 +5,7 @@
5
5
  <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
7
  <title>
8
- slicehost
8
+ Slicehost Helpers
9
9
  </title>
10
10
  <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
11
  <style>
@@ -30,42 +30,81 @@
30
30
  <body>
31
31
  <div id="main">
32
32
 
33
- <h1>slicehost</h1>
33
+ <h1>Slicehost Helpers</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/slicehost"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/slicehost" class="numbers">0.1.1</a>
36
+ <a href="http://rubyforge.org/projects/slicehost" class="numbers">0.2.0</a>
37
37
  </div>
38
- <h1>&#x2192; &#8216;slicehost&#8217;</h1>
38
+ <h1>cap slicehost:zone:add</h1>
39
39
 
40
40
 
41
41
  <h2>What</h2>
42
42
 
43
43
 
44
+ <p>This library provides a simple set of helper methods
45
+ and Capistrano tasks
46
+ to manage slices and <span class="caps">DNS</span> zones/records on your Slicehost
47
+ account (http://slicehost.com).</p>
48
+
49
+
44
50
  <h2>Installing</h2>
45
51
 
46
52
 
47
53
  <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">slicehost</span></pre></p>
48
54
 
49
55
 
50
- <h2>The basics</h2>
56
+ <h2>Capistrano tasks</h2>
51
57
 
52
58
 
53
- <h2>Demonstration of usage</h2>
59
+ <p>There are two capistrano tasks:</p>
54
60
 
55
61
 
56
- <h2>Forum</h2>
62
+ <p><pre class='syntax'>
63
+ <span class="ident">cap</span> <span class="ident">slicehost</span><span class="symbol">:zone:add</span> <span class="comment"># Create DNS zone</span>
64
+ <span class="ident">cap</span> <span class="ident">slicehost</span><span class="symbol">:zone:mx:google</span> <span class="comment"># Add Google Apps MX records</span>
65
+ </pre></p>
66
+
67
+
68
+ <p>To your config/deploy.rb, add the following:</p>
69
+
70
+
71
+ <p><pre class='syntax'>
72
+ <span class="ident">require</span> <span class="punct">&quot;</span><span class="string">slicehost/recipes/capistrano</span><span class="punct">&quot;</span> <span class="keyword">if</span> <span class="constant">Capistrano</span><span class="punct">::</span><span class="constant">Version</span><span class="punct">::</span><span class="constant">MAJOR</span> <span class="punct">&gt;=</span> <span class="number">2</span>
73
+
74
+ <span class="comment"># Used to setup/update DNS registry of url =&gt; ip</span>
75
+ <span class="ident">set</span> <span class="symbol">:domain_mapping</span><span class="punct">,</span> <span class="punct">&quot;</span><span class="string">myurl.com</span><span class="punct">&quot;</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">123.456.789.012</span><span class="punct">&quot;</span>
76
+ </pre></p>
77
+
78
+
79
+ <p>Then run <code>cap slicehost:zone:add</code> to create a base <span class="caps">DNS</span> zone. This will include the <code>myurl.com</code> and <code>www</code> entry, <span class="caps">PLUS</span> three nameserver entries for Slicehost&#8217;s namesevers.</p>
80
+
57
81
 
82
+ <p>If you are using Google Apps for your Email, then once you have created the Google Apps account, and you are asked to point the MX records to Google, you simply need to run one capistrano task: <code>cap slicehost:zone:mx:google</code> and all 5 MX records are added automatically.</p>
58
83
 
59
- <p><a href="http://groups.google.com/group/slicehost">http://groups.google.com/group/slicehost</a></p>
84
+
85
+ <p>Easy peasy.</p>
86
+
87
+
88
+ <h2>Underlying <span class="caps">API</span></h2>
89
+
90
+
91
+ <p>The current <span class="caps">API</span> is very alpha. It was just the simplest thing that worked.
92
+ There are unit tests demonstrating it working and everything.</p>
93
+
94
+
95
+ <p>Future releases will have a nicer, class-based <span class="caps">API</span>.</p>
96
+
97
+
98
+ <h2>Forum</h2>
60
99
 
61
100
 
62
- <p><span class="caps">TODO</span> &#8211; create Google Group &#8211; slicehost</p>
101
+ <p>To discuss bugs and features, go to the Google Group <a href="http://groups.google.com/group/slicehost-ruby-api">forum</a></p>
63
102
 
64
103
 
65
104
  <h2>How to submit patches</h2>
66
105
 
67
106
 
68
- <p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people&#8217;s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
107
+ <p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people&#8217;s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8c-rubyforge">8b: Submit patch to Rubyforge Tracker</a>, via <a href="http://rubyforge.org/tracker/?group_id=5140">Tracker</a>.</p>
69
108
 
70
109
 
71
110
  <p>The trunk repository is <code>svn://rubyforge.org/var/svn/slicehost/trunk</code> for anonymous access.</p>
@@ -80,9 +119,9 @@
80
119
  <h2>Contact</h2>
81
120
 
82
121
 
83
- <p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a> via the <a href="http://groups.google.com/group/slicehost">forum</a></p>
122
+ <p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a> via the <a href="http://groups.google.com/group/slicehost-ruby-api">forum</a></p>
84
123
  <p class="coda">
85
- <a href="drnicwilliams@gmail.com">Dr Nic Williams</a>, 23rd December 2007<br>
124
+ <a href="drnicwilliams@gmail.com">Dr Nic Williams</a>, 24th December 2007<br>
86
125
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
87
126
  </p>
88
127
  </div>
@@ -1,31 +1,57 @@
1
- h1. slicehost
1
+ h1. Slicehost Helpers
2
2
 
3
- h1. &#x2192; 'slicehost'
3
+ h1. cap slicehost:zone:add
4
4
 
5
5
 
6
6
  h2. What
7
7
 
8
+ This library provides a simple set of helper methods
9
+ and Capistrano tasks
10
+ to manage slices and DNS zones/records on your Slicehost
11
+ account (http://slicehost.com).
8
12
 
9
13
  h2. Installing
10
14
 
11
15
  <pre syntax="ruby">sudo gem install slicehost</pre>
12
16
 
13
- h2. The basics
17
+ h2. Capistrano tasks
14
18
 
19
+ There are two capistrano tasks:
20
+
21
+ <pre syntax="ruby">
22
+ cap slicehost:zone:add # Create DNS zone
23
+ cap slicehost:zone:mx:google # Add Google Apps MX records
24
+ </pre>
15
25
 
16
- h2. Demonstration of usage
26
+ To your config/deploy.rb, add the following:
17
27
 
28
+ <pre syntax="ruby">
29
+ require "slicehost/recipes/capistrano" if Capistrano::Version::MAJOR >= 2
18
30
 
31
+ # Used to setup/update DNS registry of url => ip
32
+ set :domain_mapping, "myurl.com" => "123.456.789.012"
33
+ </pre>
19
34
 
20
- h2. Forum
35
+ Then run <code>cap slicehost:zone:add</code> to create a base DNS zone. This will include the <code>myurl.com</code> and <code>www</code> entry, PLUS three nameserver entries for Slicehost's namesevers.
36
+
37
+ If you are using Google Apps for your Email, then once you have created the Google Apps account, and you are asked to point the MX records to Google, you simply need to run one capistrano task: <code>cap slicehost:zone:mx:google</code> and all 5 MX records are added automatically.
38
+
39
+ Easy peasy.
40
+
41
+ h2. Underlying API
21
42
 
22
- "http://groups.google.com/group/slicehost":http://groups.google.com/group/slicehost
43
+ The current API is very alpha. It was just the simplest thing that worked.
44
+ There are unit tests demonstrating it working and everything.
45
+
46
+ Future releases will have a nicer, class-based API.
47
+
48
+ h2. Forum
23
49
 
24
- TODO - create Google Group - slicehost
50
+ To discuss bugs and features, go to the Google Group "forum":http://groups.google.com/group/slicehost-ruby-api
25
51
 
26
52
  h2. How to submit patches
27
53
 
28
- Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
54
+ Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Rubyforge Tracker":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8c-rubyforge, via "Tracker":http://rubyforge.org/tracker/?group_id=5140.
29
55
 
30
56
  The trunk repository is <code>svn://rubyforge.org/var/svn/slicehost/trunk</code> for anonymous access.
31
57
 
@@ -35,5 +61,5 @@ This code is free to use under the terms of the MIT license.
35
61
 
36
62
  h2. Contact
37
63
 
38
- Comments are welcome. Send an email to "Dr Nic Williams":mailto:drnicwilliams@gmail.com via the "forum":http://groups.google.com/group/slicehost
64
+ Comments are welcome. Send an email to "Dr Nic Williams":mailto:drnicwilliams@gmail.com via the "forum":http://groups.google.com/group/slicehost-ruby-api
39
65
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slicehost
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr Nic Williams
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2007-12-23 00:00:00 +10:00
12
+ date: 2007-12-24 00:00:00 +10:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: This library provides a simple set of helper methods to manage slices and DNS zones/records on your Slicehost account (http://slicehost.com). The current API is very alpha. It was just the simplest thing that worked. There are unit tests demonstrating it working and everything. Future releases will have a nicer, class-based API.
16
+ description: "This library provides a simple set of helper methods to manage slices and DNS zones/records on your Slicehost account (http://slicehost.com). == Capistrano tasks There are two capistrano tasks: cap slicehost:zone:add # Create DNS zone cap slicehost:zone:mx:google # Add Google Apps MX records To your config/deploy.rb, add the following: require \"slicehost/recipes/capistrano\" if Capistrano::Version::MAJOR >= 2 # Used to setup/update DNS registry of url => ip set :domain_mapping, \"myurl.com\" => \"123.456.789.012\" == Underlying API The current API is very alpha. It was just the simplest thing that worked. There are unit tests demonstrating it working and everything. Future releases will have a nicer, class-based API. Contact: Dr Nic Williams, drnicwilliams@gmail.com"
17
17
  email: drnicwilliams@gmail.com
18
18
  executables: []
19
19
 
@@ -34,7 +34,10 @@ files:
34
34
  - config/hoe.rb
35
35
  - config/requirements.rb
36
36
  - lib/slicehost.rb
37
+ - lib/slicehost/recipes/capistrano.rb
38
+ - lib/slicehost/samples/config.yml
37
39
  - lib/slicehost/version.rb
40
+ - lib/tasks/zone.rake
38
41
  - local/slicehost.rb.sample
39
42
  - log/debug.log
40
43
  - script/destroy
@@ -46,6 +49,7 @@ files:
46
49
  - tasks/website.rake
47
50
  - test/test_admin.rb
48
51
  - test/test_helper.rb
52
+ - test/test_sample_files.rb
49
53
  - test/test_slices.rb
50
54
  - test/test_zones.rb
51
55
  - website/index.html
@@ -79,9 +83,10 @@ rubyforge_project: slicehost
79
83
  rubygems_version: 1.0.1
80
84
  signing_key:
81
85
  specification_version: 2
82
- summary: This library provides a simple set of helper methods to manage slices and DNS zones/records on your Slicehost account (http://slicehost.com). The current API is very alpha. It was just the simplest thing that worked. There are unit tests demonstrating it working and everything. Future releases will have a nicer, class-based API.
86
+ summary: "This library provides a simple set of helper methods to manage slices and DNS zones/records on your Slicehost account (http://slicehost.com). == Capistrano tasks There are two capistrano tasks: cap slicehost:zone:add # Create DNS zone cap slicehost:zone:mx:google # Add Google Apps MX records To your config/deploy.rb, add the following: require \"slicehost/recipes/capistrano\" if Capistrano::Version::MAJOR >= 2 # Used to setup/update DNS registry of url => ip set :domain_mapping, \"myurl.com\" => \"123.456.789.012\" == Underlying API The current API is very alpha. It was just the simplest thing that worked. There are unit tests demonstrating it working and everything. Future releases will have a nicer, class-based API. Contact: Dr Nic Williams, drnicwilliams@gmail.com"
83
87
  test_files:
84
88
  - test/test_admin.rb
85
89
  - test/test_helper.rb
90
+ - test/test_sample_files.rb
86
91
  - test/test_slices.rb
87
92
  - test/test_zones.rb