{"action":"created","comment":{"url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/comments/80080685","id":80080685,"diff_hunk":"@@ -0,0 +1,81 @@\n+package org.sagebionetworks.bridge.models;\n+\n+import static org.junit.Assert.assertEquals;\n+\n+import java.util.LinkedHashSet;\n+import java.util.Set;\n+\n+import org.joda.time.DateTime;\n+import org.joda.time.DateTimeZone;\n+import org.junit.Test;\n+\n+import org.sagebionetworks.bridge.TestConstants;\n+import org.sagebionetworks.bridge.TestUtils;\n+import org.sagebionetworks.bridge.json.BridgeObjectMapper;\n+import org.sagebionetworks.bridge.json.DateUtils;\n+import org.sagebionetworks.bridge.models.studies.StudyIdentifier;\n+import org.sagebionetworks.bridge.models.studies.StudyIdentifierImpl;\n+\n+import com.fasterxml.jackson.databind.JsonNode;\n+import com.google.common.collect.Sets;\n+\n+import nl.jqno.equalsverifier.EqualsVerifier;\n+\n+public class RequestInfoTest {\n+\n+    private static final StudyIdentifier STUDY_ID = new StudyIdentifierImpl(\"test-study\");\n+    private static final String USER_ID = \"userId\";\n+    private static final ClientInfo CLIENT_INFO = ClientInfo.parseUserAgentString(\"app/20\");\n+    private static final String USER_AGENT_STRING = \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36\";\n+    private static final LinkedHashSet<String> LANGUAGES = TestUtils.newLinkedHashSet(\"en\", \"fr\");\n+    private static final DateTimeZone PST = DateTimeZone.forOffsetHours(-7);\n+    private static final DateTime ACTIVITIES_REQUESTED_ON = DateUtils.getCurrentDateTime();\n+    private static final DateTime SIGNED_IN_ON = ACTIVITIES_REQUESTED_ON.minusHours(4);","path":"test/org/sagebionetworks/bridge/models/RequestInfoTest.java","position":33,"original_position":33,"commit_id":"8af31bade828adc2ee242bc105647ddeafbd1a1b","original_commit_id":"8af31bade828adc2ee242bc105647ddeafbd1a1b","user":{"login":"alxdarksage","id":5589085,"avatar_url":"https://avatars.githubusercontent.com/u/5589085?v=3","gravatar_id":"","url":"https://api.github.com/users/alxdarksage","html_url":"https://github.com/alxdarksage","followers_url":"https://api.github.com/users/alxdarksage/followers","following_url":"https://api.github.com/users/alxdarksage/following{/other_user}","gists_url":"https://api.github.com/users/alxdarksage/gists{/gist_id}","starred_url":"https://api.github.com/users/alxdarksage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alxdarksage/subscriptions","organizations_url":"https://api.github.com/users/alxdarksage/orgs","repos_url":"https://api.github.com/users/alxdarksage/repos","events_url":"https://api.github.com/users/alxdarksage/events{/privacy}","received_events_url":"https://api.github.com/users/alxdarksage/received_events","type":"User","site_admin":false},"body":"I'll create some tests for these. This use of time zones is informational only (I'm assuming the researcher would be interested in the time in the user's local time, though that may not be true and we might eventually enforce UTC instead). \r\n\r\nIn JavaScript, the tools for manipulating dates are very poor and it isn't easy to show a timestamp in an alternate timezone, even if I have it. If we don't have it, it's okay to show the times in UTC and I can enforce this in case the server is in yet another time zone.","created_at":"2016-09-22T16:26:11Z","updated_at":"2016-09-22T16:26:11Z","html_url":"https://github.com/Sage-Bionetworks/BridgePF/pull/1258#discussion_r80080685","pull_request_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/1258","_links":{"self":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/comments/80080685"},"html":{"href":"https://github.com/Sage-Bionetworks/BridgePF/pull/1258#discussion_r80080685"},"pull_request":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/1258"}}},"pull_request":{"url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/1258","id":86078637,"html_url":"https://github.com/Sage-Bionetworks/BridgePF/pull/1258","diff_url":"https://github.com/Sage-Bionetworks/BridgePF/pull/1258.diff","patch_url":"https://github.com/Sage-Bionetworks/BridgePF/pull/1258.patch","issue_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/issues/1258","number":1258,"state":"open","locked":false,"title":"Save information about user's request on sign in and when retrieving activities.","user":{"login":"alxdarksage","id":5589085,"avatar_url":"https://avatars.githubusercontent.com/u/5589085?v=3","gravatar_id":"","url":"https://api.github.com/users/alxdarksage","html_url":"https://github.com/alxdarksage","followers_url":"https://api.github.com/users/alxdarksage/followers","following_url":"https://api.github.com/users/alxdarksage/following{/other_user}","gists_url":"https://api.github.com/users/alxdarksage/gists{/gist_id}","starred_url":"https://api.github.com/users/alxdarksage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alxdarksage/subscriptions","organizations_url":"https://api.github.com/users/alxdarksage/orgs","repos_url":"https://api.github.com/users/alxdarksage/repos","events_url":"https://api.github.com/users/alxdarksage/events{/privacy}","received_events_url":"https://api.github.com/users/alxdarksage/received_events","type":"User","site_admin":false},"body":"JIRA: https://sagebionetworks.jira.com/browse/BRIDGE-1421\r\n\r\nNOTE: this will fail until the following PR is merged:\r\nhttps://github.com/Sage-Bionetworks/bridge-base/pull/27\r\n(I accidentally merged the BridgeTestUtils update of the in memory Jedis implementation so that'll also fail until bridge-base is merged.)\r\n\r\nThis is saved in Redis at this point... although the information could be lost when we flush Redis, it's not particularly high value. It's useful when troubleshooting a user's issues and we can always ask them to sign out/sign in again to see what their device is sending.\r\n\r\nI can also use the information to show in the researcher UI which subpopulation(s) the user belongs to, and from the schedule plans, what activities they should be getting back from the server. This would also be helpful given the questions I sometimes receive about this.\r\n\r\nAnother follow-on TODO: there's a lot of static constants that duplicate the same information (language set, user group set, user id, etc.) between the tests, these could be moved to TestConstants. I only did USER_DATA_GROUPS in this commit.","created_at":"2016-09-21T00:17:21Z","updated_at":"2016-09-22T16:26:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4ee9588c8f1dbe2000fc6fa9d0e2b6d620b90183","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/1258/commits","review_comments_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/1258/comments","review_comment_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/issues/1258/comments","statuses_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/statuses/8af31bade828adc2ee242bc105647ddeafbd1a1b","head":{"label":"alxdarksage:capture-criteria","ref":"capture-criteria","sha":"8af31bade828adc2ee242bc105647ddeafbd1a1b","user":{"login":"alxdarksage","id":5589085,"avatar_url":"https://avatars.githubusercontent.com/u/5589085?v=3","gravatar_id":"","url":"https://api.github.com/users/alxdarksage","html_url":"https://github.com/alxdarksage","followers_url":"https://api.github.com/users/alxdarksage/followers","following_url":"https://api.github.com/users/alxdarksage/following{/other_user}","gists_url":"https://api.github.com/users/alxdarksage/gists{/gist_id}","starred_url":"https://api.github.com/users/alxdarksage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alxdarksage/subscriptions","organizations_url":"https://api.github.com/users/alxdarksage/orgs","repos_url":"https://api.github.com/users/alxdarksage/repos","events_url":"https://api.github.com/users/alxdarksage/events{/privacy}","received_events_url":"https://api.github.com/users/alxdarksage/received_events","type":"User","site_admin":false},"repo":{"id":45479946,"name":"BridgePF","full_name":"alxdarksage/BridgePF","owner":{"login":"alxdarksage","id":5589085,"avatar_url":"https://avatars.githubusercontent.com/u/5589085?v=3","gravatar_id":"","url":"https://api.github.com/users/alxdarksage","html_url":"https://github.com/alxdarksage","followers_url":"https://api.github.com/users/alxdarksage/followers","following_url":"https://api.github.com/users/alxdarksage/following{/other_user}","gists_url":"https://api.github.com/users/alxdarksage/gists{/gist_id}","starred_url":"https://api.github.com/users/alxdarksage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alxdarksage/subscriptions","organizations_url":"https://api.github.com/users/alxdarksage/orgs","repos_url":"https://api.github.com/users/alxdarksage/repos","events_url":"https://api.github.com/users/alxdarksage/events{/privacy}","received_events_url":"https://api.github.com/users/alxdarksage/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/alxdarksage/BridgePF","description":"Server software for Bridge-based mobile applications","fork":true,"url":"https://api.github.com/repos/alxdarksage/BridgePF","forks_url":"https://api.github.com/repos/alxdarksage/BridgePF/forks","keys_url":"https://api.github.com/repos/alxdarksage/BridgePF/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alxdarksage/BridgePF/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alxdarksage/BridgePF/teams","hooks_url":"https://api.github.com/repos/alxdarksage/BridgePF/hooks","issue_events_url":"https://api.github.com/repos/alxdarksage/BridgePF/issues/events{/number}","events_url":"https://api.github.com/repos/alxdarksage/BridgePF/events","assignees_url":"https://api.github.com/repos/alxdarksage/BridgePF/assignees{/user}","branches_url":"https://api.github.com/repos/alxdarksage/BridgePF/branches{/branch}","tags_url":"https://api.github.com/repos/alxdarksage/BridgePF/tags","blobs_url":"https://api.github.com/repos/alxdarksage/BridgePF/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alxdarksage/BridgePF/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alxdarksage/BridgePF/git/refs{/sha}","trees_url":"https://api.github.com/repos/alxdarksage/BridgePF/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alxdarksage/BridgePF/statuses/{sha}","languages_url":"https://api.github.com/repos/alxdarksage/BridgePF/languages","stargazers_url":"https://api.github.com/repos/alxdarksage/BridgePF/stargazers","contributors_url":"https://api.github.com/repos/alxdarksage/BridgePF/contributors","subscribers_url":"https://api.github.com/repos/alxdarksage/BridgePF/subscribers","subscription_url":"https://api.github.com/repos/alxdarksage/BridgePF/subscription","commits_url":"https://api.github.com/repos/alxdarksage/BridgePF/commits{/sha}","git_commits_url":"https://api.github.com/repos/alxdarksage/BridgePF/git/commits{/sha}","comments_url":"https://api.github.com/repos/alxdarksage/BridgePF/comments{/number}","issue_comment_url":"https://api.github.com/repos/alxdarksage/BridgePF/issues/comments{/number}","contents_url":"https://api.github.com/repos/alxdarksage/BridgePF/contents/{+path}","compare_url":"https://api.github.com/repos/alxdarksage/BridgePF/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alxdarksage/BridgePF/merges","archive_url":"https://api.github.com/repos/alxdarksage/BridgePF/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alxdarksage/BridgePF/downloads","issues_url":"https://api.github.com/repos/alxdarksage/BridgePF/issues{/number}","pulls_url":"https://api.github.com/repos/alxdarksage/BridgePF/pulls{/number}","milestones_url":"https://api.github.com/repos/alxdarksage/BridgePF/milestones{/number}","notifications_url":"https://api.github.com/repos/alxdarksage/BridgePF/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alxdarksage/BridgePF/labels{/name}","releases_url":"https://api.github.com/repos/alxdarksage/BridgePF/releases{/id}","deployments_url":"https://api.github.com/repos/alxdarksage/BridgePF/deployments","created_at":"2015-11-03T16:35:11Z","updated_at":"2016-01-26T18:47:13Z","pushed_at":"2016-09-22T16:17:37Z","git_url":"git://github.com/alxdarksage/BridgePF.git","ssh_url":"git@github.com:alxdarksage/BridgePF.git","clone_url":"https://github.com/alxdarksage/BridgePF.git","svn_url":"https://github.com/alxdarksage/BridgePF","homepage":"","size":75462,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"Sage-Bionetworks:develop","ref":"develop","sha":"b667e5c105f9dcfeda488f657d17e05c3446e4b3","user":{"login":"Sage-Bionetworks","id":1250897,"avatar_url":"https://avatars.githubusercontent.com/u/1250897?v=3","gravatar_id":"","url":"https://api.github.com/users/Sage-Bionetworks","html_url":"https://github.com/Sage-Bionetworks","followers_url":"https://api.github.com/users/Sage-Bionetworks/followers","following_url":"https://api.github.com/users/Sage-Bionetworks/following{/other_user}","gists_url":"https://api.github.com/users/Sage-Bionetworks/gists{/gist_id}","starred_url":"https://api.github.com/users/Sage-Bionetworks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sage-Bionetworks/subscriptions","organizations_url":"https://api.github.com/users/Sage-Bionetworks/orgs","repos_url":"https://api.github.com/users/Sage-Bionetworks/repos","events_url":"https://api.github.com/users/Sage-Bionetworks/events{/privacy}","received_events_url":"https://api.github.com/users/Sage-Bionetworks/received_events","type":"Organization","site_admin":false},"repo":{"id":18604783,"name":"BridgePF","full_name":"Sage-Bionetworks/BridgePF","owner":{"login":"Sage-Bionetworks","id":1250897,"avatar_url":"https://avatars.githubusercontent.com/u/1250897?v=3","gravatar_id":"","url":"https://api.github.com/users/Sage-Bionetworks","html_url":"https://github.com/Sage-Bionetworks","followers_url":"https://api.github.com/users/Sage-Bionetworks/followers","following_url":"https://api.github.com/users/Sage-Bionetworks/following{/other_user}","gists_url":"https://api.github.com/users/Sage-Bionetworks/gists{/gist_id}","starred_url":"https://api.github.com/users/Sage-Bionetworks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sage-Bionetworks/subscriptions","organizations_url":"https://api.github.com/users/Sage-Bionetworks/orgs","repos_url":"https://api.github.com/users/Sage-Bionetworks/repos","events_url":"https://api.github.com/users/Sage-Bionetworks/events{/privacy}","received_events_url":"https://api.github.com/users/Sage-Bionetworks/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Sage-Bionetworks/BridgePF","description":"Server software for Bridge-based mobile applications","fork":false,"url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF","forks_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/forks","keys_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/teams","hooks_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/hooks","issue_events_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/issues/events{/number}","events_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/events","assignees_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/assignees{/user}","branches_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/branches{/branch}","tags_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/tags","blobs_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/git/refs{/sha}","trees_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/statuses/{sha}","languages_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/languages","stargazers_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/stargazers","contributors_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/contributors","subscribers_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/subscribers","subscription_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/subscription","commits_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/commits{/sha}","git_commits_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/git/commits{/sha}","comments_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/comments{/number}","issue_comment_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/issues/comments{/number}","contents_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/contents/{+path}","compare_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/merges","archive_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/downloads","issues_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/issues{/number}","pulls_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls{/number}","milestones_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/milestones{/number}","notifications_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/labels{/name}","releases_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/releases{/id}","deployments_url":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/deployments","created_at":"2014-04-09T16:38:46Z","updated_at":"2016-05-02T21:48:35Z","pushed_at":"2016-09-22T16:18:59Z","git_url":"git://github.com/Sage-Bionetworks/BridgePF.git","ssh_url":"git@github.com:Sage-Bionetworks/BridgePF.git","clone_url":"https://github.com/Sage-Bionetworks/BridgePF.git","svn_url":"https://github.com/Sage-Bionetworks/BridgePF","homepage":"","size":76091,"stargazers_count":8,"watchers_count":8,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":21,"mirror_url":null,"open_issues_count":5,"forks":21,"open_issues":5,"watchers":8,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/1258"},"html":{"href":"https://github.com/Sage-Bionetworks/BridgePF/pull/1258"},"issue":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/issues/1258"},"comments":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/issues/1258/comments"},"review_comments":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/1258/comments"},"review_comment":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/pulls/1258/commits"},"statuses":{"href":"https://api.github.com/repos/Sage-Bionetworks/BridgePF/statuses/8af31bade828adc2ee242bc105647ddeafbd1a1b"}}}}
{"actor":{"display_login":"alxdarksage"}}