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_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_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)