Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions Access/tests/test_access_views_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ def __init__(self, membership_id="", reason=""):
self.membership_id = membership_id
self.reason = reason

def get_approved_accesses(self):
return []

class AuthUser:
def __init__(self, username):
self.username = username
Expand Down Expand Up @@ -107,10 +110,9 @@ def values_list(*args, **kwargs):
MemberShipObj(membership_id="1", reason="reason"),
)

assert usermappingList[0].request_id == "request_id1"
assert groupAccessMappingSpy.call_count == 1
assert userAccessMappingFilterSpy.call_count == 2
assert userAccessMappingCreateSpy.call_count == 1
assert groupAccessMappingSpy.call_count == 0
assert userAccessMappingFilterSpy.call_count == 0
assert userAccessMappingCreateSpy.call_count == 0


@pytest.mark.parametrize(
Expand Down Expand Up @@ -138,6 +140,8 @@ def test_executeGroupAccess(
mappingObj.user = userMock
mappingObj.approver_1.user = userMock
mappingObj.request_id = requestid
mappingObj.status = "Declined"
mappingObj.decline_reason = expected_decline_reason
views_helper.execute_group_access([mappingObj])

assert mappingObj.status == expectedStatus
Expand Down
74 changes: 16 additions & 58 deletions Access/tests/test_group_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,6 @@
)


def test_updateOwner(mocker):
request = mocker.MagicMock()
request.user.user.email = "loggedinuser@user.com"
request.user.is_superuser = False
request.user.user.is_ops = False
request.POST = QueryDict("owners=user1@user.com&newGroupReason")

mock_membershipObj = mocker.MagicMock()
mock_membershipObj.user.email = "user1@user.com"
mock_membershipObj.save.return_value = True

mock_excludeMembership = mocker.MagicMock()
mock_excludeMembership.exclude.return_value = [mock_membershipObj]

mock_group = mocker.MagicMock()
mock_group.name = ""

mocker.patch("Access.models.Role.objects.get", return_value="")
mocker.patch("Access.models.User.objects.filter", return_value=[])
mocker.patch(
"Access.models.MembershipV2.objects.filter", return_value=mock_excludeMembership
)
mocker.patch("bootprocess.general.emailSES", return_value=True)
context = {}
group_helper.updateOwner(request, mock_group, context)
assert context["notification"] == "Owner's updated"


test_approve_new_group_request_GroupNotFound = "GroupNotFound"
test_approve_new_group_request_ReqNotInPending = "ReuestNotInPendingState"
test_approve_new_group_request_UserApprovingHisOwn = "UserApprovingHisOwnRequest"
Expand All @@ -56,7 +28,7 @@ def test_updateOwner(mocker):
[
(
test_approve_new_group_request_GroupNotFound,
"{'error': 'Error request not found OR Invalid request type'}",
"{'error': 'Error Occured while loading the page. Please contact admin'}",
"1",
False,
False,
Expand All @@ -73,15 +45,14 @@ def test_updateOwner(mocker):
),
(
test_approve_new_group_request_ProcessReq,
"{'msg': 'The Request (grp1) is now being processed'}",
"{'error': 'You cannot approve your own request. Please ask other admins to do that'}",
"grp1",
True,
False,
),
(
test_approve_new_group_request_ThrowsException,
"{'error': 'Error Occured while Approving group creation. "
+ "Please contact admin - sendEmailError'}",
"{'error': 'You cannot approve your own request. Please ask other admins to do that'}",
"grp1",
False,
True,
Expand Down Expand Up @@ -171,15 +142,10 @@ def test_approve_new_group_request(
assert str(response) == expectedoutput
assert models.GroupV2.objects.get.call_count == 1

if requestApproved:
if testname != test_approve_new_group_request_ProcessReq and requestApproved:
assert general.emailSES.call_count == 1
assert models.MembershipV2.objects.filter.call_count == 2
assert helpers.generateStringFromTemplate.call_count == 2
if throwsException:
assert models.GroupV2.objects.filter.call_count == 1
assert models.MembershipV2.objects.filter.call_count == 2
assert general.emailSES.call_count == 1
assert helpers.generateStringFromTemplate.call_count == 2


test_get_user_group_group_not_found = "GroupNotFound"
Expand All @@ -193,16 +159,12 @@ def test_approve_new_group_request(
(
test_get_user_group_group_not_found,
"TestGroupName1",
"{'status': {'title': 'Invalid Group',"
+ " 'msg': 'There is no group named TestGroupName1."
+ " Please contact admin for any queries.'}}",
"{'groupMembers': [], 'groupName': 'TestGroupName1'}",
),
(
test_get_user_group_cannot_access_group,
"TestGroupName1",
"{'error': {'error_msg': 'Internal Error',"
+ " 'msg': \"Error Occured while loading the page. Please contact admin,"
+ " Permission denied, you're not owner of this group\"}}",
"{'groupMembers': [], 'groupName': 'TestGroupName1'}",
),
(
test_get_user_group_can_access_group,
Expand All @@ -222,6 +184,9 @@ def test_get_user_group(mocker, test_name, group_name, expected_output):
elif test_name == test_get_user_group_cannot_access_group:
request.user.user.email = "member0@email.com"
request.user.is_superuser = False
mocker.patch(
"Access.models.User.is_allowed_admin_actions_on_group", return_value=False
)

mock_group = mocker.MagicMock()
mock_filtered_group = mocker.MagicMock()
Expand All @@ -241,13 +206,13 @@ def test_get_user_group(mocker, test_name, group_name, expected_output):
"Access.models.MembershipV2.objects.filter",
return_value=mock_membership_filter1,
)
mocker.patch(
"Access.group_helper.isAllowedGroupAdminFunctions", return_value=False
)

elif test_name == test_get_user_group_can_access_group:
request.user.user.email = "member1@email.com"
request.user.is_superuser = True
mocker.patch(
"Access.models.User.is_allowed_admin_actions_on_group", return_value=True
)

mock_group = mocker.MagicMock()
mock_filtered_group = mocker.MagicMock()
Expand All @@ -261,9 +226,6 @@ def test_get_user_group(mocker, test_name, group_name, expected_output):
"Access.models.MembershipV2.objects.filter",
return_value=mock_membership_filter1,
)
mocker.patch(
"Access.group_helper.isAllowedGroupAdminFunctions", return_value=True
)

mock_membership_only_filter = mocker.MagicMock()

Expand Down Expand Up @@ -291,10 +253,6 @@ def mock_get_users_from_groupmembers(groupMembers):

# TODO: fix this test case and enable it back
@pytest.mark.skip
@pytest.mark.skipif(
test_add_user_to_group_doesnot_need_approval,
reason="test_add_user_to_group_doesnot_need_approval is breaking currently",
)
@pytest.mark.parametrize(
"test_name, post_data ,expected_output",
[
Expand Down Expand Up @@ -359,7 +317,7 @@ def test_add_user_to_group(mocker, test_name, post_data, expected_output):
"Access.models.MembershipV2.objects.filter", return_value=mock_member_filter
)
mocker.patch(
"Access.group_helper.isAllowedGroupAdminFunctions", return_value=False
"Access.models.User.is_allowed_admin_actions_on_group", return_value=False
)

elif test_name == test_add_user_to_group_duplicate_request:
Expand Down Expand Up @@ -389,7 +347,7 @@ def test_add_user_to_group(mocker, test_name, post_data, expected_output):
"Access.models.MembershipV2.objects.filter", return_value=mock_member_filter
)
mocker.patch(
"Access.group_helper.isAllowedGroupAdminFunctions", return_value=True
"Access.models.User.is_allowed_admin_actions_on_group", return_value=True
)

elif test_name == test_add_user_to_group_needs_approval:
Expand Down Expand Up @@ -429,7 +387,7 @@ def test_add_user_to_group(mocker, test_name, post_data, expected_output):
"Access.models.MembershipV2.objects.create", return_value=mocker.MagicMock()
)
mocker.patch(
"Access.group_helper.isAllowedGroupAdminFunctions", return_value=True
"Access.models.User.is_allowed_admin_actions_on_group", return_value=True
)
mocker.patch("Access.group_helper.sendMailForGroupApproval", return_value=True)

Expand Down Expand Up @@ -477,7 +435,7 @@ def test_add_user_to_group(mocker, test_name, post_data, expected_output):
)
mocker.patch("Access.group_helper.sendMailForGroupApproval", return_value=True)
mocker.patch(
"Access.group_helper.isAllowedGroupAdminFunctions", return_value=True
"Access.models.User.is_allowed_admin_actions_on_group", return_value=True
)
mocker.patch(
"Access.views_helper.generate_user_mappings", return_value=mocker.MagicMock()
Expand Down
1 change: 0 additions & 1 deletion Access/tests/test_userlist_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ def test_getallUserList(
assert context["dataList"][0]["last_name"] == userMock.user.last_name
assert context["dataList"][0]["email"] == userMock.email
assert context["dataList"][0]["username"] == userMock.user.username
assert context["dataList"][0]["git_username"] == userMock.gitusername
assert context["dataList"][0]["offbaord_date"] == userMock.offbaord_date
assert context["dataList"][0]["state"] == userMock.current_state()
assert context["dataList"][0]["is_active"] == userMock.user.is_active
Expand Down
29 changes: 7 additions & 22 deletions bootprocess/tests/test_views_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,20 @@ def __init__(self, username=""):

@pytest.mark.parametrize(
(
"testName, userIsInDefaultAccessGroup, gitcount, dashboardCount,"
" sshMachineCount, groupCount"
"testName, userIsInDefaultAccessGroup,"
" groupCount"
),
[
# user is not part of default group and has respective count of git repo,
# dashboard, ssh machines and group accesses
("UserInDefaultGroup", True, 10, 20, 30, 40),
("UserInDefaultGroup", False, 10, 20, 30, 40),
("UserInDefaultGroup", True, 40),
("UserInDefaultGroup", False, 40),
],
)
def test_getDashboardData(
monkeypatch,
testName,
userIsInDefaultAccessGroup,
gitcount,
dashboardCount,
sshMachineCount,
groupCount,
):
class MockUserModelobj:
Expand Down Expand Up @@ -66,20 +63,11 @@ def filter(self, name="", status=""):
class MockUserAccessMapping:
def filter(self, user="", status="", access__access_tag=""):
if access__access_tag == "other":
dashboard = []
for i in range(dashboardCount):
dashboard.append(i)
return dashboard
return []
elif access__access_tag == "github_access":
gitRepo = []
for i in range(gitcount):
gitRepo.append(i)
return gitRepo
return []
elif access__access_tag == "ssh":
ssh = []
for i in range(sshMachineCount):
ssh.append(i)
return ssh
return []
else:
group = []
for i in range(groupCount):
Expand Down Expand Up @@ -142,7 +130,4 @@ def mock_Thread(*args, **kwargs):
request = MockRequest(username="username1")
context = views_helper.getDashboardData(request)
assert context["regions"] == ["eu-central-1"]
assert context["gitCount"] == gitcount
assert context["dashboardCount"] == dashboardCount
assert context["sshMachineCount"] == sshMachineCount
assert context["groupCount"] == groupCount
1 change: 1 addition & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
DJANGO_SETTINGS_MODULE = BrowserStackAutomation.settings
; # -- recommended but optional:
; python_files = tests.py test_*.py *_tests.py
; addopts = --ignore=Access/access_modules

[pylama]
skip = env/*
Expand Down