def test_invite_members(self, mock_invoke_lambda):
        mock_invoke_lambda.return_value = None
        test_org_uuid = uuid4().hex
        owner_username = "******"
        org_repo.add_organization(
            DomainOrganization(test_org_uuid, "org_id", "org_dummy",
                               "ORGANIZATION", ORIGIN, "description",
                               "short_description", "https://test.io",
                               ORG_CONTACTS, {}, "ipfs_hash", "123456879", [],
                               [], [], []), owner_username,
            OrganizationStatus.PUBLISHED.value)

        new_org_members = [{
            "username": "******"
        }, {
            "username": "******"
        }, {
            "username": "******"
        }]
        OrganizationPublisherService(
            test_org_uuid, owner_username).invite_members(new_org_members)
        invited_org_members = org_repo.get_org_member(
            org_uuid=test_org_uuid,
            status=OrganizationMemberStatus.PENDING.value)
        if len(invited_org_members) == 3:
            assert True
        else:
            assert False
 def test_submit_organization_for_approval_after_onboarding_approved(self, mock_boto, mock_ipfs):
     username = "******"
     test_org_uuid = uuid4().hex
     test_org_id = "org_id"
     username = "******"
     payload = {
         "org_id": test_org_id, "org_uuid": test_org_uuid, "org_name": "test_org", "org_type": "organization",
         "metadata_ipfs_uri": "", "duns_no": "123456789", "origin": ORIGIN, "registration_id": "",
         "registration_type": "",
         "description": "this is description", "short_description": "this is short description",
         "url": "https://dummy.dummy", "contacts": "",
         "assets": {"hero_image": {"url": "", "ipfs_hash": ""}},
         "org_address": ORG_ADDRESS, "groups": json.loads(ORG_GROUPS),
         "state": {}
     }
     organization = OrganizationFactory.org_domain_entity_from_payload(payload)
     org_repo.add_organization(organization, username, OrganizationStatus.ONBOARDING_APPROVED.value)
     OrganizationPublisherService(test_org_uuid, username) \
         .update_organization(payload, OrganizationActions.SUBMIT.value)
     org_db_model = org_repo.session.query(Organization).first()
     if org_db_model is None:
         assert False
     else:
         if org_db_model.org_state[0].state == OrganizationStatus.ONBOARDING_APPROVED.value:
             assert True
         else:
             assert False
    def test_get_member(self, mock_invoke_lambda):
        test_org_uuid = uuid4().hex
        owner_username = "******"
        org_repo.add_organization(
            DomainOrganization(test_org_uuid, "org_id", "org_dummy",
                               "ORGANIZATION", ORIGIN, "description",
                               "short_description", "https://test.io",
                               ORG_CONTACTS, {}, "ipfs_hash", "123456879", [],
                               [], [], []), owner_username,
            OrganizationStatus.PUBLISHED.value)

        members = OrganizationPublisherService(
            test_org_uuid, owner_username).get_member(owner_username)

        if isinstance(members, list) and len(members) == 1:
            members[0].pop("invited_on")
            members[0].pop("updated_on")
            self.assertDictEqual(
                members[0], {
                    'username': owner_username,
                    'address': "",
                    'status': 'ACCEPTED',
                    'role': 'OWNER'
                })
        else:
            assert False
Beispiel #4
0
 def test_edit_organization_after_change_requested(self, mock_invoke_lambda,
                                                   mock_boto, mock_ipfs):
     username = "******"
     test_org_uuid = uuid4().hex
     test_org_id = "org_id"
     groups = OrganizationFactory.group_domain_entity_from_group_list_payload(
         json.loads(ORG_GROUPS))
     org_repo.add_organization(
         DomainOrganization(test_org_uuid, test_org_id, "org_dummy",
                            OrganizationType.INDIVIDUAL.value, ORIGIN, "",
                            "", "", [], {}, "", "", groups, [], [], []),
         username, OrganizationStatus.CHANGE_REQUESTED.value)
     payload = json.loads(ORG_PAYLOAD_MODEL)
     payload["org_uuid"] = test_org_uuid
     payload["org_id"] = test_org_id
     OrganizationPublisherService(test_org_uuid, username) \
         .update_organization(payload, OrganizationActions.DRAFT.value)
     org_db_model = org_repo.session.query(Organization).first()
     if org_db_model is None:
         assert False
     organization = OrganizationFactory.org_domain_entity_from_repo_model(
         org_db_model)
     org_dict = organization.to_response()
     org_dict["state"] = {}
     org_dict["groups"] = []
     org_dict["assets"]["hero_image"]["url"] = ""
     expected_organization = json.loads(ORG_RESPONSE_MODEL)
     expected_organization["org_id"] = test_org_id
     expected_organization["groups"] = []
     expected_organization["org_uuid"] = test_org_uuid
     self.assertDictEqual.__self__.maxDiff = None
     self.assertDictEqual(expected_organization, org_dict)
Beispiel #5
0
 def test_org_verification_individual(self, mock_boto_utils,
                                      mock_ipfs_utils):
     username = "******"
     for count in range(0, 3):
         org_id = uuid4().hex
         org_repo.add_organization(
             DomainOrganization(org_id, org_id, f"org_{org_id}",
                                OrganizationType.INDIVIDUAL.value, ORIGIN,
                                "", "", "", [], {}, "", "", [], [], [], []),
             username, OrganizationStatus.ONBOARDING.value)
     for count in range(0, 3):
         org_id = uuid4().hex
         org_repo.add_organization(
             DomainOrganization(org_id, org_id, f"org_{org_id}",
                                OrganizationType.INDIVIDUAL.value, ORIGIN,
                                "", "", "", [], {}, "", "", [], [], [], []),
             username, OrganizationStatus.APPROVED.value)
     OrganizationPublisherService(None, None).update_verification(
         "INDIVIDUAL",
         verification_details={
             "updated_by": "TEST_CASES",
             "status": "APPROVED",
             "username": username
         })
     organization = org_repo.get_organizations(
         OrganizationStatus.ONBOARDING_APPROVED.value)
     self.assertEqual(len(organization), 3)
Beispiel #6
0
 def test_create_organization(self, mock_boto, mock_ipfs):
     username = "******"
     payload = {
         "org_id": "",
         "org_uuid": "",
         "org_name": "test_org",
         "org_type": "organization",
         "metadata_ipfs_uri": "",
         "duns_no": "123456789",
         "origin": ORIGIN,
         "description": "",
         "short_description": "",
         "url": "https://dummy.dummy",
         "contacts": "",
         "assets": {
             "hero_image": {
                 "url": "",
                 "ipfs_hash": ""
             }
         },
         "org_address": ORG_ADDRESS,
         "groups": json.loads(ORG_GROUPS),
         "state": {}
     }
     response = OrganizationPublisherService(
         None, username).create_organization(payload)
     org_db_model = org_repo.session.query(Organization).first()
     if org_db_model is not None:
         assert True
     else:
         assert False
Beispiel #7
0
def get_all_org(event, context):
    logger.info(event)
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    response = OrganizationPublisherService(None, username).get_all_org_for_user()
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
Beispiel #8
0
def update_org(event, context):
    payload = json.loads(event["body"])
    path_parameters = event["pathParameters"]
    required_keys = []
    action = event["queryStringParameters"].get("action", None)
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    org_uuid = path_parameters["org_uuid"]
    if not validate_dict(payload, required_keys):
        raise BadRequestException()
    org_service = OrganizationPublisherService(org_uuid, username)
    if action in [OrganizationActions.DRAFT.value, OrganizationActions.SUBMIT.value]:
        response = org_service.update_organization(payload, action)
    else:
        raise Exception("Invalid action")
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
 def test_org_publish_to_ipfs(self, mock_json_to_file_util, mock_test_network_publish, mock_ipfs_utils):
     test_org_id = uuid4().hex
     username = "******"
     org_repo.add_organization(
         DomainOrganization(test_org_id, "org_id", "org_dummy", "ORGANIZATION", ORIGIN, "", "",
                            "", [], {}, "", "", [], [], [], []),
         username, OrganizationStatus.APPROVED.value)
     response = OrganizationPublisherService(test_org_id, username).publish_org_to_ipfs()
     self.assertEqual(response["metadata_ipfs_uri"], "ipfs://Q12PWP")
Beispiel #10
0
 def get_list_of_org_pending_for_approval(self):
     list_of_org_pending_for_approval = OrganizationPublisherService(None, None) \
         .get_approval_pending_organizations(MAX_SERVICES_SLACK_LISTING)
     slack_blocks = self.generate_slack_blocks_for_org_listing_template(
         list_of_org_pending_for_approval)
     slack_payload = {"blocks": slack_blocks}
     response = requests.post(url=SLACK_APPROVAL_CHANNEL_URL,
                              data=json.dumps(slack_payload))
     logger.info(f"{response.status_code} | {response.text}")
    def test_register_member(self):
        test_org_uuid = uuid4().hex
        owner_username = "******"
        org_repo.add_organization(
            DomainOrganization(test_org_uuid, "org_id", "org_dummy",
                               "ORGANIZATION", ORIGIN, "description",
                               "short_description", "https://test.io",
                               ORG_CONTACTS, {}, "ipfs_hash", "123456879", [],
                               [], [], []), owner_username,
            OrganizationStatus.PUBLISHED.value)

        member_username = "******"
        member_invite_code = uuid4().hex
        org_repo.add_item(
            OrganizationMember(username=member_username,
                               org_uuid=test_org_uuid,
                               role=Role.MEMBER.value,
                               address="",
                               status=OrganizationMemberStatus.PENDING.value,
                               transaction_hash="0x123",
                               invite_code=member_invite_code,
                               invited_on=datetime.utcnow(),
                               updated_on=datetime.utcnow()))
        member_wallet_address = "0x962FD47b5afBc8D03025cE52155890667E58dEBA"
        self.assertRaises(
            Exception,
            OrganizationPublisherService(test_org_uuid,
                                         member_username).register_member,
            "1234", "0x9876")
        OrganizationPublisherService(test_org_uuid, member_username)\
            .register_member(member_invite_code, member_wallet_address)
        members = org_repo.session.query(OrganizationMember).filter(OrganizationMember.org_uuid == test_org_uuid)\
            .filter(OrganizationMember.username == member_username) \
            .all()
        if len(members) == 1:
            org_member = members[0]
            if org_member.status == OrganizationMemberStatus.ACCEPTED.value \
                    and org_member.address == member_wallet_address:
                assert True
            else:
                assert False
        else:
            assert False
Beispiel #12
0
def get_member(event, context):
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    path_parameters = event["pathParameters"]
    org_uuid = path_parameters["org_uuid"]
    member_username = path_parameters["username"]
    response = OrganizationPublisherService(org_uuid, username).get_member(member_username)
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
Beispiel #13
0
def org_verification(event, context):
    query_parameters = event["queryStringParameters"]
    if "verification_type" not in query_parameters:
        raise BadRequestException()
    verification_type = query_parameters["verification_type"]
    response = OrganizationPublisherService(None, None).update_verification(verification_type, query_parameters)
    return generate_lambda_response(
        StatusCode.CREATED,
        {"status": "success", "data": response, "error": {}}, cors_enabled=False
    )
Beispiel #14
0
def create_organization(event, context):
    payload = json.loads(event["body"])
    required_keys = []
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    if not validate_dict(payload, required_keys):
        raise BadRequestException()
    response = OrganizationPublisherService(None, username).create_organization(payload)
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
Beispiel #15
0
def verify_org_id(event, context):
    logger.info(event)
    query_parameters = event["queryStringParameters"]
    if "org_id" not in query_parameters:
        raise BadRequestException()
    org_id = query_parameters["org_id"]
    response = OrganizationPublisherService(None, None).get_org_id_availability_status(org_id)
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
Beispiel #16
0
def get_group_for_org(event, context):
    path_parameters = event["pathParameters"]
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    if "org_uuid" not in path_parameters:
        raise BadRequestException()
    org_uuid = path_parameters["org_uuid"]
    response = OrganizationPublisherService(org_uuid, username).get_groups_for_org()
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
Beispiel #17
0
def verify_code(event, context):
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    query_string_parameters = event["queryStringParameters"]
    if "invite_code" not in query_string_parameters:
        raise BadRequestException()
    invite_code = query_string_parameters["invite_code"]
    response = OrganizationPublisherService(None, username).verify_invite(invite_code)
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
def get_org_for_admin(event, context):
    logger.info(event)
    query_parameters = event["queryParameters"]
    response = OrganizationPublisherService(
        None, None).get_for_admin(query_parameters)
    return generate_lambda_response(StatusCode.OK, {
        "status": "success",
        "data": response,
        "error": {}
    },
                                    cors_enabled=True)
Beispiel #19
0
def save_transaction_hash_for_publish_org(event, context):
    payload = json.loads(event["body"])
    path_parameters = event["pathParameters"]
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    if "org_uuid" not in path_parameters:
        raise BadRequestException()
    org_uuid = path_parameters["org_uuid"]
    response = OrganizationPublisherService(org_uuid, username).save_transaction_hash_for_publish_org(payload)
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
Beispiel #20
0
def register_member(event, context):
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    payload = json.loads(event["body"])
    if "invite_code" not in payload and "wallet_address" not in payload:
        raise BadRequestException()
    invite_code = payload["invite_code"]
    wallet_address = payload["wallet_address"]
    response = OrganizationPublisherService(None, username).register_member(invite_code, wallet_address)
    return generate_lambda_response(
        StatusCode.CREATED,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
 def test_edit_organization_with_org_id(self, mock_boto, mock_ipfs):
     username = "******"
     test_org_uuid = uuid4().hex
     test_org_id = "org_id"
     groups = OrganizationFactory.group_domain_entity_from_group_list_payload(json.loads(ORG_GROUPS))
     org_repo.add_organization(
         DomainOrganization(test_org_uuid, test_org_id, "org_dummy", "ORGANIZATION", ORIGIN, "", "",
                            "", [], {}, "", "", groups, [], [], []),
         username, OrganizationStatus.PUBLISHED.value)
     payload = json.loads(ORG_PAYLOAD_MODEL)
     payload["org_uuid"] = test_org_uuid
     self.assertRaises(OperationNotAllowed, OrganizationPublisherService(test_org_uuid, username)
                       .update_organization, payload, OrganizationActions.DRAFT.value)
 def test_get_org_for_admin(self, mock_boto, mock_ipfs):
     test_org_uuid = uuid4().hex
     username = "******"
     org_repo.add_organization(
         DomainOrganization(test_org_uuid, "org_id", "org_dummy",
                            "ORGANIZATION", ORIGIN, "", "", "", [], {}, "",
                            "", [], [], [], []), username,
         OrganizationStatus.APPROVED.value)
     org = OrganizationPublisherService(None, None).get_for_admin(
         {"status": OrganizationStatus.APPROVED.value})
     if len(org) != 1:
         assert False
     assert True
Beispiel #23
0
def delete_members(event, context):
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    payload = json.loads(event["body"])
    path_parameters = event["pathParameters"]
    if "org_uuid" not in path_parameters or "members" not in payload:
        raise BadRequestException()
    org_uuid = path_parameters["org_uuid"]
    org_members = payload["members"]
    response = OrganizationPublisherService(org_uuid, username).delete_members(org_members)
    return generate_lambda_response(
        StatusCode.CREATED,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
    def test_org_verification_organization(self, mock_boto_utils, mock_ipfs_utils, mock_email):
        username = "******"
        org_id = "test_org_id"
        org_uuid = "test_org_uuid"
        org_repo.add_organization(DomainOrganization(org_uuid, org_id, f"org_{org_id}",
                                                     OrganizationType.ORGANIZATION.value, ORIGIN, "",
                                                     "", "", [], {}, "", "", [], [], [], []),
                                  username, OrganizationStatus.ONBOARDING.value)

        OrganizationPublisherService(None, None).update_verification(
            "DUNS", verification_details={"updated_by": "TEST_CASES", "comment": "approved",
                                          "status": "APPROVED", "org_uuid": org_uuid})
        organization = org_repo.get_org(OrganizationStatus.ONBOARDING_APPROVED.value)
        self.assertEqual(len(organization), 1)
Beispiel #25
0
def get_all_members(event, context):
    username = event["requestContext"]["authorizer"]["claims"]["email"]
    path_parameters = event["pathParameters"]
    query_parameters = event["queryStringParameters"]
    if "org_uuid" not in path_parameters:
        raise BadRequestException()
    org_uuid = path_parameters["org_uuid"]
    status = query_parameters.get("status", None)
    role = query_parameters.get("role", None)
    response = OrganizationPublisherService(org_uuid, username).get_all_member(status, role, query_parameters)
    return generate_lambda_response(
        StatusCode.OK,
        {"status": "success", "data": response, "error": {}}, cors_enabled=True
    )
Beispiel #26
0
    def test_publish_members(self):
        test_org_uuid = uuid4().hex
        owner_username = "******"
        org_repo.add_organization(
            DomainOrganization(
                test_org_uuid, "org_id", "org_dummy",
                "ORGANIZATION", ORIGIN, "description",
                "short_description", "https://test.io", ORG_CONTACTS, {}, "ipfs_hash", "123456879", [], [], [], []),
            owner_username, OrganizationStatus.PUBLISHED.value)

        new_org_members = [
            {
                "username": "******",
                "address": "0x123"
            },
            {
                "username": "******",
                "address": "0x234"
            },
            {
                "username": "******",
                "address": "0x345"
            }
        ]
        org_repo.add_all_items(
            [
                OrganizationMember(
                    username=member["username"],
                    org_uuid=test_org_uuid,
                    role=Role.MEMBER.value,
                    address=member["address"],
                    status=OrganizationMemberStatus.ACCEPTED.value,
                    transaction_hash="0x123",
                    invite_code=uuid4().hex,
                    invited_on=datetime.utcnow(),
                    updated_on=datetime.utcnow()
                ) for member in new_org_members
            ]
        )
        OrganizationPublisherService(test_org_uuid, owner_username).publish_members("0x123", new_org_members)
        org_members = org_repo.session.query(OrganizationMember).filter(OrganizationMember.org_uuid == test_org_uuid)\
            .filter(OrganizationMember.status == OrganizationMemberStatus.PUBLISH_IN_PROGRESS.value).all()

        if len(org_members) == 3:
            assert True
        else:
            assert False
 def test_notify_user_on_start_of_onboarding_process(self, mock_invoke_lambda):
     recipients = ["*****@*****.**"]
     org_publisher_service = OrganizationPublisherService(username=None, org_uuid=None)
     org_publisher_service.notify_user_on_start_of_onboarding_process(org_id="dummy", recipients=recipients)