{"action":"created","comment":{"url":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/comments/30090082","id":30090082,"diff_hunk":"@@ -257,15 +265,129 @@ describe \"API\", ->\n     describe \"Groups\", ->\n       group = undefined\n       before (done) ->\n-        request.post(baseURL + \"/groups\").send(\n-          name: \"TestGroup\"\n-          type: \"party\"\n-        ).end (res) ->\n-          expectCode res, 200\n-          group = res.body\n-          expect(group.members.length).to.be 1\n-          expect(group.leader).to.be user._id\n-          done()\n+       request.post(baseURL + \"/groups\").send(\n+         name: \"TestGroup\"\n+         type: \"party\"\n+       ).end (res) ->\n+         expectCode res, 200\n+         group = res.body\n+         expect(group.members.length).to.be 1\n+         expect(group.leader).to.be user._id\n+         done()\n+\n+      describe \"Guilds\", ->\n+\n+        before (done) ->\n+          User.findByIdAndUpdate user._id,\n+            $set:\n+              \"balance\": 4\n+            , (err, _user) ->\n+              done()\n+\n+        describe \"Private Guilds\", ->\n+          guild = undefined\n+          before (done) ->\n+            request.post(baseURL + \"/groups\").send(\n+              name: \"TestPrivateGroup\"\n+              type: \"guild\"\n+              privacy: \"private\"\n+            ).end (res) ->\n+              expectCode res, 200\n+              guild = res.body\n+              expect(guild.members.length).to.be 1\n+              expect(guild.leader).to.be user._id\n+              #Add members to guild\n+              async.waterfall [\n+                (cb) ->\n+                  registerManyUsers 15, cb\n+\n+                (_members, cb) ->\n+                  members = _members\n+\n+                  joinGuild = (member, callback) ->\n+                    request.post(baseURL + \"/groups/\" + guild._id + \"/join\")\n+                      .set(\"X-API-User\", member._id)\n+                      .set(\"X-API-Key\", member.apiToken)\n+                      .end ->\n+                        callback(null, null)\n+\n+                  async.map members, joinGuild, (err, results) -> cb()\n+\n+              ], done\n+\n+          it \"includes user in private group member list when user is a member\", (done) ->\n+            #Verfiy that when a user query's for a group they are in the group if they are a member\n+            request.get(baseURL + \"/groups/\" + guild._id)\n+            .send()\n+            .end (res) ->\n+              g = res.body\n+              userInGroup = _.find g.members, (member) -> return member._id == user._id\n+              expect(userInGroup).to.not.be undefined\n+              done()\n+\n+          it \"excludes user from viewing private group member list when user is not a member\", (done) ->\n+            #Remove user from group\n+            request.post(baseURL + \"/groups/\" + guild._id + \"/leave\").send(\n+            ).end (res) ->\n+              request.get(baseURL + \"/groups/\" + guild._id)\n+              .send()\n+              .end (res) ->\n+                expect res, 404\n+                done()\n+\n+        describe \"Public Guilds\", ->\n+          guild = undefined\n+          before (done) ->\n+            request.post(baseURL + \"/groups\").send(\n+              name: \"TestPublicGroup\"\n+              type: \"guild\"\n+              privacy: \"public\"\n+            ).end (res) ->\n+              expectCode res, 200\n+              guild = res.body\n+              expect(guild.members.length).to.be 1\n+              expect(guild.leader).to.be user._id\n+              #Add members to guild\n+              async.waterfall [\n+                (cb) ->\n+                  registerManyUsers 15, cb\n+\n+                (_members, cb) ->\n+                  members = _members\n+\n+                  joinGuild = (member, callback) ->\n+                    request.post(baseURL + \"/groups/\" + guild._id + \"/join\")\n+                      .set(\"X-API-User\", member._id)\n+                      .set(\"X-API-Key\", member.apiToken)\n+                      .end ->\n+                        callback(null, null)\n+\n+                  async.map members, joinGuild, (err, results) -> cb()\n+              ], done\n+\n+          it \"includes user in public group member list when user is a member\", (done) ->","path":"test/api.mocha.coffee","position":137,"original_position":137,"commit_id":"47121fa70daa72ddb9bd4979bbef69b42b190d3f","original_commit_id":"47121fa70daa72ddb9bd4979bbef69b42b190d3f","user":{"login":"crookedneighbor","id":2916945,"avatar_url":"https://avatars.githubusercontent.com/u/2916945?v=3","gravatar_id":"","url":"https://api.github.com/users/crookedneighbor","html_url":"https://github.com/crookedneighbor","followers_url":"https://api.github.com/users/crookedneighbor/followers","following_url":"https://api.github.com/users/crookedneighbor/following{/other_user}","gists_url":"https://api.github.com/users/crookedneighbor/gists{/gist_id}","starred_url":"https://api.github.com/users/crookedneighbor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/crookedneighbor/subscriptions","organizations_url":"https://api.github.com/users/crookedneighbor/orgs","repos_url":"https://api.github.com/users/crookedneighbor/repos","events_url":"https://api.github.com/users/crookedneighbor/events{/privacy}","received_events_url":"https://api.github.com/users/crookedneighbor/received_events","type":"User","site_admin":false},"body":"Intermittently getting this error on the test: \r\n\r\n```\r\n1) Groups Guilds Public Guilds includes user in public group member list when user is a member:\r\n     Uncaught TypeError: Cannot read property 'length' of undefined\r\n      at /Users/blade/workspace/habitrpg/habitrpg/test/api/groups.coffee:128:29\r\n      at Request.callback (/Users/blade/workspace/habitrpg/habitrpg/node_modules/superagent/lib/node/index.js:630:3)\r\n      at Request.<anonymous> (/Users/blade/workspace/habitrpg/habitrpg/node_modules/superagent/lib/node/index.js:131:10)\r\n      at Request.emit (events.js:107:17)\r\n      at IncomingMessage.<anonymous> (/Users/blade/workspace/habitrpg/habitrpg/node_modules/superagent/lib/node/index.js:773:12)\r\n      at IncomingMessage.emit (events.js:129:20)\r\n      at _stream_readable.js:908:16\r\n      at process._tickDomainCallback (node.js:381:11)\r\n```","created_at":"2015-05-11T22:44:38Z","updated_at":"2015-05-11T22:44:38Z","html_url":"https://github.com/HabitRPG/habitrpg/pull/4961#discussion_r30090082","pull_request_url":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/4961","_links":{"self":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/comments/30090082"},"html":{"href":"https://github.com/HabitRPG/habitrpg/pull/4961#discussion_r30090082"},"pull_request":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/4961"}}},"pull_request":{"url":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/4961","id":32541957,"html_url":"https://github.com/HabitRPG/habitrpg/pull/4961","diff_url":"https://github.com/HabitRPG/habitrpg/pull/4961.diff","patch_url":"https://github.com/HabitRPG/habitrpg/pull/4961.patch","issue_url":"https://api.github.com/repos/HabitRPG/habitrpg/issues/4961","number":4961,"state":"closed","locked":false,"title":"Added query to always include user when populating group members","user":{"login":"TheHollidayInn","id":1253400,"avatar_url":"https://avatars.githubusercontent.com/u/1253400?v=3","gravatar_id":"","url":"https://api.github.com/users/TheHollidayInn","html_url":"https://github.com/TheHollidayInn","followers_url":"https://api.github.com/users/TheHollidayInn/followers","following_url":"https://api.github.com/users/TheHollidayInn/following{/other_user}","gists_url":"https://api.github.com/users/TheHollidayInn/gists{/gist_id}","starred_url":"https://api.github.com/users/TheHollidayInn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TheHollidayInn/subscriptions","organizations_url":"https://api.github.com/users/TheHollidayInn/orgs","repos_url":"https://api.github.com/users/TheHollidayInn/repos","events_url":"https://api.github.com/users/TheHollidayInn/events{/privacy}","received_events_url":"https://api.github.com/users/TheHollidayInn/received_events","type":"User","site_admin":false},"body":"Sorry if I did this incorrectly, but I just reset the whole branch.\r\n\r\nThis connects to the following PRS: \r\nhttps://github.com/HabitRPG/habitrpg/pull/4908\r\nhttps://github.com/HabitRPG/habitrpg/pull/4954","created_at":"2015-04-02T19:24:17Z","updated_at":"2015-05-11T22:44:38Z","closed_at":"2015-05-07T22:52:13Z","merged_at":"2015-05-07T22:52:13Z","merge_commit_sha":"0285b1ba62efafdd995ae1efcc0d93a47320c74b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/4961/commits","review_comments_url":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/4961/comments","review_comment_url":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/comments{/number}","comments_url":"https://api.github.com/repos/HabitRPG/habitrpg/issues/4961/comments","statuses_url":"https://api.github.com/repos/HabitRPG/habitrpg/statuses/47121fa70daa72ddb9bd4979bbef69b42b190d3f","head":{"label":"TheHollidayInn:join-button-fix","ref":"join-button-fix","sha":"47121fa70daa72ddb9bd4979bbef69b42b190d3f","user":{"login":"TheHollidayInn","id":1253400,"avatar_url":"https://avatars.githubusercontent.com/u/1253400?v=3","gravatar_id":"","url":"https://api.github.com/users/TheHollidayInn","html_url":"https://github.com/TheHollidayInn","followers_url":"https://api.github.com/users/TheHollidayInn/followers","following_url":"https://api.github.com/users/TheHollidayInn/following{/other_user}","gists_url":"https://api.github.com/users/TheHollidayInn/gists{/gist_id}","starred_url":"https://api.github.com/users/TheHollidayInn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TheHollidayInn/subscriptions","organizations_url":"https://api.github.com/users/TheHollidayInn/orgs","repos_url":"https://api.github.com/users/TheHollidayInn/repos","events_url":"https://api.github.com/users/TheHollidayInn/events{/privacy}","received_events_url":"https://api.github.com/users/TheHollidayInn/received_events","type":"User","site_admin":false},"repo":{"id":31106714,"name":"habitrpg","full_name":"TheHollidayInn/habitrpg","owner":{"login":"TheHollidayInn","id":1253400,"avatar_url":"https://avatars.githubusercontent.com/u/1253400?v=3","gravatar_id":"","url":"https://api.github.com/users/TheHollidayInn","html_url":"https://github.com/TheHollidayInn","followers_url":"https://api.github.com/users/TheHollidayInn/followers","following_url":"https://api.github.com/users/TheHollidayInn/following{/other_user}","gists_url":"https://api.github.com/users/TheHollidayInn/gists{/gist_id}","starred_url":"https://api.github.com/users/TheHollidayInn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TheHollidayInn/subscriptions","organizations_url":"https://api.github.com/users/TheHollidayInn/orgs","repos_url":"https://api.github.com/users/TheHollidayInn/repos","events_url":"https://api.github.com/users/TheHollidayInn/events{/privacy}","received_events_url":"https://api.github.com/users/TheHollidayInn/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/TheHollidayInn/habitrpg","description":"A habit tracker app which treats your goals like a Role Playing Game.","fork":true,"url":"https://api.github.com/repos/TheHollidayInn/habitrpg","forks_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/forks","keys_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/keys{/key_id}","collaborators_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/teams","hooks_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/hooks","issue_events_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/issues/events{/number}","events_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/events","assignees_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/assignees{/user}","branches_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/branches{/branch}","tags_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/tags","blobs_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/git/refs{/sha}","trees_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/git/trees{/sha}","statuses_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/statuses/{sha}","languages_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/languages","stargazers_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/stargazers","contributors_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/contributors","subscribers_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/subscribers","subscription_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/subscription","commits_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/commits{/sha}","git_commits_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/git/commits{/sha}","comments_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/comments{/number}","issue_comment_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/issues/comments{/number}","contents_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/contents/{+path}","compare_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/compare/{base}...{head}","merges_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/merges","archive_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/downloads","issues_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/issues{/number}","pulls_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/pulls{/number}","milestones_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/milestones{/number}","notifications_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/labels{/name}","releases_url":"https://api.github.com/repos/TheHollidayInn/habitrpg/releases{/id}","created_at":"2015-02-21T02:07:13Z","updated_at":"2015-05-07T18:27:33Z","pushed_at":"2015-05-09T22:49:26Z","git_url":"git://github.com/TheHollidayInn/habitrpg.git","ssh_url":"git@github.com:TheHollidayInn/habitrpg.git","clone_url":"https://github.com/TheHollidayInn/habitrpg.git","svn_url":"https://github.com/TheHollidayInn/habitrpg","homepage":"habitrpg.com","size":174876,"stargazers_count":0,"watchers_count":0,"language":"HTML","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":"HabitRPG:develop","ref":"develop","sha":"1890aacaab5ef351344bf2f49d1569576937a5c9","user":{"login":"HabitRPG","id":3834775,"avatar_url":"https://avatars.githubusercontent.com/u/3834775?v=3","gravatar_id":"","url":"https://api.github.com/users/HabitRPG","html_url":"https://github.com/HabitRPG","followers_url":"https://api.github.com/users/HabitRPG/followers","following_url":"https://api.github.com/users/HabitRPG/following{/other_user}","gists_url":"https://api.github.com/users/HabitRPG/gists{/gist_id}","starred_url":"https://api.github.com/users/HabitRPG/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HabitRPG/subscriptions","organizations_url":"https://api.github.com/users/HabitRPG/orgs","repos_url":"https://api.github.com/users/HabitRPG/repos","events_url":"https://api.github.com/users/HabitRPG/events{/privacy}","received_events_url":"https://api.github.com/users/HabitRPG/received_events","type":"Organization","site_admin":false},"repo":{"id":4578898,"name":"habitrpg","full_name":"HabitRPG/habitrpg","owner":{"login":"HabitRPG","id":3834775,"avatar_url":"https://avatars.githubusercontent.com/u/3834775?v=3","gravatar_id":"","url":"https://api.github.com/users/HabitRPG","html_url":"https://github.com/HabitRPG","followers_url":"https://api.github.com/users/HabitRPG/followers","following_url":"https://api.github.com/users/HabitRPG/following{/other_user}","gists_url":"https://api.github.com/users/HabitRPG/gists{/gist_id}","starred_url":"https://api.github.com/users/HabitRPG/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HabitRPG/subscriptions","organizations_url":"https://api.github.com/users/HabitRPG/orgs","repos_url":"https://api.github.com/users/HabitRPG/repos","events_url":"https://api.github.com/users/HabitRPG/events{/privacy}","received_events_url":"https://api.github.com/users/HabitRPG/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/HabitRPG/habitrpg","description":"A habit tracker app which treats your goals like a Role Playing Game.","fork":false,"url":"https://api.github.com/repos/HabitRPG/habitrpg","forks_url":"https://api.github.com/repos/HabitRPG/habitrpg/forks","keys_url":"https://api.github.com/repos/HabitRPG/habitrpg/keys{/key_id}","collaborators_url":"https://api.github.com/repos/HabitRPG/habitrpg/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/HabitRPG/habitrpg/teams","hooks_url":"https://api.github.com/repos/HabitRPG/habitrpg/hooks","issue_events_url":"https://api.github.com/repos/HabitRPG/habitrpg/issues/events{/number}","events_url":"https://api.github.com/repos/HabitRPG/habitrpg/events","assignees_url":"https://api.github.com/repos/HabitRPG/habitrpg/assignees{/user}","branches_url":"https://api.github.com/repos/HabitRPG/habitrpg/branches{/branch}","tags_url":"https://api.github.com/repos/HabitRPG/habitrpg/tags","blobs_url":"https://api.github.com/repos/HabitRPG/habitrpg/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/HabitRPG/habitrpg/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/HabitRPG/habitrpg/git/refs{/sha}","trees_url":"https://api.github.com/repos/HabitRPG/habitrpg/git/trees{/sha}","statuses_url":"https://api.github.com/repos/HabitRPG/habitrpg/statuses/{sha}","languages_url":"https://api.github.com/repos/HabitRPG/habitrpg/languages","stargazers_url":"https://api.github.com/repos/HabitRPG/habitrpg/stargazers","contributors_url":"https://api.github.com/repos/HabitRPG/habitrpg/contributors","subscribers_url":"https://api.github.com/repos/HabitRPG/habitrpg/subscribers","subscription_url":"https://api.github.com/repos/HabitRPG/habitrpg/subscription","commits_url":"https://api.github.com/repos/HabitRPG/habitrpg/commits{/sha}","git_commits_url":"https://api.github.com/repos/HabitRPG/habitrpg/git/commits{/sha}","comments_url":"https://api.github.com/repos/HabitRPG/habitrpg/comments{/number}","issue_comment_url":"https://api.github.com/repos/HabitRPG/habitrpg/issues/comments{/number}","contents_url":"https://api.github.com/repos/HabitRPG/habitrpg/contents/{+path}","compare_url":"https://api.github.com/repos/HabitRPG/habitrpg/compare/{base}...{head}","merges_url":"https://api.github.com/repos/HabitRPG/habitrpg/merges","archive_url":"https://api.github.com/repos/HabitRPG/habitrpg/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/HabitRPG/habitrpg/downloads","issues_url":"https://api.github.com/repos/HabitRPG/habitrpg/issues{/number}","pulls_url":"https://api.github.com/repos/HabitRPG/habitrpg/pulls{/number}","milestones_url":"https://api.github.com/repos/HabitRPG/habitrpg/milestones{/number}","notifications_url":"https://api.github.com/repos/HabitRPG/habitrpg/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/HabitRPG/habitrpg/labels{/name}","releases_url":"https://api.github.com/repos/HabitRPG/habitrpg/releases{/id}","created_at":"2012-06-06T22:49:48Z","updated_at":"2015-05-11T22:35:01Z","pushed_at":"2015-05-11T22:30:00Z","git_url":"git://github.com/HabitRPG/habitrpg.git","ssh_url":"git@github.com:HabitRPG/habitrpg.git","clone_url":"https://github.com/HabitRPG/habitrpg.git","svn_url":"https://github.com/HabitRPG/habitrpg","homepage":"habitrpg.com","size":199495,"stargazers_count":2715,"watchers_count":2715,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1045,"mirror_url":null,"open_issues_count":704,"forks":1045,"open_issues":704,"watchers":2715,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/4961"},"html":{"href":"https://github.com/HabitRPG/habitrpg/pull/4961"},"issue":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/issues/4961"},"comments":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/issues/4961/comments"},"review_comments":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/4961/comments"},"review_comment":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/pulls/4961/commits"},"statuses":{"href":"https://api.github.com/repos/HabitRPG/habitrpg/statuses/47121fa70daa72ddb9bd4979bbef69b42b190d3f"}}}}