Browse Source

AAAA records support

pull/1/head
Nicolae Claudius 13 years ago
parent
commit
5ef868488d
  1. 37
      app/controllers/aaaas_controller.rb
  2. 2
      app/controllers/as_controller.rb
  3. 2
      app/controllers/records_controller.rb
  4. 2
      app/helpers/aaaas_helper.rb
  5. 14
      app/models/aaaa.rb
  6. 1
      config/locales/en.yml
  7. 4
      config/routes.rb
  8. 157
      spec/controllers/aaaas_controller_spec.rb
  9. 15
      spec/helpers/aaaas_helper_spec.rb
  10. 11
      spec/requests/aaaas_spec.rb
  11. 35
      spec/routing/aaaas_routing_spec.rb
  12. 15
      spec/views/aaaas/edit.html.erb_spec.rb
  13. 14
      spec/views/aaaas/index.html.erb_spec.rb
  14. 15
      spec/views/aaaas/new.html.erb_spec.rb
  15. 11
      spec/views/aaaas/show.html.erb_spec.rb

37
app/controllers/aaaas_controller.rb

@ -0,0 +1,37 @@
class AaaasController < ApplicationController
active_scaffold :aaaa do |conf|
conf.columns = [:name, :type, :content, :ttl, :prio, :change_date, :authentication_token]
conf.create.columns = [:name, :content, :ttl,]
conf.update.columns = [:name, :content, :ttl]
conf.columns[:content].label = 'IP v6'
conf.columns[:content].description = 'Ex. "2001:0db8:85a3:0000:0000:8a2e:0370:7334"'
conf.columns[:change_date].list_ui = :timestamp
conf.columns[:ttl].options = {:i18n_number => {:delimiter => ''}}
conf.actions.exclude :show
end
before_filter :ensure_nested_under_domain
protected
# override to use :mx_records instead of :records assoc
def beginning_of_chain
if nested? && nested.association && nested.association.collection? && nested.association.name == :records
nested.parent_scope.a_records
else
super
end
end
# override, we make our own sti logic
def new_model
model = beginning_of_chain.new
model.name = nested_parent_record.name
model.content = client_remote_ip if client_remote_ip.present?
model
end
# override to close create form after success
def render_parent?
nested_singular_association? # || params[:parent_sti]
end
end

2
app/controllers/as_controller.rb

@ -3,7 +3,7 @@ class AsController < ApplicationController
conf.columns = [:name, :type, :content, :ttl, :prio, :change_date, :authentication_token]
conf.create.columns = [:name, :content, :ttl,]
conf.update.columns = [:name, :content, :ttl]
conf.columns[:content].label = 'IP'
conf.columns[:content].label = 'IP v4'
conf.columns[:content].description = 'Ex. "10.10.5.12"'
conf.columns[:change_date].list_ui = :timestamp
conf.columns[:ttl].options = {:i18n_number => {:delimiter => ''}}

2
app/controllers/records_controller.rb

@ -19,7 +19,7 @@ class RecordsController < ApplicationController
respond_to :html, :xml, :json
active_scaffold :record do |conf|
conf.sti_children = [:SOA, :NS, :MX, :A, :CNAME, :TXT]
conf.sti_children = [:SOA, :NS, :MX, :A, :CNAME, :TXT, :AAAA]
conf.columns = [:name, :type, :content, :ttl, :prio, :change_date, :authentication_token]
conf.columns[:change_date].list_ui = :timestamp
conf.columns[:ttl].options = {:i18n_number => {:delimiter => ''}}

2
app/helpers/aaaas_helper.rb

@ -0,0 +1,2 @@
module AaaasHelper
end

14
app/models/aaaa.rb

@ -0,0 +1,14 @@
# = IPv6 Address Record (AAAA)
#
# IPv6 Address record. An IPv6 address for a host. Current IETF recommendation for IPv6
# forward-mapped zones.
#
# @see http://www.ietf.org/rfc/rfc3596.txt
# @see http://www.zytrax.com/books/dns/ch8/aaaa.html
class AAAA < Record
validates :name, :hostname => {:allow_underscore => true, :allow_wildcard_hostname => true}
validates :content, :presence => true, :ip => {:ip_type => :v6}
end
Aaaa = AAAA

1
config/locales/en.yml

@ -14,6 +14,7 @@ en:
cname: "CNAME Record"
mx: "MX Record"
a: "A Record"
aaaa: "AAAA Record"
txt: "TXT Record"
attributes:
domain:

4
config/routes.rb

@ -42,6 +42,10 @@ Entrydns::Application.routes.draw do
as_routes
end
resources :aaaas do
as_routes
end
get '/dashboard', :to => 'dashboard#index', :as => :dashboard
resources :pages, :only => :show

157
spec/controllers/aaaas_controller_spec.rb

@ -0,0 +1,157 @@
require 'spec_helper'
# This spec was generated by rspec-rails when you ran the scaffold generator.
# It demonstrates how one might use RSpec to specify the controller code that
# was generated by Rails when you ran the scaffold generator.
#
# It assumes that the implementation code is generated by the rails scaffold
# generator. If you are using any extension libraries to generate different
# controller code, this generated spec may or may not pass.
#
# It only uses APIs available in rails and/or rspec-rails. There are a number
# of tools you can use to make these specs even more expressive, but we're
# sticking to rails and rspec-rails APIs to keep things simple and stable.
#
# Compared to earlier versions of this generator, there is very limited use of
# stubs and message expectations in this spec. Stubs are only used when there
# is no simpler way to get a handle on the object needed for the example.
# Message expectations are only used when there is no simpler way to specify
# that an instance is receiving a specific message.
describe AaaasController do
# This should return the minimal set of attributes required to create a valid
# Aaaa. As you add validations to Aaaa, be sure to
# update the return value of this method accordingly.
def valid_attributes
{}
end
describe "GET index" do
it "assigns all aaaas as @aaaas" do
aaaa = Aaaa.create! valid_attributes
get :index
assigns(:aaaas).should eq([aaaa])
end
end
describe "GET show" do
it "assigns the requested aaaa as @aaaa" do
aaaa = Aaaa.create! valid_attributes
get :show, :id => aaaa.id.to_s
assigns(:aaaa).should eq(aaaa)
end
end
describe "GET new" do
it "assigns a new aaaa as @aaaa" do
get :new
assigns(:aaaa).should be_a_new(Aaaa)
end
end
describe "GET edit" do
it "assigns the requested aaaa as @aaaa" do
aaaa = Aaaa.create! valid_attributes
get :edit, :id => aaaa.id.to_s
assigns(:aaaa).should eq(aaaa)
end
end
describe "POST create" do
describe "with valid params" do
it "creates a new Aaaa" do
expect {
post :create, :aaaa => valid_attributes
}.to change(Aaaa, :count).by(1)
end
it "assigns a newly created aaaa as @aaaa" do
post :create, :aaaa => valid_attributes
assigns(:aaaa).should be_a(Aaaa)
assigns(:aaaa).should be_persisted
end
it "redirects to the created aaaa" do
post :create, :aaaa => valid_attributes
response.should redirect_to(Aaaa.last)
end
end
describe "with invalid params" do
it "assigns a newly created but unsaved aaaa as @aaaa" do
# Trigger the behavior that occurs when invalid params are submitted
Aaaa.any_instance.stub(:save).and_return(false)
post :create, :aaaa => {}
assigns(:aaaa).should be_a_new(Aaaa)
end
it "re-renders the 'new' template" do
# Trigger the behavior that occurs when invalid params are submitted
Aaaa.any_instance.stub(:save).and_return(false)
post :create, :aaaa => {}
response.should render_template("new")
end
end
end
describe "PUT update" do
describe "with valid params" do
it "updates the requested aaaa" do
aaaa = Aaaa.create! valid_attributes
# Assuming there are no other aaaas in the database, this
# specifies that the Aaaa created on the previous line
# receives the :update_attributes message with whatever params are
# submitted in the request.
Aaaa.any_instance.should_receive(:update_attributes).with({'these' => 'params'})
put :update, :id => aaaa.id, :aaaa => {'these' => 'params'}
end
it "assigns the requested aaaa as @aaaa" do
aaaa = Aaaa.create! valid_attributes
put :update, :id => aaaa.id, :aaaa => valid_attributes
assigns(:aaaa).should eq(aaaa)
end
it "redirects to the aaaa" do
aaaa = Aaaa.create! valid_attributes
put :update, :id => aaaa.id, :aaaa => valid_attributes
response.should redirect_to(aaaa)
end
end
describe "with invalid params" do
it "assigns the aaaa as @aaaa" do
aaaa = Aaaa.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Aaaa.any_instance.stub(:save).and_return(false)
put :update, :id => aaaa.id.to_s, :aaaa => {}
assigns(:aaaa).should eq(aaaa)
end
it "re-renders the 'edit' template" do
aaaa = Aaaa.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Aaaa.any_instance.stub(:save).and_return(false)
put :update, :id => aaaa.id.to_s, :aaaa => {}
response.should render_template("edit")
end
end
end
describe "DELETE destroy" do
it "destroys the requested aaaa" do
aaaa = Aaaa.create! valid_attributes
expect {
delete :destroy, :id => aaaa.id.to_s
}.to change(Aaaa, :count).by(-1)
end
it "redirects to the aaaas list" do
aaaa = Aaaa.create! valid_attributes
delete :destroy, :id => aaaa.id.to_s
response.should redirect_to(aaaas_url)
end
end
end

15
spec/helpers/aaaas_helper_spec.rb

@ -0,0 +1,15 @@
require 'spec_helper'
# Specs in this file have access to a helper object that includes
# the AaaasHelper. For example:
#
# describe AaaasHelper do
# describe "string concat" do
# it "concats two strings with spaces" do
# helper.concat_strings("this","that").should == "this that"
# end
# end
# end
describe AaaasHelper do
pending "add some examples to (or delete) #{__FILE__}"
end

11
spec/requests/aaaas_spec.rb

@ -0,0 +1,11 @@
require 'spec_helper'
describe "Aaaas" do
describe "GET /aaaas" do
it "works! (now write some real specs)" do
# Run the generator again with the --webrat flag if you want to use webrat methods/matchers
get aaaas_path
response.status.should be(200)
end
end
end

35
spec/routing/aaaas_routing_spec.rb

@ -0,0 +1,35 @@
require "spec_helper"
describe AaaasController do
describe "routing" do
it "routes to #index" do
get("/aaaas").should route_to("aaaas#index")
end
it "routes to #new" do
get("/aaaas/new").should route_to("aaaas#new")
end
it "routes to #show" do
get("/aaaas/1").should route_to("aaaas#show", :id => "1")
end
it "routes to #edit" do
get("/aaaas/1/edit").should route_to("aaaas#edit", :id => "1")
end
it "routes to #create" do
post("/aaaas").should route_to("aaaas#create")
end
it "routes to #update" do
put("/aaaas/1").should route_to("aaaas#update", :id => "1")
end
it "routes to #destroy" do
delete("/aaaas/1").should route_to("aaaas#destroy", :id => "1")
end
end
end

15
spec/views/aaaas/edit.html.erb_spec.rb

@ -0,0 +1,15 @@
require 'spec_helper'
describe "aaaas/edit.html.erb" do
before(:each) do
@aaaa = assign(:aaaa, stub_model(Aaaa))
end
it "renders the edit aaaa form" do
render
# Run the generator again with the --webrat flag if you want to use webrat matchers
assert_select "form", :action => aaaas_path(@aaaa), :method => "post" do
end
end
end

14
spec/views/aaaas/index.html.erb_spec.rb

@ -0,0 +1,14 @@
require 'spec_helper'
describe "aaaas/index.html.erb" do
before(:each) do
assign(:aaaas, [
stub_model(Aaaa),
stub_model(Aaaa)
])
end
it "renders a list of aaaas" do
render
end
end

15
spec/views/aaaas/new.html.erb_spec.rb

@ -0,0 +1,15 @@
require 'spec_helper'
describe "aaaas/new.html.erb" do
before(:each) do
assign(:aaaa, stub_model(Aaaa).as_new_record)
end
it "renders new aaaa form" do
render
# Run the generator again with the --webrat flag if you want to use webrat matchers
assert_select "form", :action => aaaas_path, :method => "post" do
end
end
end

11
spec/views/aaaas/show.html.erb_spec.rb

@ -0,0 +1,11 @@
require 'spec_helper'
describe "aaaas/show.html.erb" do
before(:each) do
@aaaa = assign(:aaaa, stub_model(Aaaa))
end
it "renders attributes in <p>" do
render
end
end
Loading…
Cancel
Save