def test_hook_accept_revision_request_request_notify_owner_non_existing_sender( accept_revision_event, mocker): review_requests_collection = mongomock.MongoClient().db.collection mocker.patch('repository._get_review_requests_collection', return_value=review_requests_collection) user_collection = mongomock.MongoClient().db.collection user_collection.insert_one({ "_id": 5763345, "slack": { "user_id": "user1ID", "user_name": "user2", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 5763345, "user_name": "user2", "name": "User 2 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }) mocker.patch('repository._get_users_collection', return_value=user_collection) slack_response = {'ts': '111111', 'channel': 'faf3as'} mock_post = mocker.patch('requests.post', return_value=MockResponse( 200, json.dumps(slack_response))) ret = github_webhook.lambda_handler(accept_revision_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok' mock_post.assert_called_with( 'https://slack.com/api/chat.postMessage', json.dumps({ 'channel': 'user1ID', # pylint: disable=C0301 'text': 'user1 approved [testrepo#2] <https://github.com/user1/testrepo/pull/2|WIP>', "unfurl_links": False, "unfurl_media": False, "attachments": [] }), headers={ 'Authorization': f'Bearer asdfasdfae3fasfas', "Content-Type": "application/json" })
def test_hook_create_comment_request(create_comment_event, mocker): review_requests_collection = mongomock.MongoClient().db.collection mocker.patch('repository._get_review_requests_collection', return_value=review_requests_collection) user_collection = mongomock.MongoClient().db.collection user_collection.insert_one({ "_id": 3452345, "slack": { "user_id": "faf3as", "user_name": "user1", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 3452345, "user_name": "user1", "name": "User 1 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }) mocker.patch('repository._get_users_collection', return_value=user_collection) comment_collection = mongomock.MongoClient().db.collection mocker.patch('repository._get_comment_collection', return_value=comment_collection) slack_response = {'ts': '111111', 'channel': 'faf3as'} mock_post = mocker.patch('requests.post', return_value=MockResponse( 200, json.dumps(slack_response))) ret = github_webhook.lambda_handler(create_comment_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok' mock_post.assert_not_called() assert comment_collection.count_documents({}) == 1 cursor = comment_collection.find() assert cursor[0] == { '_id': '425445400:432885618', 'comment_id': 432885618, 'user_id': 5763345, 'pull_request': 425445400 }
def test_hook_issue_comment_by_bot_request(issue_bot_comment_event, mocker): review_requests_collection = mongomock.MongoClient().db.collection mocker.patch('repository._get_review_requests_collection', return_value=review_requests_collection) user_collection = mongomock.MongoClient().db.collection user_collection.insert_many([{ "_id": 1234, "slack": { "user_id": "user1ID", "user_name": "user1", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 1234, "user_name": "user1", "name": "User 1 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }]) mocker.patch('repository._get_users_collection', return_value=user_collection) comment_collection = mongomock.MongoClient().db.collection mocker.patch('repository._get_comment_collection', return_value=comment_collection) slack_response = {'ts': '111111', 'channel': 'faf3as'} mock_post = mocker.patch('requests.post', return_value=MockResponse( 200, json.dumps(slack_response))) ret = github_webhook.lambda_handler(issue_bot_comment_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok' assert comment_collection.count_documents({}) == 0 mock_post.assert_not_called()
def test_request_changes_revision_request(request_changes_event, mocker): review_requests_collection = mongomock.MongoClient().db.collection review_requests_collection.insert_one({ '_id': '425445400:3452345', 'ts': '111111', 'channel': 'faf3as', 'message': 'user2 requested your review on [testrepo#2]', 'user': 3452345, 'pull_request': 425445400 }) mocker.patch( 'repository._get_review_requests_collection', return_value=review_requests_collection) user_collection = mongomock.MongoClient().db.collection user_collection.insert_one({ "_id": 3452345, "slack": { "user_id": "faf3as", "user_name": "user1", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 3452345, "user_name": "user1", "name": "User 1 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }) mocker.patch( 'repository._get_users_collection', return_value=user_collection) slack_response = { 'ts': '111111', 'channel': 'faf3as' } mock_post = mocker.patch('requests.post', return_value=MockResponse( 200, json.dumps(slack_response))) ret = github_webhook.lambda_handler(request_changes_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok' mock_post.assert_called_with( 'https://slack.com/api/chat.update', json.dumps( { 'channel': 'faf3as', "ts": "111111", 'text': 'user2 requested your review on [testrepo#2]', "unfurl_links": False, "unfurl_media": False, }), headers={ 'Authorization': f'Bearer asdfasdfae3fasfas', "Content-Type": "application/json"})
def test_hook_non_existing_action_request(non_existing_event): ret = github_webhook.lambda_handler(non_existing_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok'
def test_hook_initial_request(initial_event): ret = github_webhook.lambda_handler(initial_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok'
def test_hook_issue_comment_request(issue_comment_event, mocker): review_requests_collection = mongomock.MongoClient().db.collection mocker.patch('repository._get_review_requests_collection', return_value=review_requests_collection) user_collection = mongomock.MongoClient().db.collection user_collection.insert_many([{ "_id": 1234, "slack": { "user_id": "user1ID", "user_name": "user1", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 1234, "user_name": "user1", "name": "User 1 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }, { "_id": 9876, "slack": { "user_id": "user2ID", "user_name": "user2", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 9876, "user_name": "user2", "name": "User 2 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }]) mocker.patch('repository._get_users_collection', return_value=user_collection) comment_collection = mongomock.MongoClient().db.collection mocker.patch('repository._get_comment_collection', return_value=comment_collection) slack_response = {'ts': '111111', 'channel': 'faf3as'} mock_post = mocker.patch('requests.post', return_value=MockResponse( 200, json.dumps(slack_response))) ret = github_webhook.lambda_handler(issue_comment_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok' assert comment_collection.count_documents({}) == 0 mock_post.assert_called_with( 'https://slack.com/api/chat.postMessage', json.dumps({ 'channel': 'user2ID', # pylint: disable=C0301 'text': '<@user1ID> commented on [testpull#9] <https://github.com/user1/testpull/pull/9#issuecomment-640189447|Update README2.md>', "unfurl_links": False, "unfurl_media": False, "attachments": [{ "color": "#355C7D", "text": "<@user1ID>: hello world 6" }] }), headers={ 'Authorization': f'Bearer asdfasdfae3fasfas', "Content-Type": "application/json" })
def test_hook_create_comment_request_with_repply_and_existing_repplier( repply_comment_event, mocker): review_requests_collection = mongomock.MongoClient().db.collection mocker.patch('repository._get_review_requests_collection', return_value=review_requests_collection) user_collection = mongomock.MongoClient().db.collection user_collection.insert_many([{ "_id": 123433, "slack": { "user_id": "user1ID", "user_name": "user1", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 123433, "user_name": "user1", "name": "User 1 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }, { "_id": 5763345, "slack": { "user_id": "user2ID", "user_name": "user2", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 5763345, "user_name": "user2", "name": "User 2 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }]) mocker.patch('repository._get_users_collection', return_value=user_collection) comment_collection = mongomock.MongoClient().db.collection comment_collection.insert_one({ '_id': '425445400:9282348923', 'comment_id': 9282348923, 'user_id': 123433, 'pull_request': 425445400 }) mocker.patch('repository._get_comment_collection', return_value=comment_collection) slack_response = {'ts': '111111', 'channel': 'faf3as'} mock_post = mocker.patch('requests.post', return_value=MockResponse( 200, json.dumps(slack_response))) ret = github_webhook.lambda_handler(repply_comment_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok' assert comment_collection.count_documents({}) == 2 cursor = comment_collection.find() assert cursor[1] == { '_id': '425445400:432885618', 'comment_id': 432885618, 'user_id': 5763345, 'pull_request': 425445400 } mock_post.assert_called_with( 'https://slack.com/api/chat.postMessage', json.dumps({ 'channel': 'user1ID', # pylint: disable=C0301 'text': '<@user2ID> repplied to you in [testrepo#2] <https://github.com/user1/testrepo/pull/2#xxx|WIP>', "unfurl_links": False, "unfurl_media": False, "attachments": [{ "color": "#355C7D", "text": "<@user2ID>: aas" }] }), headers={ 'Authorization': f'Bearer asdfasdfae3fasfas', "Content-Type": "application/json" })
def test_close_pr(close_event, mocker): review_requests_collection = mongomock.MongoClient().db.collection review_requests_collection.insert_many([{ '_id': '123412:3452345', 'ts': '111111', 'channel': 'chUser1', 'message': 'user5 requested your review on [testrepo#2]', 'user': 3452345, 'pull_request': 123412 }, { '_id': '123412:12345', 'ts': '22222', 'channel': 'chUser3', 'message': 'user5 requested your review on [testrepo#2]', 'user': 12345, 'pull_request': 123412 }, { '_id': '123412:412341234', 'ts': '22222', 'channel': 'chUser2', 'message': 'user5 requested your review on [testrepo#2]', 'user': 412341234, 'pull_request': 123412 }, { '_id': '52345234:235234523', 'ts': '22222', 'channel': 'chUser2', 'message': 'user5 requested your review on [testrepo#5]', 'user': 235234523, 'pull_request': 52345234 }]) mocker.patch('repository._get_review_requests_collection', return_value=review_requests_collection) user_collection = mongomock.MongoClient().db.collection user_collection.insert_many([{ "_id": 3452345, "slack": { "user_id": "user1id", "user_name": "user1", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 3452345, "user_name": "user1", "name": "User 1 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }, { "_id": 412341234, "slack": { "user_id": "user2id", "user_name": "user2", "response_url": "https://hooks.slack.com/commands/asdfasdf/asfasdf/qweqf", "team_domain": "test" }, "github": { "id": 412341234, "user_name": "user2", "name": "User 2 Name", "access_token": "ahtawtewerg", "refresh_token": "anshttsetges" } }]) mocker.patch('repository._get_users_collection', return_value=user_collection) comments_collection = mongomock.MongoClient().db.collection comments_collection.insert_many([{ '_id': '1234:123412', 'comment_id': 1234, 'user_id': 1234, 'pull_request': 123412 }, { '_id': '9876:123412', 'comment_id': 9876, 'user_id': 1234, 'pull_request': 123412 }, { '_id': '34563:1412', 'comment_id': 34563, 'user_id': 1234, 'pull_request': 1412 }]) mocker.patch('repository._get_comment_collection', return_value=comments_collection) slack_response = {'ts': '111111', 'channel': 'faf3as'} mock_post = mocker.patch('requests.post', return_value=MockResponse( 200, json.dumps(slack_response))) ret = github_webhook.lambda_handler(close_event, "") assert ret["statusCode"] == 200 assert ret["body"] == 'ok' call2 = call('https://slack.com/api/chat.update', json.dumps({ 'channel': 'chUser2', 'ts': '22222', 'text': '~user5 requested your review on [testrepo#2]~', "unfurl_links": False, "unfurl_media": False }), headers={ 'Authorization': f'Bearer asdfasdfae3fasfas', "Content-Type": "application/json" }) call1 = call('https://slack.com/api/chat.update', json.dumps({ 'channel': 'chUser1', 'ts': '111111', 'text': '~user5 requested your review on [testrepo#2]~', "unfurl_links": False, "unfurl_media": False }), headers={ 'Authorization': f'Bearer asdfasdfae3fasfas', "Content-Type": "application/json" }) assert mock_post.call_count == 2 mock_post.assert_has_calls([call1, call2]) assert review_requests_collection.count_documents({}) == 1 assert comments_collection.count_documents({}) == 1