Define AdditionalMetadataLocation

Per SAML 2 spec.
Define AttributeBase

Per SAML 2 Metadata spec.
Enhance SamlUri factory for AttributeBase specs
DRY and improve factories for SAML endpoints
Define AttributeBase

Per SAML 2 Metadata spec.
Prevent FactoryGirl from breaking migrations
Test all FactoryGirl factories and traits

Ensure that potential future model changes are correctly reflected in factories which are used in subsequent specs.

Enable Guard to run specs when factory files are modified.
Define Attribute

Per SAML 2 Metadata spec.
Link AttributeValue to owning Attribute
Refine schema for Attribute and related models
Define RequestedAttribute

Per SAML 2 Metadata spec.
Fix FactoryGirl errors when running migrations

Prior to this with the gem set to fale we lost several useful features of actually having the FactoryGirl gem installed, especially around generators.

Bringing the gem back the following error returned:

    rake aborted!
    Sequel::DatabaseConnectionError: Mysql2::Error: Unknown database 'saml_development'
    ...

This commit ensures that factories which use the :class symbol put the names of the associated classes in quotes. This corrects the migration problem above in both development and test. Future factories using the :class symbol must also put the class name in quotes.
Define CA Certificate structure

Utilised in SAML 2 Metadata to distribute trusted CA certs to federation endpoints.
Refine modeling of CA certificates and info

Due to complications with establishing a low level database relationship between the previously modelled CAKeyInfo and CACertificate this implementation refines the implementation to store all certificate data within the CAKeyInfo model.

This is appropriate as any real world case we've ever worked with directly maps an xmldig KeyInfo element to a single X509Data element.

As the xmldsig schema strictly does allow for multiple X509Data blocks this model will need to be extended should this ever be required. Should the the non modelled elements RetrievalMethod, PGPData, SPKIData or MgmtData be required this model will also need to be extended.
Grumpy coder hates popups in the OS

Better handled as locally installed gem for those that want to work with it.
Model XMLDSig KeyInfo/Certificate

Due to complications with establishing a low level database relationship between KeyInfo and Certificate this implementation stores all certificate data within the KeyInfo model.

This is appropriate as any real world case we've ever worked with directly maps an xmldig KeyInfo element to a single X509Data element.

As the xmldsig schema strictly does allow for multiple X509Data blocks this model will need to be extended should this ever be required. Should the the non modelled elements RetrievalMethod, PGPData, SPKIData or MgmtData be required this model will also need to be extended.
DRY the CaKeyInfo and KeyInfo implementations

TO many parallels to not use inheritance here and both ultimately utilised for XMLDsig schema in SAML Metadata and Shibboleth custom Metadata extensions.
Push subject and issuer into Certificate and DB
Add KeyType model for use with SAML KeyDescriptor
EncryptionType model for use with KeyDescriptor

Per SAML 2 Metadata specification use of the XMLEnc EncryptionType element in KeyDescriptors is an option. This model implements the schema defined in XMLEnc