예제 #1
0
def test_find_app_model():
    expected = models.SamlApplication
    actual = find_app_model('SAML_1_1', 'office365')
    assert expected == actual

    expected = models.SwaApplication
    actual = find_app_model(None, 'template_swa')
    assert expected == actual

    expected = models.Application
    actual = find_app_model(None, 'unknown_application')
    assert expected == actual
예제 #2
0
    async def list_assigned_applications_for_group(self,
                                                   groupId,
                                                   query_params={},
                                                   keep_empty_params=False):
        """
        Enumerates all applications that are assigned to a grou
        p.
        Args:
            group_id {str}
            query_params {dict}: Map of query parameters for request
            [query_params.after] {str}
            [query_params.limit] {str}
        Returns:
            list: Collection of Application instances.
        """
        http_method = "get".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/groups/{groupId}/apps
            """)
        if query_params:
            encoded_query_params = urlencode(query_params)
            api_url += f"/?{encoded_query_params}"

        body = {}
        headers = {}
        form = {}

        request, error = await self._request_executor.create_request(
            http_method,
            api_url,
            body,
            headers,
            form,
            keep_empty_params=keep_empty_params)

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Application)

        if error:
            return (None, response, error)

        try:
            result = []
            for item in response.get_body():
                result.append(
                    find_app_model(item["signOnMode"], item["name"])(
                        self.form_response_body(item)))
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
    async def list_applications(
            self, query_params={}
    ):
        """
        Enumerates apps added to your organization with paginat
        ion. A subset of apps can be returned that match a supp
        orted filter expression or query.
        Args:
            query_params {dict}: Map of query parameters for request
            [query_params.q] {str}
            [query_params.after] {str}
            [query_params.limit] {str}
            [query_params.filter] {str}
            [query_params.expand] {str}
            [query_params.includeNonDeleted] {str}
        Returns:
            list: Collection of Application instances.
        """
        http_method = "get".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/apps
            """)
        if query_params:
            encoded_query_params = urlencode(query_params)
            api_url += f"/?{encoded_query_params}"

        body = {}
        headers = {}

        request, error = await self._request_executor.create_request(
            http_method, api_url, body, headers
        )

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Application)

        if error:
            return (None, response, error)

        try:
            result = []
            for item in response.get_body():
                result.append(
                    find_app_model(item["signOnMode"], item["name"])(
                        self.form_response_body(item)
                        )
                    )
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
예제 #4
0
    async def create_application(
            self, application, query_params={}
    ):
        """
        Adds a new application to your Okta organization.
        Args:
            {application}
            query_params {dict}: Map of query parameters for request
            [query_params.activate] {str}
        Returns:
            Application
        """
        http_method = "post".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/apps
            """)
        if query_params:
            encoded_query_params = urlencode(query_params)
            api_url += f"/?{encoded_query_params}"

        if isinstance(application, dict):
            body = application
        else:
            body = application.as_dict()
        headers = {
            "Accept": "application/json",
            "Content-Type": "application/json"
        }

        request, error = await self._request_executor.create_request(
            http_method, api_url, body, headers
        )

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Application)

        if error:
            return (None, response, error)

        try:
            body = response.get_body()
            result = find_app_model(body["signOnMode"], body["name"])(
                self.form_response_body(body)
            )
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
예제 #5
0
    async def update_application(
            self, appId, application
    ):
        """
        Updates an application in your organization.
        Args:
            app_id {str}
            {application}
        Returns:
            Application
        """
        http_method = "put".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/apps/{appId}
            """)

        if isinstance(application, dict):
            body = application
        else:
            body = application.as_dict()
        headers = {
            "Accept": "application/json",
            "Content-Type": "application/json"
        }

        request, error = await self._request_executor.create_request(
            http_method, api_url, body, headers
        )

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Application)

        if error:
            return (None, response, error)

        try:
            body = response.get_body()
            result = find_app_model(body["signOnMode"], body["name"])(
                self.form_response_body(body)
            )
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
예제 #6
0
    async def get_application(
            self, appId, query_params={}
    ):
        """
        Fetches an application from your Okta organization by `
        id`.
        Args:
            app_id {str}
            query_params {dict}: Map of query parameters for request
            [query_params.expand] {str}
        Returns:
            Application
        """
        http_method = "get".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/apps/{appId}
            """)
        if query_params:
            encoded_query_params = urlencode(query_params)
            api_url += f"/?{encoded_query_params}"

        body = {}
        headers = {}

        request, error = await self._request_executor.create_request(
            http_method, api_url, body, headers
        )

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Application)

        if error:
            return (None, response, error)

        try:
            body = response.get_body()
            result = find_app_model(body["signOnMode"], body["name"])(
                self.form_response_body(body)
            )
        except Exception as error:
            return (None, response, error)
        return (result, response, None)