File: live.t

package info (click to toggle)
libmojolicious-plugin-oauth2-perl 2.02-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 192 kB
  • sloc: perl: 448; makefile: 2
file content (40 lines) | stat: -rw-r--r-- 1,215 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use Test::More;
use Mojolicious::Lite;
use Test::Mojo;
use Test::More;

unless ($ENV{OAUTH_FB_KEY} && $ENV{OAUTH_FB_SECRET}) {
  plan skip_all => 'OAUTH_FB_KEY and OAUTH_FB_SECRET must be set for oauth tests';
}

plugin 'OAuth2', facebook => {key => $ENV{OAUTH_FB_KEY}, secret => $ENV{OAUTH_FB_SECRET}};

my ($token, $tx);

get '/connect' => sub {
  my $self = shift;
  $self->oauth2->get_token_p('facebook')->then(
    sub {
      return unless my $provider_res = shift;    # Redirect
      $self->render(
        json => $self->ua->get("https://graph.facebook.com/me?access_token=$provider_res->{access_token}")->res->json);
    }
  )->catch(
    sub {
      $self->render(json => {message => shift, status => 500});
    }
  );
};

my $t = Test::Mojo->new;

$t->get_ok('/connect')->status_is(302)->header_like(Location => qr|https://graph\.facebook\.com/oauth/authorize|)
  ->header_like(Location => qr|\bclient_id=$ENV{OAUTH_FB_KEY}\b|)
  ->header_like(Location => qr|\bredirect_uri=https?://[^/]+/connect\b|);

# This i a bit ugly. Maybe it should be factored out in a different test?
if ($ENV{OAUTH_FB_KEY} eq 'fail') {
  $t->get_ok('/connect?code=123')->status_is(500)->json_has('/message');
}

done_testing;