• 
      

    Add a new integration for I Done This.

    Review Request #8776 — Created Feb. 22, 2017 and submitted — Latest diff uploaded

    Information

    rbintegrations
    master
    ebbfd8e...

    Reviewers

    I Done This is a service that provides daily status reports with a list of
    tasks which are done, planned, or blocked. This integration allows posting
    'done' entries to I Done This teams on behalf of users when they publish,
    change, or close a review request, and when they publish reviews or replies.

    Each posted message includes a description of what the user did, along with
    details such as the review request id, summary, and url. Reviewer groups are
    also added as #tags for tracking on the I Done This website. The messages are
    currently hard-coded, but could become configurable in another change.

    The I Done This API gives control over individual user accounts, so each user
    has to provide their personal API token on their Review Board account page.
    The token is validated via the API before getting encrypted and saved in the
    user settings. The list of the user's teams is retrieved from the API the first
    time the user needs to post, and is cached to avoid duplicate requests. The
    cache expires in 24 hours, or can be deleted manually by re-saving the token.

    The administrator has to add an integration configuration for each I Done This
    team that posts are allowed to, along with conditions to filter which review
    request activity gets posted. Multiple configurations can specify the same team
    to allow alternative sets of conditions, but only one message will be posted
    to each unique team.

    The configuration method is not ideal, since the admin can't verify that the
    team is correctly set up without using an API token of a user on that team.
    Users also don't have access to the team configurations to choose or even see
    which teams or review requests get posted. However, the overall goal is to keep
    user settings to a minimum, and let he admin control the configuration. There
    may be ways in the future to improve the user experience, for example by adding
    UI notifications from the integration when posting to I Done This.

    Unit tests have been added to verify all the posted message types, various
    reasons for not posting, posts with multiple configurations and team ids,
    functionality of the user and admin forms, and team id requests with caching.

    Unit tests pass, with full coverage except icon_static_urls().

    Manually tested adding integration configurations, setting the user API token,
    form validation errors, and posting all message types to I Done This.