def test_token_init_keys(self):
        with XRDSSTTest() as app:
            with mock.patch(
                    'xrdsst.api.certificate_authorities_api.CertificateAuthoritiesApi.get_approved_certificate_authorities'
            ) as mock_get_cas:
                mock_get_cas.return_value.__enter__.return_value = TokenTestData.ca_list_response
                with mock.patch(
                        'xrdsst.api.security_servers_api.SecurityServersApi.get_security_servers',
                        return_value=TokenTestData.
                        security_servers_current_server_response):
                    token_controller = TokenController()
                    token_controller.app = app
                    token_controller.load_config = (lambda: self.ss_config)
                    token_controller.get_server_status = (
                        lambda x, y: StatusTestData.
                        server_status_essentials_complete)
                    token_controller.init_keys()

                    out, err = self.capsys.readouterr()
                    assert 2 == out.count("Created AUTHENTICATION CSR")
                    assert 2 == out.count("Created SIGNING CSR")

                    with self.capsys.disabled():
                        sys.stdout.write(out)
                        sys.stderr.write(err)
    def test_token_init_keys_without_token_logged_in(self):
        with XRDSSTTest() as app:
            with mock.patch(
                    'xrdsst.api.certificate_authorities_api.CertificateAuthoritiesApi.get_approved_certificate_authorities'
            ) as mock_get_cas:
                mock_get_cas.return_value.__enter__.return_value = TokenTestData.ca_list_response
                with mock.patch(
                        'xrdsst.api.security_servers_api.SecurityServersApi.get_security_servers',
                        return_value=TokenTestData.
                        security_servers_current_server_response):
                    with mock.patch(
                            'xrdsst.api.tokens_api.TokensApi.get_token',
                            return_value=TokenTestData.token_login_response):
                        with mock.patch(
                                'xrdsst.api.tokens_api.TokensApi.add_key_and_csr',
                                return_value=TokenTestData.
                                add_auth_key_with_csr_response):
                            token_controller = TokenController()
                            token_controller.app = app
                            token_controller.load_config = (
                                lambda: self.ss_config)
                            token_controller.get_server_status = (
                                lambda x, y: StatusTestData.
                                server_status_essentials_complete_token_logged_out(
                                ))
                            token_controller.init_keys()

                            out, err = self.capsys.readouterr()
                            assert 1 == out.count(
                                "SKIPPED 'ssX': has ['init', 'client add'] performed but also needs ['token login'] completion before continuing with requested ['token init-keys']"
                            )

                            with self.capsys.disabled():
                                sys.stdout.write(out)
                                sys.stderr.write(err)
 def test_token_list(self):
     with XRDSSTTest() as app:
         with mock.patch('xrdsst.api.tokens_api.TokensApi.get_tokens',
                         return_value=TokenTestData.token_list_response):
             token_controller = TokenController()
             token_controller.app = app
             token_controller.load_config = (lambda: self.ss_config)
             token_controller.list()
 def test_get_tokens_exception(self):
     with XRDSSTTest() as app:
         with mock.patch('xrdsst.api.tokens_api.TokensApi.get_tokens',
                         side_effect=ApiException):
             token_controller = TokenController()
             token_controller.app = app
             token_controller.load_config = (lambda: self.ss_config)
             for security_server in self.ss_config["security_server"]:
                 configuration = token_controller.create_api_config(
                     security_server, self.ss_config)
                 token_controller.remote_get_tokens(configuration)
                 self.assertRaises(ApiException)
 def test_get_tokens(self):
     with XRDSSTTest() as app:
         with mock.patch('xrdsst.api.tokens_api.TokensApi.get_tokens',
                         return_value=TokenTestData.token_list_response):
             token_controller = TokenController()
             token_controller.app = app
             token_controller.load_config = (lambda: self.ss_config)
             for security_server in self.ss_config["security_server"]:
                 configuration = token_controller.create_api_config(
                     security_server, self.ss_config)
                 response = token_controller.remote_get_tokens(
                     configuration)
                 assert response == TokenTestData.token_list_response
    def test_token_login_already_logged_in(self, tokens_api_mock):
        with XRDSSTTest() as app:
            token_controller = TokenController()
            token_controller.app = app
            token_controller.load_config = (lambda: self.ss_config)
            token_controller.get_server_status = (
                lambda x, y: StatusTestData.server_status_essentials_complete)
            token_controller.login()

            out, err = self.capsys.readouterr()
            assert 1 == out.count("Token 0 already logged in for 'ssX'")

            with self.capsys.disabled():
                sys.stdout.write(out)
                sys.stderr.write(err)
 def test_token_init_keys_without_cas_available(self):
     with XRDSSTTest() as app:
         with mock.patch(
                 'xrdsst.api.certificate_authorities_api.CertificateAuthoritiesApi.get_approved_certificate_authorities'
         ) as mock_get_cas:
             mock_get_cas.return_value.__enter__.return_value = []
             with mock.patch(
                     'xrdsst.api.security_servers_api.SecurityServersApi.get_security_servers',
                     return_value=TokenTestData.
                     security_servers_current_server_response):
                 token_controller = TokenController()
                 token_controller.app = app
                 token_controller.load_config = (lambda: self.ss_config)
                 token_controller.get_server_status = (
                     lambda x, y: StatusTestData.
                     server_status_essentials_complete)
                 self.assertRaises(IndexError,
                                   lambda: token_controller.init_keys())
    def test_token_login(self):
        with XRDSSTTest() as app:
            with mock.patch('xrdsst.api.tokens_api.TokensApi.login_token',
                            return_value=TokenTestData.token_login_response):
                token_controller = TokenController()
                token_controller.app = app
                token_controller.load_config = (lambda: self.ss_config)
                token_controller.get_server_status = (
                    lambda x, y: StatusTestData.
                    server_status_essentials_complete)
                token_controller.login()

                out, err = self.capsys.readouterr()
                assert 1 == out.count(
                    "Security server 'ssX' token 0 logged in.")

                with self.capsys.disabled():
                    sys.stdout.write(out)
                    sys.stderr.write(err)
 def step_token_init_keys(self):
     with XRDSSTTest() as app:
         token_controller = TokenController()
         token_controller.app = app
         token_controller.load_config = (lambda: self.config)
         token_controller.init_keys()
 def test_token_list_nonresolving_url(self):
     urllib3.util.retry.Retry.DEFAULT = urllib3.util.retry.Retry(0)
     token_controller = TokenController()
     token_controller.load_config = (lambda: self.ss_config)
     self.assertRaises(urllib3.exceptions.MaxRetryError,
                       lambda: token_controller.list())