Finance-Bank-Bankwest

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

t/Bankwest-Session.t
t/Bankwest-SessionFromLogin.t
t/Bankwest-Transaction.t
t/Bankwest.t
t/author-critic.t
t/author-pod-spell.t
t/author-test-eol.t
t/fixtures/acct-balances.html
t/fixtures/google.html
t/fixtures/logged-out.html
t/fixtures/login-bad-credentials.html
t/fixtures/login-no-credentials.html
t/fixtures/login-subsequent-login.html
t/fixtures/login-then-acct-balances.html
t/fixtures/login-then-bad-credentials.html
t/fixtures/login-then-no-credentials.html
t/fixtures/login-then-service-message.html
t/fixtures/login-timeout.html
t/fixtures/login.html
t/fixtures/service-message.html
t/fixtures/txn-export.csv
t/fixtures/txn-search-bad-acct-from-date-to-date.html
t/fixtures/txn-search-bad-acct.html
t/fixtures/txn-search-bad-dates.html
t/fixtures/txn-search-bad-from-date.html
t/fixtures/txn-search-bad-to-date.html

lib/Finance/Bank/Bankwest/Error/NotLoggedIn/SubsequentLogin.pm  view on Meta::CPAN


This module is part of distribution Finance-Bank-Bankwest v1.2.8.

This distribution's version numbering follows the conventions defined at L<semver.org|http://semver.org/>.

=head1 DESCRIPTION

This exception may be thrown on calls to various methods of
L<Finance::Bank::Bankwest::Session> when the Bankwest Online Banking
session has been terminated due to another session being established
with the same credentials.

=head1 SEE ALSO



=over 4

=item *

L<Finance::Bank::Bankwest::Error::NotLoggedIn>

lib/Finance/Bank/Bankwest/Parser/Login.pm  view on Meta::CPAN


This module is part of distribution Finance-Bank-Bankwest v1.2.8.

This distribution's version numbering follows the conventions defined at L<semver.org|http://semver.org/>.

=head1 DESCRIPTION

This module holds the logic for identifying an L<HTTP::Response> object
as a Bankwest Online Banking login web page, and throwing appropriate
exceptions when the page indicates that something has gone wrong (e.g.
session timeout, subsequent login, bad credentials).

This module always throws an exception regardless of the content of the
response, on the basis that being presented with a login page during a
session is almost always a bad thing.  In the one foreseeable case when
a login page is good--logging in--the caller can simply catch the
exception and proceed as normal.

=head1 SEE ALSO


lib/Finance/Bank/Bankwest/SessionFromLogin.pm  view on Meta::CPAN

=head2 pan

The Personal Access Number (PAN).  Required.

=head2 access_code

The access code associated with the provided PAN.  Required.

=head2 session

If login with the provided credentials is successful, a
L<Finance::Bank::Bankwest::Session> instance.

May throw one of the following exceptions on failure:

=over 4

=item L<Finance::Bank::Bankwest::Error::NotLoggedIn::BadCredentials>

if the remote server rejects the supplied PAN/access code combination.

t/Bankwest-Parser-Login.t  view on Meta::CPAN

use Test::Routine::Util;
use Test::More;

run_tests(
    undef,
    't::lib::Test::Parser' => {
        parser      => 'Login',
        test_fail   => {
            'login-timeout'           => 'NotLoggedIn::Timeout',
            'login-bad-credentials'   => 'NotLoggedIn::BadCredentials',
            'login-no-credentials'    => 'NotLoggedIn::BadCredentials',
            'login-subsequent-login'  => 'NotLoggedIn::SubsequentLogin',
            'login'                   => 'NotLoggedIn::UnknownReason',
        },
    },
);
done_testing;

t/Bankwest-SessionFromLogin.t  view on Meta::CPAN

};

test 'fail if session passed in constructor' => sub {
    dies_ok { Finance::Bank::Bankwest::SessionFromLogin->new(
        pan         => 'irrelevant',
        access_code => 'irrelevant',
        session     => 'something',
    ); } 'constructor must not accept a session';
};

test 'fail correctly if bad credentials supplied' => sub {
    my $self = shift;
    my $sfl = Finance::Bank::Bankwest::SessionFromLogin->new(
        pan         => 'irrelevant',
        access_code => 'irrelevant',
        login_uri   => $self->uri_for('login-then-bad-credentials'),
    );
    throws_ok
        { $sfl->session }
        'Finance::Bank::Bankwest::Error::NotLoggedIn::BadCredentials';
};

test 'fail correctly if no credentials supplied' => sub {
    my $self = shift;
    my $sfl = Finance::Bank::Bankwest::SessionFromLogin->new(
        pan         => 'irrelevant',
        access_code => 'irrelevant',
        login_uri   => $self->uri_for('login-then-no-credentials'),
    );
    throws_ok
        { $sfl->session }
        'Finance::Bank::Bankwest::Error::NotLoggedIn::BadCredentials';
};

test 'fail on Google' => sub {
    my $self = shift;
    my $sfl = Finance::Bank::Bankwest::SessionFromLogin->new(
        pan         => 'irrelevant',

t/fixtures/login-then-bad-credentials.html  view on Meta::CPAN

            <div id="contentColumn" class="single">
                <!--[if !IE]> START .home_leftColumn <![endif]-->
                <div class="home_leftColumn">
                    <div class="liteAnchor">
                        <a href="ribLite.aspx" class="liteAnchorIcon">
                            <img class="liteAnchor" src="Resources/Images/mobile.png" />
                        </a><a href="ribLite.aspx"><span style="vertical-align: top; font-size: small;">mobile
                            version</span> </a>
                    </div>
                    <div>
                        <form name="Form1" method="get" action="login-bad-credentials.html" id="Form1" autocomplete="off" class="fn_inlineValidation">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="XXX" />
</div>

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {

t/fixtures/login-then-no-credentials.html  view on Meta::CPAN

            <div id="contentColumn" class="single">
                <!--[if !IE]> START .home_leftColumn <![endif]-->
                <div class="home_leftColumn">
                    <div class="liteAnchor">
                        <a href="ribLite.aspx" class="liteAnchorIcon">
                            <img class="liteAnchor" src="Resources/Images/mobile.png" />
                        </a><a href="ribLite.aspx"><span style="vertical-align: top; font-size: small;">mobile
                            version</span> </a>
                    </div>
                    <div>
                        <form name="Form1" method="get" action="login-no-credentials.html" id="Form1" autocomplete="off" class="fn_inlineValidation">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="XXX" />
</div>

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {



( run in 0.273 second using v1.01-cache-2.11-cpan-4d50c553e7e )