Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Mojolicious for 
openSUSE:Factory checked in at 2023-01-04 17:54:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mojolicious (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Mojolicious.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Mojolicious"

Wed Jan  4 17:54:29 2023 rev:170 rq:1055923 version:9.31

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Mojolicious/perl-Mojolicious.changes        
2022-11-24 12:24:10.837660292 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-Mojolicious.new.1563/perl-Mojolicious.changes  
    2023-01-04 17:55:05.127059617 +0100
@@ -1,0 +2,15 @@
+Wed Dec 21 03:08:08 UTC 2022 - Tina Müller <[email protected]>
+
+- updated to 9.31
+   see /usr/share/doc/packages/perl-Mojolicious/Changes
+
+  9.31  2022-12-21
+    - This release contains fixes for security issues, everybody should 
upgrade!
+    - Removed experimental status from links method in Mojo::Headers.
+    - Added tls_options attribute to Mojo::UserAgent. (heikojansen)
+    - Fixed multiple "<script>" parsing issues in Mojo::DOM.
+    - Fixed a sporadic warning in Mojo::UserAgent. (s1037989)
+    - Fixed UNIX domain socket support in Mojo::UserAgent debug feature. 
(s1037989)
+    - Fixed a bug in Mojo::DOM where strings like "<.>" were considered valid 
tags.
+
+-------------------------------------------------------------------

Old:
----
  Mojolicious-9.30.tar.gz

New:
----
  Mojolicious-9.31.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Mojolicious.spec ++++++
--- /var/tmp/diff_new_pack.6K33zG/_old  2023-01-04 17:55:05.595062375 +0100
+++ /var/tmp/diff_new_pack.6K33zG/_new  2023-01-04 17:55:05.603062422 +0100
@@ -18,7 +18,7 @@
 
 %define cpan_name Mojolicious
 Name:           perl-Mojolicious
-Version:        9.30
+Version:        9.31
 Release:        0
 License:        Artistic-2.0
 Summary:        Real-time web framework

++++++ Mojolicious-9.30.tar.gz -> Mojolicious-9.31.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/Changes new/Mojolicious-9.31/Changes
--- old/Mojolicious-9.30/Changes        2022-11-23 01:43:59.000000000 +0100
+++ new/Mojolicious-9.31/Changes        2022-12-21 01:34:34.000000000 +0100
@@ -1,4 +1,13 @@
 
+9.31  2022-12-21
+  - This release contains fixes for security issues, everybody should upgrade!
+  - Removed experimental status from links method in Mojo::Headers.
+  - Added tls_options attribute to Mojo::UserAgent. (heikojansen)
+  - Fixed multiple "<script>" parsing issues in Mojo::DOM.
+  - Fixed a sporadic warning in Mojo::UserAgent. (s1037989)
+  - Fixed UNIX domain socket support in Mojo::UserAgent debug feature. 
(s1037989)
+  - Fixed a bug in Mojo::DOM where strings like "<.>" were considered valid 
tags.
+
 9.30  2022-11-22
   - Added EXPERIMENTAL support for parsing and generating Link headers.
   - Added EXPERIMENTAL links method to Mojo::Headers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/META.json 
new/Mojolicious-9.31/META.json
--- old/Mojolicious-9.30/META.json      2022-11-23 12:51:45.000000000 +0100
+++ new/Mojolicious-9.31/META.json      2022-12-21 01:35:27.000000000 +0100
@@ -64,6 +64,6 @@
          "web" : "https://web.libera.chat/#mojo";
       }
    },
-   "version" : "9.30",
+   "version" : "9.31",
    "x_serialization_backend" : "JSON::PP version 4.07"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/META.yml 
new/Mojolicious-9.31/META.yml
--- old/Mojolicious-9.30/META.yml       2022-11-23 12:51:45.000000000 +0100
+++ new/Mojolicious-9.31/META.yml       2022-12-21 01:35:27.000000000 +0100
@@ -35,5 +35,5 @@
   homepage: https://mojolicious.org
   license: http://www.opensource.org/licenses/artistic-license-2.0
   repository: https://github.com/mojolicious/mojo.git
-version: '9.30'
+version: '9.31'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/lib/Mojo/DOM/HTML.pm 
new/Mojolicious-9.31/lib/Mojo/DOM/HTML.pm
--- old/Mojolicious-9.30/lib/Mojo/DOM/HTML.pm   2022-11-11 19:49:41.000000000 
+0100
+++ new/Mojolicious-9.31/lib/Mojo/DOM/HTML.pm   2022-12-10 23:30:45.000000000 
+0100
@@ -11,7 +11,7 @@
 has 'xml';
 
 my $ATTR_RE = qr/
-  ([^<>=\s\/]+|\/)                     # Key
+  ([^<>=\s\/0-9.\-][^<>=\s\/]*|\/)     # Key
   (?:
     \s*=\s*
     (?s:(["'])(.*?)\g{-2}|([^>\s]*))   # Value
@@ -19,27 +19,27 @@
   \s*
 /x;
 my $TOKEN_RE = qr/
-  ([^<]+)?                                            # Text
+  ([^<]+)?                                                                     
# Text
   (?:
     <(?:
       !(?:
         DOCTYPE(
-        \s+\w+                                        # Doctype
-        (?:(?:\s+\w+)?(?:\s+(?:"[^"]*"|'[^']*'))+)?   # External ID
-        (?:\s+\[.+?\])?                               # Int Subset
+        \s+\w+                                                                 
# Doctype
+        (?:(?:\s+\w+)?(?:\s+(?:"[^"]*"|'[^']*'))+)?                            
# External ID
+        (?:\s+\[.+?\])?                                                        
# Int Subset
         \s*)
       |
-        --(.*?)--\s*                                  # Comment
+        --(.*?)--\s*                                                           
# Comment
       |
-        \[CDATA\[(.*?)\]\]                            # CDATA
+        \[CDATA\[(.*?)\]\]                                                     
# CDATA
       )
     |
-      \?(.*?)\?                                       # Processing Instruction
+      \?(.*?)\?                                                                
# Processing Instruction
     |
-      \s*([^<>\s]+\s*(?:(?:$ATTR_RE){0,32766})*+)     # Tag
+      \s*((?:\/\s*)?[^<>\s\/0-9.\-][^<>\s\/]*\s*(?:(?:$ATTR_RE){0,32766})*+)   
# Tag
     )>
   |
-    (<)                                               # Runaway "<"
+    (<)                                                                        
# Runaway "<"
   )??
 /xis;
 
@@ -117,7 +117,7 @@
         # No more content
         if (!$xml && (my $tags = $NO_MORE_CONTENT{$end})) { _end($_, $xml, 
\$current) for @$tags }
 
-        _end($xml ? $1 : lc $1, $xml, \$current);
+        _end($end, $xml, \$current);
       }
 
       # Start
@@ -144,7 +144,7 @@
 
         # Raw text elements
         next if $xml || !$RAW{$start} && !$RCDATA{$start};
-        next unless $html =~ m!\G(.*?)<\s*/\s*\Q$start\E\s*>!gcsi;
+        next unless $html =~ m!\G(.*?)</\Q$start\E(?:\s+|\s*>)!gcsi;
         _node($current, 'raw', $RCDATA{$start} ? html_unescape $1 : $1);
         _end($start, 0, \$current);
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/lib/Mojo/Headers.pm 
new/Mojolicious-9.31/lib/Mojo/Headers.pm
--- old/Mojolicious-9.30/lib/Mojo/Headers.pm    2022-11-23 01:11:08.000000000 
+0100
+++ new/Mojolicious-9.31/lib/Mojo/Headers.pm    2022-11-25 14:10:10.000000000 
+0100
@@ -527,8 +527,7 @@
   my $links = $headers->links;
   $headers  = $headers->links({next => 'http://example.com/foo', prev => 
'http://example.com/bar'});
 
-Get or set web links from or to C<Link> header according to L<RFC 
5988|http://tools.ietf.org/html/rfc5988>. Note that
-this method is B<EXPERIMENTAL> and might change without warning!
+Get or set web links from or to C<Link> header according to L<RFC 
5988|http://tools.ietf.org/html/rfc5988>.
 
   # Extract information about next page
   say $headers->links->{next}{link};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/lib/Mojo/Server/Daemon.pm 
new/Mojolicious-9.31/lib/Mojo/Server/Daemon.pm
--- old/Mojolicious-9.30/lib/Mojo/Server/Daemon.pm      2022-06-14 
13:31:51.000000000 +0200
+++ new/Mojolicious-9.31/lib/Mojo/Server/Daemon.pm      2022-12-10 
18:55:56.000000000 +0100
@@ -194,7 +194,7 @@
       my ($loop, $stream, $id) = @_;
 
       $self->{connections}{$id} = {tls => $tls};
-      warn "-- Accept $id (@{[$stream->handle->peerhost]})\n" if DEBUG;
+      warn "-- Accept $id (@{[_peer($stream->handle)]})\n" if DEBUG;
       $stream->timeout($self->inactivity_timeout);
 
       $stream->on(close   => sub { $self && $self->_close($id) });
@@ -212,6 +212,8 @@
   say 'Web application available at ', $options->{path} // $url;
 }
 
+sub _peer { $_[0]->isa('IO::Socket::UNIX') ? $_[0]->peerpath : $_[0]->peerhost 
}
+
 sub _read {
   my ($self, $id, $chunk) = @_;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/lib/Mojo/UserAgent.pm 
new/Mojolicious-9.31/lib/Mojo/UserAgent.pm
--- old/Mojolicious-9.30/lib/Mojo/UserAgent.pm  2022-06-14 13:31:51.000000000 
+0200
+++ new/Mojolicious-9.31/lib/Mojo/UserAgent.pm  2022-12-21 01:30:36.000000000 
+0100
@@ -21,15 +21,15 @@
 has inactivity_timeout => sub { $ENV{MOJO_INACTIVITY_TIMEOUT} // 40 };
 has insecure           => sub { $ENV{MOJO_INSECURE} };
 has 'max_response_size';
-has ioloop          => sub { Mojo::IOLoop->new };
-has key             => sub { $ENV{MOJO_KEY_FILE} };
-has max_connections => 5;
-has max_redirects   => sub { $ENV{MOJO_MAX_REDIRECTS} || 0 };
-has proxy           => sub { Mojo::UserAgent::Proxy->new };
-has request_timeout => sub { $ENV{MOJO_REQUEST_TIMEOUT} // 0 };
-has server          => sub { Mojo::UserAgent::Server->new(ioloop => 
shift->ioloop) };
-has socket_options  => sub { {} };
-has transactor      => sub { Mojo::UserAgent::Transactor->new };
+has ioloop                           => sub { Mojo::IOLoop->new };
+has key                              => sub { $ENV{MOJO_KEY_FILE} };
+has max_connections                  => 5;
+has max_redirects                    => sub { $ENV{MOJO_MAX_REDIRECTS} || 0 };
+has proxy                            => sub { Mojo::UserAgent::Proxy->new };
+has request_timeout                  => sub { $ENV{MOJO_REQUEST_TIMEOUT} // 0 
};
+has server                           => sub { 
Mojo::UserAgent::Server->new(ioloop => shift->ioloop) };
+has [qw(socket_options tls_options)] => sub { {} };
+has transactor                       => sub { Mojo::UserAgent::Transactor->new 
};
 
 # Common HTTP methods
 for my $name (qw(DELETE GET HEAD OPTIONS PATCH POST PUT)) {
@@ -116,6 +116,7 @@
   # TLS
   if ($options{tls} = $proto eq 'https') {
     map { $options{"tls_$_"} = $self->$_ } qw(ca cert key);
+    $options{tls_options} = $self->tls_options;
     $options{tls_options}{SSL_verify_mode} = 0x00 if $self->insecure;
   }
 
@@ -286,6 +287,7 @@
 sub _remove {
   my ($self, $id) = @_;
   my $c = delete $self->{connections}{$id};
+  return unless $c->{ioloop};
   $self->_dequeue($c->{ioloop}, $id);
   $c->{ioloop}->remove($id);
 }
@@ -648,6 +650,13 @@
 
 Additional options for L<IO::Socket::IP> when opening new connections.
 
+=head2 tls_options
+
+  my $options = $ua->tls_options;
+  $ua         = $ua->tls_options({SSL_cipher_list => 
'DEFAULT:!DH@SECLEVEL=1'});
+
+Additional options for L<IO::Socket::SSL> when opening new connections.
+
 =head2 transactor
 
   my $t = $ua->transactor;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/lib/Mojolicious/Guides/Cookbook.pod 
new/Mojolicious-9.31/lib/Mojolicious/Guides/Cookbook.pod
--- old/Mojolicious-9.30/lib/Mojolicious/Guides/Cookbook.pod    2022-06-14 
13:31:51.000000000 +0200
+++ new/Mojolicious-9.31/lib/Mojolicious/Guides/Cookbook.pod    2022-12-10 
18:55:56.000000000 +0100
@@ -1460,7 +1460,7 @@
 
   # Open WebSocket to echo service
   my $ua = Mojo::UserAgent->new;
-  $ua->websocket_p('ws://echo.websocket.org')->then(sub ($tx) {
+  $ua->websocket_p('wss://ws.postman-echo.com/raw')->then(sub ($tx) {
 
     # Prepare a followup promise so we can wait for messages
     my $promise = Mojo::Promise->new;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-9.30/lib/Mojolicious/resources/templates/mojo/debug.html.ep 
new/Mojolicious-9.31/lib/Mojolicious/resources/templates/mojo/debug.html.ep
--- old/Mojolicious-9.30/lib/Mojolicious/resources/templates/mojo/debug.html.ep 
2022-06-20 20:05:27.000000000 +0200
+++ new/Mojolicious-9.31/lib/Mojolicious/resources/templates/mojo/debug.html.ep 
2022-12-18 20:20:49.000000000 +0100
@@ -66,7 +66,7 @@
                 <a class="dropdown-item" 
href="https://matrix.to/#/#mojo:matrix.org";>Matrix</a>
                 <a class="dropdown-item" 
href="https://web.libera.chat/#mojo";>IRC</a>
                 <a class="dropdown-item" 
href="https://forum.mojolicious.org";>Forum</a>
-                <a class="dropdown-item" 
href="https://twitter.com/mojolicious_org";>Twitter</a>
+                <a class="dropdown-item" 
href="https://fosstodon.org/@mojolicious";>Mastodon</a>
                 <a class="dropdown-item" 
href="https://www.linkedin.com/groups/8963713/";>LinkedIn</a>
                 <a class="dropdown-item" 
href="https://github.com/mojolicious/mojo/wiki";>Wiki</a>
                 <a class="dropdown-item" 
href="https://metacpan.org/release/Mojolicious/";>CPAN</a>
@@ -311,7 +311,7 @@
           </div>
           <div class="col-sm align-self-center text-center mojo-social">
             <a alt="GitHub" href="https://github.com/mojolicious/mojo";><i 
class="fab fa-github-alt"></i></a>
-            <a alt="Twitter" href="https://twitter.com/mojolicious_org";><i 
class="fab fa-twitter"></i></a>
+            <a alt="Mastodon" href="https://fosstodon.org/@mojolicious";><i 
class="fab fa-mastodon"></i></a>
             <a alt="LinkedIn" 
href="https://www.linkedin.com/groups/8963713/";><i class="fab 
fa-linkedin"></i></a>
           </div>
         </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/lib/Mojolicious.pm 
new/Mojolicious-9.31/lib/Mojolicious.pm
--- old/Mojolicious-9.30/lib/Mojolicious.pm     2022-11-11 11:15:58.000000000 
+0100
+++ new/Mojolicious-9.31/lib/Mojolicious.pm     2022-12-21 01:30:55.000000000 
+0100
@@ -57,7 +57,7 @@
 has validator => sub { Mojolicious::Validator->new };
 
 our $CODENAME = 'Waffle';
-our $VERSION  = '9.30';
+our $VERSION  = '9.31';
 
 sub BUILD_DYNAMIC {
   my ($class, $method, $dyn_methods) = @_;
@@ -978,6 +978,8 @@
 
 Graham Knop
 
+Heiko Jansen
+
 Henry Tang
 
 Hideki Yamamura
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/t/mojo/dom.t 
new/Mojolicious-9.31/t/mojo/dom.t
--- old/Mojolicious-9.30/t/mojo/dom.t   2022-06-14 13:31:51.000000000 +0200
+++ new/Mojolicious-9.31/t/mojo/dom.t   2022-12-10 23:30:41.000000000 +0100
@@ -1772,7 +1772,7 @@
         alert('<123>');
       }
     </script>
-    < sCriPt two="23" >if (b > c) { alert('&<ohoh>') }< / scRiPt >
+    < sCriPt two="23" >if (b > c) { alert('&<ohoh>') }</scRiPt  >
   <body>Foo!</body>
 EOF
   is $dom->find('html > body')->[0]->text,         'Foo!',                     
        'right text';
@@ -3001,6 +3001,94 @@
   is $dom->at(':scope:first-child'),                                undef, 'no 
result';
 };
 
+subtest 'Runaway "<"' => sub {
+  my $dom = Mojo::DOM->new(<<EOF);
+    <table>
+      <tr>
+        <td>
+          <div class="test" data-id="123" data-score="3">works</div>
+          TEST 123<br />
+          Test  12-34-5 test  >= 75% and < 85%  test<br />
+          Test  12-34-5  -test foo >= 5% and < 30% test<br />
+          Test  12-23-4 n/a >=13% and = 1% and < 5% test tset<br />
+          Test  12-34-5  test >= 1% and < 5%   foo, bar, baz<br />
+          Test foo, bar, baz  123-456-78  test < 1%  foo, bar, baz yada, foo, 
bar and baz, yada
+        </td>
+      </tr>
+    </table>
+EOF
+  is $dom->at('.test')->text, 'works', 'right text';
+};
+
+subtest 'XML name characters' => sub {
+  my $dom = Mojo::DOM->new->xml(1)->parse('<Foo><1a>foo</1a></Foo>');
+  is $dom->at('Foo')->text, '<1a>foo</1a>',                        'right 
text';
+  is "$dom",                '<Foo>&lt;1a&gt;foo&lt;/1a&gt;</Foo>', 'right 
result';
+
+  $dom = Mojo::DOM->new->xml(1)->parse('<Foo><.a>foo</.a></Foo>');
+  is $dom->at('Foo')->text, '<.a>foo</.a>',                        'right 
text';
+  is "$dom",                '<Foo>&lt;.a&gt;foo&lt;/.a&gt;</Foo>', 'right 
result';
+
+  $dom = Mojo::DOM->new->xml(1)->parse('<Foo><.>foo</.></Foo>');
+  is $dom->at('Foo')->text, '<.>foo</.>',                        'right text';
+  is "$dom",                '<Foo>&lt;.&gt;foo&lt;/.&gt;</Foo>', 'right 
result';
+
+  $dom = Mojo::DOM->new->xml(1)->parse('<Foo><-a>foo</-a></Foo>');
+  is $dom->at('Foo')->text, '<-a>foo</-a>',                        'right 
text';
+  is "$dom",                '<Foo>&lt;-a&gt;foo&lt;/-a&gt;</Foo>', 'right 
result';
+
+  $dom = Mojo::DOM->new->xml(1)->parse('<Foo><a1>foo</a1></Foo>');
+  is $dom->at('Foo a1')->text, 'foo',                     'right text';
+  is "$dom",                   '<Foo><a1>foo</a1></Foo>', 'right result';
+
+  $dom = Mojo::DOM->new->xml(1)->parse('<Foo><a .b -c 1>foo</a></Foo>');
+  is $dom->at('Foo')->text, '<a .b -c 1>foo',                  'right text';
+  is "$dom",                '<Foo>&lt;a .b -c 1&gt;foo</Foo>', 'right result';
+
+  $dom = Mojo::DOM->new->xml(1)->parse('<😄 😄="😄">foo</😄>');
+  is $dom->at('😄')->text, 'foo',              'right text';
+  is "$dom",              '<😄 😄="😄">foo</😄>', 'right result';
+
+  $dom = Mojo::DOM->new->xml(1)->parse('<こんにちは 
こんにちは="こんにちは">foo</こんにちは>');
+  is $dom->at('こんにちは')->text, 'foo',                              
'right text';
+  is "$dom",                  '<こんにちは 
こんにちは="こんにちは">foo</こんにちは>', 'right result';
+};
+
+subtest 'Script end tags' => sub {
+  my $dom = Mojo::DOM->new(<<EOF);
+    <!DOCTYPE html>
+    <h1>Welcome to HTML</h1>
+    <script>
+        console.log('< /script> is safe');
+        /* <div>XXX this is not a div element</div> */
+    </script>
+EOF
+  like $dom->at('script')->text, qr/console\.log.+< \/script>.+this is not a 
div element/s, 'right text';
+
+  $dom = Mojo::DOM->new(<<EOF);
+    <!DOCTYPE html>
+    <h1>Welcome to HTML</h1>
+    <script>
+        console.log('this is a script element and should be executed');
+    // </script asdf> <p>
+        console.log('this is not a script');
+        // <span data-wtf="</script>">:-)</span>
+EOF
+  like $dom->at('script')->text, qr/console\.log.+executed.+\/\//s,       
'right text';
+  like $dom->at('p')->text,      qr/console\.log.+this is not a script/s, 
'right text';
+  is $dom->at('span')->text, ':-)', 'right text';
+
+  $dom = Mojo::DOM->new(<<EOF);
+    <!DOCTYPE html>
+    <h1>Welcome to HTML</h1>
+    <div>
+      <script> console.log('</scriptxyz is safe'); </script>
+    </div>
+EOF
+  like $dom->at('script')->text, qr/console\.log.+scriptxyz is safe/s, 'right 
text';
+  like $dom->at('div')->text,    qr/^\s+$/s,                           'right 
text';
+};
+
 subtest 'Unknown CSS selector' => sub {
   my $dom = 
Mojo::DOM->new('<html><head></head><body><div><div>x</div></div></body></html>');
   eval { $dom->at('div[') };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/t/mojo/user_agent_tls.t 
new/Mojolicious-9.31/t/mojo/user_agent_tls.t
--- old/Mojolicious-9.30/t/mojo/user_agent_tls.t        2022-06-14 
13:31:51.000000000 +0200
+++ new/Mojolicious-9.31/t/mojo/user_agent_tls.t        2022-12-21 
01:30:36.000000000 +0100
@@ -98,4 +98,28 @@
   is $ua->ioloop->stream($tx->connection)->handle->get_sslversion, 'TLSv1',    
  'TLSv1 has been negotiatied';
 };
 
+subtest 'Client side TLS options' => sub {
+  my $daemon = Mojo::Server::Daemon->new(app => app, ioloop => 
Mojo::IOLoop->singleton, silent => 1);
+  my $listen = 'https://127.0.0.1/?version=TLSv1_1';
+  my $port   = $daemon->listen([$listen])->start->ports->[0];
+
+  subtest '(Not) setting verification mode' => sub {
+    my $ua = Mojo::UserAgent->new(ioloop => Mojo::IOLoop->singleton);
+    my $tx = $ua->get("https://127.0.0.1:$port";);
+    like $tx->error->{message}, qr/certificate verify failed/, 'has error';
+
+    $ua = Mojo::UserAgent->new(ioloop => Mojo::IOLoop->singleton);
+    $ua->tls_options({SSL_verify_mode => 0x00});
+    $tx = $ua->get("https://127.0.0.1:$port";);
+    ok !$tx->error, 'no error';
+  };
+
+  subtest 'Setting acceptable protocol version' => sub {
+    my $ua = Mojo::UserAgent->new(ioloop => Mojo::IOLoop->singleton);
+    $ua->tls_options({SSL_version => 'TLSv1_2'});
+    my $tx = $ua->get("https://127.0.0.1:$port";);
+    like $tx->error->{message}, qr/wrong ssl version/, 'has error';
+  };
+};
+
 done_testing();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-9.30/t/mojolicious/ojo.t 
new/Mojolicious-9.31/t/mojolicious/ojo.t
--- old/Mojolicious-9.30/t/mojolicious/ojo.t    2022-06-14 13:31:51.000000000 
+0200
+++ new/Mojolicious-9.31/t/mojolicious/ojo.t    2022-11-25 22:24:20.000000000 
+0100
@@ -33,7 +33,7 @@
 };
 
 subtest 'Parse XML' => sub {
-  is x('<title>works</title>')->at('title')->text, 'works', 'right text';
+  is x ('<title>works</title>')->at('title')->text, 'works', 'right text';
 };
 
 subtest 'JSON' => sub {

Reply via email to