<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,14 +1,14 @@
 module AuthenticatedTestHelper
   # Sets the current user in the session from the user fixtures.
   def login_as(user)
-    @request.session[:user_id] = user ? users(user).id : nil
+    @request.session[:user_id] = user ? user.id : nil
   end
 
   def authorize_as(user)
-    @request.env[&quot;HTTP_AUTHORIZATION&quot;] = user ? ActionController::HttpAuthentication::Basic.encode_credentials(users(user).login, 'test') : nil
+    @request.env[&quot;HTTP_AUTHORIZATION&quot;] = user ? ActionController::HttpAuthentication::Basic.encode_credentials(user.login, 'test') : nil
   end
-  
+
   def tokenize_as(token)
-    @request.session[:token_id] = token ? auth_tokens(token).id : nil
+    @request.session[:token_id] = token ? token.id : nil
   end
 end</diff>
      <filename>lib/authenticated_test_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,23 +1,22 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe AuditsController do
-  fixtures :users, :domains, :records
-  
+
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
   end
-  
+
   it &quot;should have a search form&quot; do
     get :index
-    
+
     pending
   end
 
   it &quot;should have a domain details page&quot; do
-    get :domain, :id =&gt; domains(:example_com).id
-    
+    get :domain, :id =&gt; Factory(:domain).id
+
     assigns[:domain].should_not be_nil
-    
+
     response.should render_template('domain')
   end
 end</diff>
      <filename>spec/controllers/audits_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,51 +1,52 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe AuthTokensController do
-  fixtures :all
-  
+
   it &quot;should not allow access to admins or owners&quot; do
-    login_as(:admin)
+    login_as( Factory(:admin) )
     post :create
     response.code.should eql(&quot;401&quot;)
-    
-    login_as(:quentin)
+
+    login_as(Factory(:quentin))
     post :create
     response.code.should eql(&quot;401&quot;)
   end
-  
+
   it &quot;should bail cleanly on missing auth_token&quot; do
-    login_as(:token_user)
+    login_as(Factory(:token_user))
 
     post :create
 
     response.code.should eql(&quot;422&quot;)
   end
-  
+
   it &quot;should bail cleanly on missing domains&quot; do
-    login_as(:token_user)
-    
+    login_as(Factory(:token_user))
+
     post :create, :auth_token =&gt; { :domain =&gt; 'example.org' }
-    
+
     response.code.should eql(&quot;404&quot;)
   end
-  
+
   it &quot;bail cleanly on invalid requests&quot; do
-    login_as(:token_user)
-    
+    Factory(:domain)
+
+    login_as(Factory(:token_user))
+
     post :create, :auth_token =&gt; { :domain =&gt; 'example.com' }
-    
+
     response.should have_tag('error')
   end
-  
+
   describe &quot;generating tokens&quot; do
-    
+
     before(:each) do
-      login_as(:token_user)
-      
-      @domain = domains(:example_com)
+      login_as(Factory(:token_user))
+
+      @domain = Factory(:domain)
       @params = { :domain =&gt; @domain.name, :expires_at =&gt; 1.hour.since.to_s(:rfc822) }
     end
-    
+
     it &quot;with allow_new set&quot; do
       post :create, :auth_token =&gt; @params.merge(:allow_new =&gt; 'true')
 
@@ -54,68 +55,79 @@ describe AuthTokensController do
         with_tag('auth_token')
         with_tag('url')
       end
-      
+
       assigns[:auth_token].should_not be_nil
-      assigns[:auth_token].domain.should eql( domains(:example_com) )
+      assigns[:auth_token].domain.should eql( @domain )
       assigns[:auth_token].should be_allow_new_records
     end
-    
+
     it &quot;with remove set&quot; do
+      a = Factory(:www, :domain =&gt; @domain)
       post :create, :auth_token =&gt; @params.merge(:remove =&gt; 'true', :record =&gt; ['www.example.com'])
-      
+
       response.should have_tag('token') do
         with_tag('expires')
         with_tag('auth_token')
         with_tag('url')
       end
-      
+
       assigns[:auth_token].remove_records?.should be_true
-      assigns[:auth_token].can_remove?( records(:example_com_a_www) ).should be_true
+      assigns[:auth_token].can_remove?( a ).should be_true
     end
-    
+
     it &quot;with policy set&quot; do
       post :create, :auth_token =&gt; @params.merge(:policy =&gt; 'allow')
-      
+
       response.should have_tag('token') do
         with_tag('expires')
         with_tag('auth_token')
         with_tag('url')
       end
-      
+
       assigns[:auth_token].policy.should eql(:allow)
     end
-    
+
     it &quot;with protected records&quot; do
+      a = Factory(:a, :domain =&gt; @domain)
+      www = Factory(:www, :domain =&gt; @domain)
+      mx = Factory(:mx, :domain =&gt; @domain)
+
       post :create, :auth_token =&gt; @params.merge(
         :protect =&gt; ['example.com:A', 'www.example.com'],
         :policy =&gt; 'allow'
       )
-      
+
       response.should have_tag('token') do
         with_tag('expires')
         with_tag('auth_token')
         with_tag('url')
       end
-      
+
       assigns[:auth_token].should_not be_nil
-      assigns[:auth_token].can_change?( records(:example_com_a) ).should be_false
-      assigns[:auth_token].can_change?( records(:example_com_mx) ).should be_true
-      assigns[:auth_token].can_change?( records(:example_com_a_www) ).should be_false
+      assigns[:auth_token].can_change?( a ).should be_false
+      assigns[:auth_token].can_change?( mx ).should be_true
+      assigns[:auth_token].can_change?( www ).should be_false
     end
-    
+
     it &quot;with protected record types&quot; do
+      mx = Factory(:mx, :domain =&gt; @domain)
+
       post :create, :auth_token =&gt; @params.merge(:policy =&gt; 'allow', :protect_type =&gt; ['MX'])
-      
-      assigns[:auth_token].can_change?( records(:example_com_mx) ).should be_false
+
+      assigns[:auth_token].can_change?( mx ).should be_false
     end
-    
+
     it &quot;with allowed records&quot; do
+      a = Factory(:a, :domain =&gt; @domain)
+      www = Factory(:www, :domain =&gt; @domain)
+      mx = Factory(:mx, :domain =&gt; @domain)
+
       post :create, :auth_token =&gt; @params.merge(:record =&gt; ['example.com'])
-      
-      assigns[:auth_token].can_change?( records(:example_com_a_www) ).should be_false
-      assigns[:auth_token].can_change?( records(:example_com_a) ).should be_true
-      assigns[:auth_token].can_change?( records(:example_com_mx) ).should be_true
+
+      assigns[:auth_token].can_change?( www ).should be_false
+      assigns[:auth_token].can_change?( a ).should be_true
+      assigns[:auth_token].can_change?( mx ).should be_true
     end
-    
+
   end
 end</diff>
      <filename>spec/controllers/auth_tokens_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,24 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe DashboardController, &quot;and admins&quot; do
-  fixtures :all
-  
+
   before(:each) do
-    session[:user_id] = users(:admin)
-    
+    login_as( Factory(:admin) )
+
+    Factory(:domain)
+
+    zt = Factory(:zone_template)
+    Factory(:template_soa, :zone_template =&gt; zt)
+
     get :index
   end
 
   it &quot;should have a list of the latest zones&quot; do
     assigns[:latest_domains].should_not be_empty
   end
-  
+
   it &quot;should have a list of templates for quick zone additions&quot; do
     assigns[:zone_templates].should_not be_empty
   end
-  
+
 end</diff>
      <filename>spec/controllers/dashboard_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,11 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
-include AuthenticatedTestHelper
-
 describe DomainsController, &quot;index&quot; do
-  fixtures :all
 
   it &quot;should display all zones to the admin&quot; do
-    login_as(:admin)
+    login_as(Factory(:admin))
+
+    Factory(:domain)
 
     get 'index'
 
@@ -16,7 +15,11 @@ describe DomainsController, &quot;index&quot; do
   end
 
   it &quot;should restrict zones for owners&quot; do
-    login_as( :quentin )
+    quentin = Factory(:quentin)
+    Factory(:domain, :user =&gt; quentin)
+    Factory(:domain, :name =&gt; 'example.net')
+
+    login_as( quentin )
 
     get 'index'
 
@@ -26,7 +29,9 @@ describe DomainsController, &quot;index&quot; do
   end
 
   it &quot;should display all zones as XML&quot; do
-    login_as(:admin)
+    login_as(Factory(:admin))
+
+    Factory(:domain)
 
     get :index, :format =&gt; 'xml'
 
@@ -36,22 +41,27 @@ describe DomainsController, &quot;index&quot; do
 end
 
 describe DomainsController, &quot;when creating&quot; do
-  fixtures :all
 
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
   end
 
   it &quot;should have a form for adding a new zone&quot; do
+    Factory(:template_soa, :zone_template =&gt; Factory(:zone_template))
+    Factory(:zone_template, :name =&gt; 'No SOA')
+
     get 'new'
 
     response.should render_template('domains/new')
     assigns[:domain].should be_a_kind_of( Domain )
     assigns[:zone_templates].should_not be_empty
-    assigns[:zone_templates].size.should be(3)
+    assigns[:zone_templates].size.should be(1)
   end
 
   it &quot;should not save a partial form&quot; do
+    Factory(:template_soa, :zone_template =&gt; Factory(:zone_template))
+    Factory(:zone_template, :name =&gt; 'No SOA')
+
     post 'create', :domain =&gt; { :name =&gt; 'example.org' }, :zone_template =&gt; { :id =&gt; &quot;&quot; }
 
     response.should_not be_redirect
@@ -60,7 +70,8 @@ describe DomainsController, &quot;when creating&quot; do
   end
 
   it &quot;should build from a zone template if selected&quot; do
-    zone_template = zone_templates(:east_coast_dc)
+    zone_template = Factory(:zone_template)
+    Factory(:template_soa, :zone_template =&gt; zone_template)
 
     post 'create', :domain =&gt; { :name =&gt; 'example.org', :zone_template_id =&gt; zone_template.id }
 
@@ -81,7 +92,7 @@ describe DomainsController, &quot;when creating&quot; do
   end
 
   it &quot;should ignore the zone template if a slave is created&quot; do
-    zone_template = zone_templates(:east_coast_dc)
+    zone_template = Factory(:zone_template)
 
     post 'create', :domain =&gt; {
       :name =&gt; 'example.org',
@@ -99,17 +110,16 @@ describe DomainsController, &quot;when creating&quot; do
 end
 
 describe DomainsController do
-  fixtures :all
 
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
   end
 
   it &quot;should accept ownership changes&quot; do
-    domain = domains(:example_com)
+    domain = Factory(:domain)
 
     lambda {
-      put :change_owner, :id =&gt; domain.id, :domain =&gt; { :user_id =&gt; users(:quentin).id }
+      put :change_owner, :id =&gt; domain.id, :domain =&gt; { :user_id =&gt; Factory(:quentin).id }
       domain.reload
     }.should change( domain, :user_id )
 
@@ -118,13 +128,12 @@ describe DomainsController do
 end
 
 describe DomainsController, &quot;and macros&quot; do
-  fixtures :all
 
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
 
     @macro = Factory(:macro)
-    @domain = domains(:example_com)
+    @domain = Factory(:domain)
   end
 
   it &quot;should have a selection for the user&quot; do
@@ -147,12 +156,11 @@ describe DomainsController, &quot;and macros&quot; do
 end
 
 describe DomainsController, &quot;should handle a REST client&quot; do
-  fixtures :all
 
   before(:each) do
-    authorize_as(:api_client)
+    authorize_as(Factory(:api_client))
 
-    @domain = domains(:example_com)
+    @domain = Factory(:domain)
   end
 
   it &quot;creating a new zone without a template&quot; do
@@ -168,16 +176,22 @@ describe DomainsController, &quot;should handle a REST client&quot; do
   end
 
   it &quot;creating a zone with a template&quot; do
+    zt = Factory(:zone_template)
+    Factory(:template_soa, :zone_template =&gt; zt)
+
     post 'create', :domain =&gt; { :name =&gt; 'example.org',
-      :zone_template_id =&gt; zone_templates(:east_coast_dc).id },
+      :zone_template_id =&gt; zt.id },
       :format =&gt; &quot;xml&quot;
 
     response.should have_tag( 'domain' )
   end
 
   it &quot;creating a zone with a named template&quot; do
+    zt = Factory(:zone_template)
+    Factory(:template_soa, :zone_template =&gt; zt)
+
     post 'create', :domain =&gt; { :name =&gt; 'example.org',
-      :zone_template_name =&gt; zone_templates(:east_coast_dc).name },
+      :zone_template_name =&gt; zt.name },
       :format =&gt; &quot;xml&quot;
 
     response.should have_tag( 'domain' )
@@ -242,14 +256,16 @@ describe DomainsController, &quot;should handle a REST client&quot; do
 end
 
 describe DomainsController, &quot;and auth tokens&quot; do
-  fixtures :all
 
   before(:each) do
-    tokenize_as(:token_example_com)
+    @domain = Factory(:domain)
+    @token = Factory(:auth_token, :user =&gt; Factory(:admin), :domain =&gt; @domain)
+
+    tokenize_as(@token)
   end
 
   it &quot;should display the domain in the token&quot; do
-    get :show, :id =&gt; domains(:example_com)
+    get :show, :id =&gt; @domain.id
 
     response.should render_template('domains/show')
   end
@@ -257,7 +273,7 @@ describe DomainsController, &quot;and auth tokens&quot; do
   it &quot;should restrict the domain to that of the token&quot; do
     get :show, :id =&gt; rand(1_000_000)
 
-    assigns[:domain].should eql(domains(:example_com))
+    assigns[:domain].should eql(@domain)
   end
 
   it &quot;should not allow a list of domains&quot; do
@@ -267,7 +283,7 @@ describe DomainsController, &quot;and auth tokens&quot; do
   end
 
   it &quot;should not accept updates to the domain&quot; do
-    put :update, :id =&gt; domains(:example_com), :domain =&gt; { :name =&gt; 'hack' }
+    put :update, :id =&gt; @domain, :domain =&gt; { :name =&gt; 'hack' }
 
     response.should be_redirect
   end</diff>
      <filename>spec/controllers/domains_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,10 +13,8 @@ end
 
 describe MacroStepsController do
 
-  fixtures :users, :roles
-  
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
 
     @macro = Factory(:macro)
     @step = Factory(:macro_step_create,
@@ -41,12 +39,12 @@ describe MacroStepsController do
 
   it &quot;should position a valid step correctly&quot; do
     post :create, :macro_id =&gt; @macro.id,
-    :macro_step =&gt; {                     
-      :action =&gt; 'create',               
-      :record_type =&gt; 'A',               
-      :name =&gt; 'www',                    
-      :content =&gt; '127.0.0.1',           
-      :position =&gt; '1'                   
+    :macro_step =&gt; {
+      :action =&gt; 'create',
+      :record_type =&gt; 'A',
+      :name =&gt; 'www',
+      :content =&gt; '127.0.0.1',
+      :position =&gt; '1'
     }, :format =&gt; 'js'
 
     assigns[:macro_step].position.should == 1
@@ -86,7 +84,7 @@ describe MacroStepsController do
 
   it &quot;should re-position existing steps&quot; do
     Factory(:macro_step_create, :macro =&gt; @macro)
-    
+
     put :update, :macro_id =&gt; @macro.id, :id =&gt; @step.id,
     :macro_step =&gt; { :position =&gt; '2' }
 
@@ -99,8 +97,8 @@ describe MacroStepsController do
     flash[:info].should_not be_blank
     response.should be_redirect
     response.should redirect_to(macro_path(@macro))
-    
+
     lambda { @step.reload }.should raise_error( ActiveRecord::RecordNotFound )
   end
-  
+
 end</diff>
      <filename>spec/controllers/macro_steps_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,13 @@
 require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
 
 describe MacrosController, &quot;for admins&quot; do
-  fixtures :users, :roles
-  
+
   before(:each) do
-    login_as(:admin)
+    login_as( Factory(:admin) )
 
     @macro = Factory(:macro)
+
+    Factory(:quentin)
   end
 
   it &quot;should have a list of macros&quot; do
@@ -66,7 +67,7 @@ describe MacrosController, &quot;for admins&quot; do
 
     response.should render_template('macros/edit')
   end
-  
+
   it &quot;should accept valid updates to macros&quot; do
     lambda {
       put :update, :id =&gt; @macro.id, :macro =&gt; { :name =&gt; 'Foo Macro' }
@@ -97,16 +98,16 @@ describe MacrosController, &quot;for admins&quot; do
     response.should be_redirect
     response.should redirect_to( macros_path )
   end
-  
+
 end
 
 describe MacrosController, &quot;for owners&quot; do
-  fixtures :users, :roles
 
   before(:each) do
-    login_as(:quentin)
+    quentin = Factory(:quentin)
+    login_as(quentin)
 
-    @macro = Factory(:macro, :user =&gt; users(:quentin))
+    @macro = Factory(:macro, :user =&gt; quentin)
   end
 
   it &quot;should have a form to create a new macro&quot; do
@@ -117,6 +118,6 @@ describe MacrosController, &quot;for owners&quot; do
 
     response.should render_template('macros/edit')
   end
-    
+
 end
 </diff>
      <filename>spec/controllers/macros_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,23 +1,21 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
-include AuthenticatedTestHelper
-
 describe RecordTemplatesController, &quot;when updating SOA records&quot; do
-  fixtures :all
-  
+
   it &quot;should accept a valid update&quot; do
-    login_as(:admin)
-    
-    target_soa = record_templates(:east_coast_soa)
-    
+    login_as(Factory(:admin))
+
+    zt = Factory(:zone_template)
+    target_soa = Factory(:template_soa, :zone_template =&gt; zt)
+
     put &quot;update&quot;, :id =&gt; target_soa.id, :record_template =&gt; {
-      :retry =&gt; &quot;7200&quot;, :primary_ns =&gt; 'ns1.provider.net', 
+      :retry =&gt; &quot;7200&quot;, :primary_ns =&gt; 'ns1.provider.net',
       :contact =&gt; 'east-coast@example.com', :refresh =&gt; &quot;10800&quot;, :minimum =&gt; &quot;10800&quot;,
       :expire =&gt; &quot;604800&quot;
     }
-    
+
     target_soa.reload
-    target_soa.primary_ns.should eql('ns1.provider.net')  
+    target_soa.primary_ns.should eql('ns1.provider.net')
   end
-  
+
 end</diff>
      <filename>spec/controllers/record_template_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,10 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe RecordsController, &quot;, users, and non-SOA records&quot; do
-  fixtures :users, :domains, :records
-
   before( :each ) do
-    login_as(:admin)
+    login_as(Factory(:admin))
 
-    @domain = domains( :example_com )
+    @domain = Factory(:domain)
   end
 
   # Test adding various records
@@ -49,7 +47,7 @@ describe RecordsController, &quot;, users, and non-SOA records&quot; do
   end
 
   it &quot;should update when valid&quot; do
-    record = records(:example_com_ns_ns2)
+    record = Factory(:ns, :domain =&gt; @domain)
 
     params = {
       'name' =&gt; &quot;&quot;,
@@ -64,7 +62,7 @@ describe RecordsController, &quot;, users, and non-SOA records&quot; do
   end
 
   it &quot;shouldn't update when invalid&quot; do
-    record = records(:example_com_ns_ns2)
+    record = Factory(:ns, :domain =&gt; @domain)
 
     params = {
       'name' =&gt; &quot;@&quot;,
@@ -83,7 +81,7 @@ describe RecordsController, &quot;, users, and non-SOA records&quot; do
   end
 
   it &quot;should destroy when requested to do so&quot; do
-    delete :destroy, :domain_id =&gt; @domain.id, :id =&gt; records(:example_com_mx).id
+    delete :destroy, :domain_id =&gt; @domain.id, :id =&gt; Factory(:mx, :domain =&gt; @domain).id
 
     response.should be_redirect
     response.should redirect_to( domain_path( @domain ) )
@@ -92,12 +90,10 @@ describe RecordsController, &quot;, users, and non-SOA records&quot; do
 end
 
 describe RecordsController, &quot;, users, and SOA records&quot; do
-  fixtures :all
-
   it &quot;should update when valid&quot; do
-    login_as(:admin)
+    login_as( Factory(:admin) )
 
-    target_soa = records(:example_com_soa)
+    target_soa = Factory(:domain).soa_record
 
     put &quot;update_soa&quot;, :id =&gt; target_soa.id, :domain_id =&gt; target_soa.domain.id,
       :soa =&gt; {
@@ -111,19 +107,19 @@ describe RecordsController, &quot;, users, and SOA records&quot; do
 end
 
 describe RecordsController, &quot;and tokens&quot; do
-  fixtures :auth_tokens, :domains, :records, :users
-
   before( :each ) do
-    @domain = domains( :example_com )
+    @domain = Factory(:domain)
+    @admin = Factory(:admin)
     @token = AuthToken.new(
-      :domain =&gt; @domain, :expires_at =&gt; 1.hour.since, :user =&gt; users(:admin)
+      :domain =&gt; @domain, :expires_at =&gt; 1.hour.since, :user =&gt; @admin
     )
   end
 
   it &quot;should not be allowed to touch the SOA record&quot; do
-    tokenize_as(:token_example_com)
+    token = Factory(:auth_token, :domain =&gt; @domain, :user =&gt; @admin)
+    tokenize_as( token )
 
-    target_soa = records(:example_com_soa)
+    target_soa = @domain.soa_record
 
     lambda {
       put &quot;update_soa&quot;, :id =&gt; target_soa.id, :domain_id =&gt; target_soa.domain.id,
@@ -156,7 +152,7 @@ describe RecordsController, &quot;and tokens&quot; do
   it &quot;should not allow updating NS records&quot; do
     controller.stubs(:current_token).returns(@token)
 
-    record = records(:example_com_ns_ns1)
+    record = Factory(:ns, :domain =&gt; @domain)
 
     params = {
       'name' =&gt; '',
@@ -218,7 +214,7 @@ describe RecordsController, &quot;and tokens&quot; do
   end
 
   it &quot;should update when allowed&quot; do
-    record = records(:example_com_a_www)
+    record = Factory(:www, :domain =&gt; @domain)
     @token.can_change( record )
     controller.stubs(:current_token).returns( @token )
 
@@ -239,7 +235,7 @@ describe RecordsController, &quot;and tokens&quot; do
   end
 
   it &quot;should not update if not allowed&quot; do
-    record = records(:example_com_a_www)
+    record = Factory(:www, :domain =&gt; @domain)
     controller.stubs(:current_token).returns(@token)
 
     params = {
@@ -259,7 +255,7 @@ describe RecordsController, &quot;and tokens&quot; do
   end
 
   it &quot;should destroy when allowed&quot; do
-    record = records(:example_com_mx)
+    record = Factory(:mx, :domain =&gt; @domain)
     @token.can_change( record )
     @token.remove_records=( true )
     controller.stubs(:current_token).returns(@token)
@@ -274,9 +270,10 @@ describe RecordsController, &quot;and tokens&quot; do
 
   it &quot;should not destroy records if not allowed&quot; do
     controller.stubs(:current_token).returns( @token )
+    record = Factory(:a, :domain =&gt; @domain)
 
     lambda {
-      delete :destroy, :domain_id =&gt; @domain.id, :id =&gt; records(:example_com_a)
+      delete :destroy, :domain_id =&gt; @domain.id, :id =&gt; record.id
     }.should_not change( @domain.records, :count )
 
     response.should_not be_success
@@ -293,7 +290,7 @@ describe RecordsController, &quot;and tokens&quot; do
       'content' =&gt; '127.0.0.3'
     }
 
-    post :create, :domain_id =&gt; domains(:example_net).id, :record =&gt; record
+    post :create, :domain_id =&gt; Factory(:domain, :name =&gt; 'example.net').id, :record =&gt; record
 
     response.code.should == &quot;403&quot;
   end</diff>
      <filename>spec/controllers/records_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,69 +1,68 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
-include AuthenticatedTestHelper
-
 describe ReportsController, &quot;index&quot; do
-  fixtures :all
-  
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
+
+    Factory(:domain)
+    q = Factory(:quentin)
+    Factory(:domain, :name =&gt; 'example.net', :user =&gt; q)
   end
-  
+
   it &quot;should display all users to the admin&quot; do
     get 'index'
-    
+
     response.should render_template('reports/index')
     assigns[:users].should_not be_empty
     assigns[:users].size.should be(1)
   end
-  
+
   it &quot;should display total system domains and total domains to the admin&quot; do
     get 'index'
-    
+
     response.should render_template('reports/index')
     assigns[:total_domains].should be(Domain.count)
-    assigns[:system_domains].should be(2)
+    assigns[:system_domains].should be(1)
   end
 end
 
 describe ReportsController, &quot;results&quot; do
-  fixtures :all
-  
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
   end
-  
+
   it &quot;should display a list of users for a search hit&quot; do
+    Factory(:aaron)
+    Factory(:api_client)
+
     get 'results', :q =&gt; &quot;a&quot;
-    
+
     response.should render_template('reports/results')
     assigns[:results].should_not be_empty
     assigns[:results].size.should be(3)
   end
-  
+
   it &quot;should redirect to reports/index if the search query is empty&quot; do
     get 'results' , :q =&gt; &quot;&quot;
-    
+
     response.should be_redirect
     response.should redirect_to( reports_path )
   end
-  
+
 end
 
 describe ReportsController , &quot;view&quot; do
-  fixtures :all
-  
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
   end
-  
+
   it &quot;should show a user reports&quot; do
-    get &quot;view&quot; , :id =&gt; users(:aaron)
-    
+    get &quot;view&quot; , :id =&gt; Factory(:aaron).id
+
     response.should render_template(&quot;reports/view&quot;)
     assigns[:user].should_not be_nil
     assigns[:user].login.should have_text('aaron')
   end
-  
+
 end
 </diff>
      <filename>spec/controllers/reports_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,38 +1,42 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe SearchController do
-  fixtures :all
-  
+
   before(:each) do
-    session[:user_id] = users(:admin).id
+    session[:user_id] = Factory(:admin).id
+
+    Factory(:domain, :name =&gt; 'example.com')
+    Factory(:domain, :name =&gt; 'example.net')
   end
-  
+
   it &quot;should return results when searched legally&quot; do
     get :results, :q =&gt; 'exa'
-    
+
     assigns[:results].should_not be_nil
-    response.should render_template('results')
+    response.should render_template('search/results')
   end
-  
+
   it &quot;should handle whitespace in the query&quot; do
     get :results, :q =&gt; ' exa '
-    
+
     assigns[:results].should_not be_nil
     response.should render_template('results')
   end
-  
+
   it &quot;should redirect to the index page when nothing has been searched for&quot; do
     get :results, :q =&gt; ''
-    
+
     response.should be_redirect
     response.should redirect_to( root_path )
   end
-  
+
   it &quot;should redirect to the domain page if only one result is found&quot; do
+    domain = Factory(:domain, :name =&gt; 'slave-example.com')
+
     get :results, :q =&gt; 'slave-example.com'
-    
+
     response.should be_redirect
-    response.should redirect_to( domain_path( domains(:slave_example_com) ) )
+    response.should redirect_to( domain_path( domain ) )
   end
 
 end</diff>
      <filename>spec/controllers/search_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,9 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
-# Be sure to include AuthenticatedTestHelper in spec/spec_helper.rb instead
-# Then, you can remove it from this and the units test.
-include AuthenticatedTestHelper
-
 describe SessionsController, &quot;and users&quot; do
-  fixtures :users
+  before(:each) do
+    @quentin = Factory(:quentin)
+  end
 
   it 'logins and redirects' do
     post :create, :login =&gt; 'quentin', :password =&gt; 'test'
@@ -20,7 +18,7 @@ describe SessionsController, &quot;and users&quot; do
   end
 
   it 'logs out' do
-    login_as :quentin
+    login_as @quentin
     get :destroy
     session[:user_id].should be_nil
     response.should be_redirect
@@ -37,28 +35,28 @@ describe SessionsController, &quot;and users&quot; do
   end
 
   it 'deletes token on logout' do
-    login_as :quentin
+    login_as @quentin
     get :destroy
     response.cookies[&quot;auth_token&quot;].should be_nil
   end
 
   it 'logs in with cookie' do
-    users(:quentin).remember_me
-    request.cookies[&quot;auth_token&quot;] = cookie_for(:quentin)
+    @quentin.remember_me
+    request.cookies[&quot;auth_token&quot;] = cookie_for(@quentin)
     get :new
     controller.send(:logged_in?).should be_true
   end
 
   it 'fails expired cookie login' do
-    users(:quentin).remember_me
-    users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago
-    request.cookies[&quot;auth_token&quot;] = cookie_for(:quentin)
+    @quentin.remember_me
+    @quentin.update_attribute :remember_token_expires_at, 5.minutes.ago
+    request.cookies[&quot;auth_token&quot;] = cookie_for(@quentin)
     get :new
     controller.send(:logged_in?).should_not be_true
   end
 
   it 'fails cookie login' do
-    users(:quentin).remember_me
+    @quentin.remember_me
     request.cookies[&quot;auth_token&quot;] = auth_token('invalid_auth_token')
     get :new
     controller.send(:logged_in?).should_not be_true
@@ -69,19 +67,24 @@ describe SessionsController, &quot;and users&quot; do
   end
 
   def cookie_for(user)
-    auth_token users(user).remember_token
+    auth_token user.remember_token
   end
 end
 
 describe SessionsController, &quot;and auth tokens&quot; do
-  fixtures :auth_tokens, :domains
+
+  before(:each) do
+    @domain = Factory(:domain)
+    @user = Factory(:admin)
+    @token = Factory(:auth_token, :domain =&gt; @domain, :user =&gt; @user)
+  end
 
   it 'accepts and redirects' do
     post :token, :token =&gt; '5zuld3g9dv76yosy'
     session[:token_id].should_not be_nil
     controller.send(:token_user?).should be_true
     response.should be_redirect
-    response.should redirect_to( domain_path( domains(:example_com) ) )
+    response.should redirect_to( domain_path( @domain ) )
   end
 
   it 'fails login and does not redirect' do
@@ -91,14 +94,14 @@ describe SessionsController, &quot;and auth tokens&quot; do
   end
 
   it 'logs out' do
-    tokenize_as(:token_example_com)
+    tokenize_as(@token)
     get :destroy
     session[:token_id].should be_nil
     response.should redirect_to( session_path )
   end
 
   it 'fails expired cookie login' do
-    auth_tokens(:token_example_com).update_attribute :expires_at, 5.minutes.ago
+    @token.update_attribute :expires_at, 5.minutes.ago
     get :new
     controller.send(:token_user?).should_not be_true
   end</diff>
      <filename>spec/controllers/sessions_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,70 +1,72 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
-include AuthenticatedTestHelper
-
 describe TemplatesController, &quot;and admins&quot; do
-  fixtures :all
-  
   before(:each) do
-    login_as(:admin)
+    login_as(Factory(:admin))
   end
-  
+
   it &quot;should have a template list&quot; do
+    Factory(:zone_template)
+
     get :index
-    
+
     assigns[:zone_templates].should_not be_empty
     assigns[:zone_templates].size.should be( ZoneTemplate.count )
   end
 
   it &quot;should have a list of users when showing the new form&quot; do
+    Factory(:quentin)
+
     get :new
-    
+
     assigns[:users].should_not be_empty
     assigns[:users].each { |u| u.has_role?('owner').should be_true }
   end
 
   it &quot;should have a detailed view of a template&quot; do
-    get :show, :id =&gt; zone_templates(:east_coast_dc)
+    get :show, :id =&gt; Factory(:zone_template).id
 
     assigns[:zone_template].should_not be_nil
     assigns[:record_template].should be_a_new_record
 
     response.should render_template('templates/show')
   end
-  
+
 end
 
 describe TemplatesController, &quot;and users&quot; do
-  fixtures :all
-  
   before(:each) do
-    login_as(:quentin)
+    @quentin = Factory(:quentin)
+    login_as(@quentin)
   end
-  
+
   it &quot;should have a limited list&quot; do
+    Factory(:zone_template, :user =&gt; @quentin)
+    Factory(:zone_template, :name =&gt; '!Quentin')
+
     get :index
-    
+
     assigns[:zone_templates].should_not be_empty
     assigns[:zone_templates].size.should be(1)
   end
-  
+
   it &quot;should not have a list of users when showing the new form&quot; do
     get :new
-    
+
     assigns[:users].should be_nil
   end
 end
 
 describe TemplatesController, &quot;should handle a REST client&quot; do
-  fixtures :all
-  
   before(:each) do
-    authorize_as(:api_client)
+    authorize_as(Factory(:api_client))
   end
-  
+
   it &quot;asking for a list of templates&quot; do
+    Factory(:zone_template)
+
     get :index, :format =&gt; &quot;xml&quot;
-    
+
     response.should have_tag('zone-templates') do
       with_tag('zone-template')
     end</diff>
      <filename>spec/controllers/templates_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,39 +1,38 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe UsersController do
-  
+
   describe &quot;without an admin&quot; do
     it &quot;should require a login&quot; do
       get 'index'
-      
+
       response.should redirect_to( new_session_path )
     end
   end
-  
+
   describe &quot;with an admin&quot; do
-    fixtures :all
-    
     before(:each) do
-      login_as( :admin )
+      @admin = Factory(:admin)
+      login_as( @admin )
     end
-    
+
     it &quot;should show a list of current users&quot; do
       get 'index'
-      
+
       response.should render_template( 'users/index')
       assigns[:users].should_not be_empty
     end
-    
+
     it 'should load a users details' do
-      get 'show', :id =&gt; users(:admin).id
-      
+      get 'show', :id =&gt; @admin.id
+
       response.should render_template( 'users/show' )
       assigns[:user].should_not be_nil
     end
-    
+
     it 'should have a form for creating a new user' do
       get 'new'
-      
+
       response.should render_template( 'users/form' )
       assigns[:user].should_not be_nil
     end
@@ -101,10 +100,10 @@ describe UsersController do
       response.should be_redirect
       response.should redirect_to( user_path( assigns[:user] ) )
     end
-    
+
     it 'should update a user without password changes' do
-      user = users(:quentin)
-      
+      user = Factory(:quentin)
+
       lambda {
         post :update, :id =&gt; user.id, :user =&gt; {
             :email =&gt; 'new@example.com',
@@ -113,15 +112,15 @@ describe UsersController do
           }
         user.reload
       }.should change( user, :email )
-      
+
       response.should be_redirect
       response.should redirect_to( user_path( user ) )
     end
 
     it 'should be able to suspend users' do
-      @user = users(:quentin)
+      @user = Factory(:quentin)
       put 'suspend', :id =&gt; @user.id
-      
+
       response.should be_redirect
       response.should redirect_to( users_path )
     end</diff>
      <filename>spec/controllers/users_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@ Factory.define :admin, :class =&gt; User do |f|
   f.email 'admin@example.com'
   f.password 'test'
   f.password_confirmation 'test'
-  f.roles [ Factory(:admin_role) ]
+  f.roles [ Role.find_by_name('admin') || Factory(:admin_role) ]
 end
 
 Factory.define(:quentin, :class =&gt; User) do |f|
@@ -23,7 +23,7 @@ Factory.define(:quentin, :class =&gt; User) do |f|
   f.email 'quentin@example.com'
   f.password 'test'
   f.password_confirmation 'test'
-  f.roles [ Factory(:owner_role) ]
+  f.roles [ Role.find_by_name('owner') || Factory(:owner_role) ]
 end
 
 Factory.define(:aaron, :class =&gt; User) do |f|
@@ -32,3 +32,19 @@ Factory.define(:aaron, :class =&gt; User) do |f|
   f.password 'test'
   f.password_confirmation 'test'
 end
+
+Factory.define(:token_user, :class =&gt; User) do |f|
+  f.login 'token'
+  f.email 'token@example.com'
+  f.password 'test'
+  f.password_confirmation 'test'
+  f.roles [ Role.find_by_name('auth_token') || Factory(:auth_token_role) ]
+end
+
+Factory.define(:api_client, :class =&gt; User) do |f|
+  f.login 'api'
+  f.email 'api@example.com'
+  f.password 'test'
+  f.password_confirmation 'test'
+  f.roles [ Role.find_by_name('admin_role') || Factory(:admin_role) ]
+end</diff>
      <filename>spec/factories/users_factory.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>9703ad59629d59ed32da3ce5d696c9ef3d5cfd3d</id>
    </parent>
  </parents>
  <author>
    <name>Kenneth Kalmer</name>
    <email>kenneth.kalmer@gmail.com</email>
  </author>
  <url>http://github.com/kennethkalmer/powerdns-on-rails/commit/51918c9a6c8485d11395852f1f78e4b60c915862</url>
  <id>51918c9a6c8485d11395852f1f78e4b60c915862</id>
  <committed-date>2009-09-21T13:42:36-07:00</committed-date>
  <authored-date>2009-09-21T13:41:26-07:00</authored-date>
  <message>fixture-less controller specs</message>
  <tree>ceabe6bd44ba04174edb1a93f313a6ac0fc50cbc</tree>
  <committer>
    <name>Kenneth Kalmer</name>
    <email>kenneth.kalmer@gmail.com</email>
  </committer>
</commit>
