--- /dev/null
+#!/usr/bin/env rspec
+
+require 'spec_helper'
+
+module MCollective
+ module DDL
+ describe DiscoveryDDL do
+ before :each do
+ Cache.delete!(:ddl) rescue nil
+ @ddl = DDL.new("rspec", :discovery, false)
+ @ddl.metadata(:name => "name", :description => "description", :author => "author", :license => "license", :version => "version", :url => "url", :timeout => "timeout")
+ end
+
+ describe "#discovery_interface" do
+ it "should return correct data" do
+ @ddl.instance_variable_set("@plugintype", :discovery)
+ @ddl.discovery do
+ @ddl.capabilities :identity
+ end
+
+ @ddl.discovery_interface.should == {:capabilities => [:identity]}
+ end
+ end
+
+ describe "#capabilities" do
+ it "should support non arrays" do
+ @ddl.instance_variable_set("@plugintype", :discovery)
+ @ddl.discovery do
+ @ddl.capabilities :identity
+ end
+ @ddl.discovery_interface.should == {:capabilities => [:identity]}
+ end
+
+ it "should not accept empty capability lists" do
+ @ddl.instance_variable_set("@plugintype", :discovery)
+ @ddl.discovery do
+ expect { @ddl.capabilities [] }.to raise_error("Discovery plugin capabilities can't be empty")
+ end
+ end
+
+ it "should only accept known capabilities" do
+ @ddl.instance_variable_set("@plugintype", :discovery)
+ @ddl.discovery do
+ expect { @ddl.capabilities :rspec }.to raise_error(/rspec is not a valid capability/)
+ end
+ end
+
+ it "should correctly store the capabilities" do
+ @ddl.instance_variable_set("@plugintype", :discovery)
+ @ddl.discovery do
+ @ddl.capabilities [:identity, :classes]
+ end
+ @ddl.discovery_interface.should == {:capabilities => [:identity, :classes]}
+ end
+ end
+ end
+ end
+end