Revision history for JMAP-Tester

0.112     2026-08-03 13:04:57-04:00 America/New_York
        - tweak formatting of bullet lists in Manual

0.111     2026-08-03 12:10:36-04:00 America/New_York
        - add JMAP::Tester::Manual, a sort of quick start

0.110     2026-06-17 20:59:46-04:00 America/New_York
        - provide all Result types with the option to issue a diagnostic abort,
          previously limited to Response
        - when a Failure is treated like a Response (more or less), issue a
          diagnostic abort

0.109     2025-12-17 09:59:32+11:00 Australia/Melbourne
        - fix a compilation error in the HTTP Logger

0.108     2025-12-16 09:18:30+11:00 Australia/Melbourne
        - improve test coverage
        - replace short-lived UA::Test with LWP and LWP::Protocol::PSGI
        - correct a few places where confess or abort should've been the other
          one
        - removed ->simple_auth, which has long been entirely obsolete

0.107     2025-12-11 13:26:56+11:00 Australia/Melbourne
        - add a means to test the Tester, then do so
        - add a means to supply hand-crafted JSON to $tester->request
        - switch from JSON to JSON::XS

0.106     2025-12-11 09:17:48+11:00 Australia/Melbourne
        - add an "ident" property to the Tester, which will show up in logging

0.105     2025-12-09 11:44:18+11:00 Australia/Melbourne
        - add a (temporary!) second arg to ->download to allow setting the
          Accept header
        - convert the LWP-based UA to use keepalive
        - add get_client_session to get the session without reconfiguring

0.104     2025-06-11 13:28:56-04:00 America/New_York
        - add a TO_JSON method to the Sentence class
        - include ->sentences, not ->items in default diagnostics (which allows
          smarter diagnostic dumpers to filter based on the class)

0.103     2023-01-11 21:24:00-05:00 America/New_York
        - update distribution metadata
        - bump required Perl to v5.14.0

0.102     2022-07-25 10:45:39-04:00 America/New_York
        - allow subclasses to change how JWT-authenticated links work
          (you probably don't need this!)
        - Stop acting like JMAP sessions contain an authenticationUri, because
          they don't!  This means: don't change the $tester->authentication_uri
          to be whatever you find in the client session.  You'll never find a
          defined value, which means you'll clobber the correctly-set value
          from initialization.

0.101     2021-08-13 11:02:38-04:00 America/New_York
        - work around bugs in older Role::Tiny; this is what you want if you
          saw: Can't use string ("-1") as a symbol ref

0.100     2021-08-10 12:11:55-04:00 America/New_York
        - [ THIS UPDATE MIGHT BREAK YOUR CODE ]
        - The $jtester->ua object is now a "UA" object, not just an
          LWP::UserAgent.  This allows the use of other user agents.  More
          importantly, the tester can be configured to return Futures instead
          of immediate responses, which means it can be operated in
          non-blocking mode.  If you have been interacting with the result of
          ->ua directly, you should read the details of its new interface in
          JMAP::Tester::Role::UA and then update your code.

0.026     2019-03-08 15:48:29-05:00 America/New_York
        - fix reference type of accounts collection (thanks, WOLFSAGE)

0.025     2019-03-06 09:16:33-05:00 America/New_York
        - allow for template variables in upload URI also

0.024     2019-03-04 16:03:30-05:00 America/New_York
        - add account and primary account accounting

0.023     2019-03-04 14:51:46-05:00 America/New_York
        - add default_using attribute, because using is what we're all using
          now

0.022     2018-12-06 06:24:38+11:00 Australia/Melbourne
        - bytes_ref now returns a *reference* to a byte string
        - allow created_creation_ids to work even if created is empty
        - response_payload method, a generic way to get at a Result's response

0.021     2018-08-27 15:16:43-04:00 America/New_York
        - autoflush output handle used for logging

0.020     2018-07-24 15:23:33-04:00 America/New_York
        - add "type" to download_uri_for arguments

0.019     2018-07-15 20:57:09-04:00 America/Toronto
        - allow "-X" with a numeric "X" as the output filename for Logger to
          output to the numeric file descriptor
        - fix insane non-cleanup of loggers; sorry about that
        - make simple_auth and download actually, like, work

0.018     2018-03-10 18:08:29-05:00 America/New_York
        - no longer use allow_blessed on the JSON codec

0.017     2018-01-16 10:54:11-05:00 America/New_York
        - updated for JMAP wrapper Objects, will make new-style Object requests
          unless instructed otherwise

0.016     2018-01-11 13:52:14-05:00 America/New_York
        - SentenceCollection introduced to allow other implementations of
          Response-like objects

0.015     2017-10-20 15:05:13-04:00 America/New_York
        - avoid a memory cycle in the logging code
        - URI escape filename in download link generation

0.014     2017-04-18 10:22:11-04:00 America/New_York
        - add update_client_session and configure_from_client_session;
          These methods should make it easier to bootstrap your tester from a
          running server.

0.013     2017-03-31 18:25:11-05:00 America/Chicago
        - assert_successful_set and assert_single_successful_set
        - $set_sentence->assert_no_errors now returns $set_sentence on okay

0.012     2017-03-24 19:12:50-04:00 America/New_York
        - JWT access tokens for authenticated GET now supported
        - logout should be more reliable
        - renamed auth_struct to client_session

0.011     2017-02-23 11:34:22-08:00 America/Los_Angeles
        - add ->sentence_named to Response and Paragraph
        - add ->sentences and ->paragraphs to Response
        - add ->assert_named to Sentence
        - add ->assert_n_sentences to Response and Paragraph
        - Sentence::Set is now a subclass of Sentence

0.010     2017-02-15 08:00:29-05:00 America/New_York
        - methods like "paragraph" and "sentence" now issue aborts when the
          index is out of range
        - Results now have ->assert_successful, which returns the Result or
          aborts
        - There's now a ->logout method on tester that attempts to log out
        - the Authorization header is now set only on specific requests, not on
          every request made by the tester's user agent
        - simple authentication has been fixed; it was totally broken in the
          last release

0.009     2017-01-28 13:54:00-05:00 America/New_York
        - an abort is now issued on bogus paragraphs and non-contiguous use of
          a client id; we can roll this back in the future if someone has a
          need… but why would you?
        - Set sentences now have an assert_no_errors method that throws a
          error-dumping abort if any part of the setFoos method did not succeed
        - paragraphs now have a client_id method
        - $set->VERB_errors now always returns an empty hashref if there are
          errors, even if the server returned nothing or null

0.008     2017-01-01 12:00:12-05:00 America/New_York
        - update minimum required JSON::Typist

0.007     2016-12-28 12:21:52-05:00 America/New_York
        - there's a logging system, which will be documented when more done
        - improved support for ->download
        - simple_auth should now, uh, work
        - some internal exceptions now throw JMAP::Tester::Abort errors,
          for use with Test::Abortable
        - "Set" sentences now understand new-style Object values for "updated"
          and provide transparent access to both new- and old-style updated

0.006     2016-12-01 10:49:03+11:00 Australia/Melbourne
        - support for upload and download
        - jmap_uri is now api_uri
        - logging in via simple auth now uploads uris when possible

0.005     2016-10-27 19:12:19-04:00 America/New_York
        - default_arguments have been added so you don't need to remember to
          put an accountId in every single method call

0.004     2016-09-26 14:05:14-04:00 America/New_York
        - include http_response on all request results

0.003     2016-09-02 11:09:48-04:00 America/New_York
        - fix a decoding bug for non-ASCII in successful JMAP response handling
        - http_response is now available on successful responses

0.002     2016-08-22 10:51:35-04:00 America/New_York
        - $paragraph->sentence($n) added
        - $res->single_sentence($name) added
        - response, paragraph, and sentence get ->as_stripped_X methods

0.001     2016-05-31 11:24:33-04:00 America/New_York
        - first release to CPAN, at Alfie's urging
