WebService-Xero

 view release on metacpan or  search on metacpan

lib/WebService/Xero/Agent/PrivateApplication.pm  view on Meta::CPAN


sub _validate_agent 
{
  my ( $self  ) = @_;
  return $self->_error('CONSUMER_KEY not valid')     unless ( $self->{CONSUMER_KEY}    =~ /.{20,}/m ); ## min 20 chars - 30 is typical
  return $self->_error('CONSUMER_SECRET not valid')  unless ( $self->{CONSUMER_SECRET} =~ /.{20,}/m ); ## min 20 chars - 30 is typical
   #     KEYFILE 
   #     PRIVATE_KEY
  if ( not defined $self->{pko} and $self->{PRIVATE_KEY} =~ /BEGIN RSA PRIVATE KEY/smg )
  {
    $self->{pko} = Crypt::OpenSSL::RSA->new_private_key(  $self->{PRIVATE_KEY} ) || return $self->_error('PRIVATE_KEY not valid'); 
    ## TODO - sort out catching error - currently crashes if fails not return undef
    ##  could try to catch the error .. eg. RSA.xs:178: OpenSSL error: too long
    ## FROM Crypt::OpenSSL::RSA docs
#       NOTE: Many of the methods in this package can croak, so use eval, or
#       Error.pm's try/catch mechanism to capture errors.  Also, while some
#       methods from earlier versions of this package return true on success,
#       this (never documented) behavior is no longer the case.
  }
  $self->{_status} = 'RSA KEY SET';
  return $self->_error('PRIVATE_KEY unable to create a valid RSA:' . ref($self->{pko}) ) unless ( ref($self->{pko}) eq 'Crypt::OpenSSL::RSA' );

t/01-agent.t  view on Meta::CPAN





              ## SKIP PRIVATE APPLICATION UNLESS VALID KEY FILE PROVIDED IN CONFIG
              diag(' --- SKIPPING PRIVATE API CONFIG - KEYFILE NOT FOUND') unless (-e $config->{PRIVATE_APPLICATION}{KEYFILE} );
              SKIP: {
                  skip("no Private API config",7) unless (-e $config->{PRIVATE_APPLICATION}{KEYFILE} );
                  #ok( $config->{PRIVATE_APPLICATION}{CONSUMER_KEY} ne 'YOUR_OAUTH_CONSUMER_KEY', 'Private API Consumer key not left as default' );
                  ok ( my $pk_text = read_file( $config->{PRIVATE_APPLICATION}{KEYFILE} ), 'load private key file');
                  ok ( my $pko = Crypt::OpenSSL::RSA->new_private_key( $pk_text ), 'Generate RSA Object from private key file' );
                  ok ( my $xero = WebService::Xero::Agent::PrivateApplication->new( 
                                                          NAME            => $config->{PRIVATE_APPLICATION}{NAME},
                                                          CONSUMER_KEY    => $config->{PRIVATE_APPLICATION}{CONSUMER_KEY}, 
                                                          CONSUMER_SECRET => $config->{PRIVATE_APPLICATION}{CONSUMER_SECRET}, 
                                                         # KEYFILE         => $config->{PRIVATE_APPLICATION}{KEYFILE},
                                                          PRIVATE_KEY     => $pk_text,
                                                          ), 'New Xero Private Application Agent' );
                  note( $xero->as_text() );
                  ## TEST GET PRODUCTS
                  ok( my $products = $xero->get_all_xero_products_from_xero(), 'Get live products' );

t/02-private_application.t  view on Meta::CPAN

ukD2jKyHqWIdU/3tM3iP1b8CY6JyVyhOjwJBAJ/NmDMKohnJn9bcKxOpJ/HiypIh
8sQzcZY4W5QEYTLKHJ7HV08brXFh6VvV12bL2q1HmLAEb69bll2P2Gve+k8CQQC3
1Pi4lxwl1FKSjlsvMUrDSm01Mbw34YM0UlP/0W2XwoWx4MYB2p7ifrTAHQCh4IoF
64wSAqOADEI9w/F5SBiVAkBJVt3jNObeieMfxVU/NOtajXX51sDUj3XCIWPPui8i
IKzzVn7G0kH+/TqtTPdizrDJkg/rsnrTpvHi8eeMZlAy
-----END RSA PRIVATE KEY-----';

    ## test a valid although unusable configuration
    ok( my $xero = WebService::Xero::Agent::PrivateApplication->new( CONSUMER_KEY    => 'CKCKCKCKCKCKCKCKCKCKCKCKCKCKCKCKCKCKCK', 
                                                          CONSUMER_SECRET => 'CSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCS', 
                                                          #KEYFILE         => "/Users/peter/gc-drivers/conf/xero_private_key.pem"
                                                          PRIVATE_KEY => $fake_key, ) ,  'New Xero Private Application Agent' );
    is( ref($xero), 'WebService::Xero::Agent::PrivateApplication', 'created Xero object is the right type' );

    like ( $xero->as_text(), qr/WebService::Xero::Agent::PrivateApplication/, 'as_text()' );

    is( $xero->get_all_xero_products_from_xero(), undef, "attempt to get from xero fails with invalid credentials" );

    #WebService
}

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.727 second using v1.00-cache-2.02-grep-82fe00e-cpan-2cc899e4a130 )