예제 #1
0
파일: user.py 프로젝트: wjt2015/conan
def user_set(localdb_file, user, remote_name=None):
    localdb = LocalDB.create(localdb_file)

    if user.lower() == "none":
        user = None
    return update_localdb(localdb,
                          user,
                          token=None,
                          refresh_token=None,
                          remote=remote_name)
예제 #2
0
    def test_token_encryption_none(self):
        tmp_dir = temp_folder()
        db_file = os.path.join(tmp_dir, "dbfile")
        encryption_key = str(uuid.uuid4())
        localdb = LocalDB.create(db_file, encryption_key=encryption_key)

        localdb.store("pepe", "token", None, "myurl1")
        user, token, access_token = localdb.get_login("myurl1")
        self.assertEqual("pepe", user)
        self.assertEqual("token", token)
        self.assertEqual(None, access_token)
예제 #3
0
    def test_token_encryption_unicode(self):
        tmp_dir = temp_folder()
        db_file = os.path.join(tmp_dir, "dbfile")
        encryption_key = str(uuid.uuid4())
        localdb = LocalDB.create(db_file, encryption_key=encryption_key)

        token_input = b'espa\xc3\xb1a\xe2\x82\xac$'.decode(
            'utf-8')  # Only ASCII files in codebase
        localdb.store("pepe", token_input, token_input, "myurl1")
        user, token, access_token = localdb.get_login("myurl1")
        self.assertEqual("pepe", user)
        self.assertEqual(token_input, token)
        self.assertEqual(token_input, access_token)
        self.assertEqual("pepe", localdb.get_username("myurl1"))

        # Without the encryption key we get obfuscated values
        other_db = LocalDB.create(db_file)
        user, token, access_token = other_db.get_login("myurl1")
        self.assertEqual("pepe", user)
        self.assertNotEqual(token_input, token)
        self.assertNotEqual(token_input, access_token)
예제 #4
0
def migrate_localdb_refresh_token(cache, out):
    from conans.client.store.localdb import LocalDB
    from sqlite3 import OperationalError

    localdb = LocalDB.create(cache.localdb)
    with localdb._connect() as connection:
        try:
            statement = connection.cursor()
            statement.execute("ALTER TABLE users_remotes ADD refresh_token TEXT;")
        except OperationalError:
            # This likely means the column is already there (fresh created table)
            # In the worst scenario the user will be requested to remove the file by hand
            pass
예제 #5
0
파일: user.py 프로젝트: yfxu1990/conan
def users_list(localdb_file, remotes):
    if not remotes:
        raise ConanException("No remotes defined")

    localdb = LocalDB.create(localdb_file)
    remotes_info = []
    for remote in remotes:
        user_info = {}
        user, token = localdb.get_login(remote.url)
        user_info["name"] = remote.name
        user_info["user_name"] = user
        user_info["authenticated"] = True if token else False
        remotes_info.append(user_info)
    return remotes_info
예제 #6
0
    def localdb_test(self):
        tmp_dir = temp_folder()
        db_file = os.path.join(tmp_dir, "dbfile")
        localdb = LocalDB.create(db_file)

        # Test write and read login
        user, token = localdb.get_login("myurl1")
        self.assertIsNone(user)
        self.assertIsNone(token)

        localdb.set_login(("pepe", "token"), "myurl1")
        user, token = localdb.get_login("myurl1")
        self.assertEqual("pepe", user)
        self.assertEqual("token", token)
        self.assertEqual("pepe", localdb.get_username("myurl1"))
예제 #7
0
 def test_command_user_with_password(self):
     """ Checks the -p option, that obtains a token from the password.
     Useful for integrations as travis, that interactive password is not
     possible
     """
     test_server = TestServer()
     servers = {"default": test_server}
     client = TestClient(servers=servers, users={"default": [("lasote", "mypass")]})
     client.run('user dummy -p ping_pong2', assert_error=True)
     self.assertIn("ERROR: Wrong user or password", client.out)
     client.run('user lasote -p mypass')
     self.assertNotIn("ERROR: Wrong user or password", client.out)
     self.assertIn("Changed user of remote 'default' from 'None' (anonymous) to 'lasote'",
                   client.out)
     client.run('user none')
     self.assertIn("Changed user of remote 'default' from 'lasote' to 'None' (anonymous)",
                   client.out)
     localdb = LocalDB.create(client.cache.localdb)
     self.assertEqual((None, None, None), localdb.get_login(test_server.fake_url))
     client.run('user')
     self.assertIn("Current user of remote 'default' set to: 'None' (anonymous)", client.out)
예제 #8
0
    def init_dynamic_vars(self, user_io=None):
        # Migration system
        output = TestBufferConanOutput()
        self.user_io = user_io or MockedUserIO(self.users, out=output)
        self.cache = ClientCache(self.base_folder, output)

        # Migration system
        migrator = ClientMigrator(self.cache, Version(__version__), output)
        migrator.migrate()

        http_requester = self._get_http_requester()
        config = self.cache.config
        if self.conan_runner:
            self.runner = self.conan_runner
        else:
            self.runner = ConanRunner(config.print_commands_to_output,
                                      config.generate_run_log_file,
                                      config.log_run_to_output,
                                      output=output)

        self.requester = ConanRequester(config, http_requester)
        self.hook_manager = HookManager(self.cache.hooks_path, config.hooks,
                                        self.user_io.out)

        put_headers = self.cache.read_put_headers()
        self.rest_api_client = RestApiClient(
            self.user_io.out,
            self.requester,
            revisions_enabled=config.revisions_enabled,
            put_headers=put_headers)
        # To store user and token
        self.localdb = LocalDB.create(self.cache.localdb)
        # Wraps RestApiClient to add authentication support (same interface)
        auth_manager = ConanApiAuthManager(self.rest_api_client, self.user_io,
                                           self.localdb)
        # Handle remote connections
        self.remote_manager = RemoteManager(self.cache, auth_manager,
                                            self.user_io.out,
                                            self.hook_manager)
        return output, self.requester
예제 #9
0
    def test_with_remote_no_connect(self):
        test_server = TestServer()
        client = TestClient(servers={"default": test_server})
        client.run('user')
        self.assertIn("Current user of remote 'default' set to: 'None' (anonymous)", client.out)

        client.run('user john')
        self.assertIn("Changed user of remote 'default' from 'None' (anonymous) to 'john'",
                      client.out)
        localdb = LocalDB.create(client.cache.localdb)
        self.assertEqual(('john', None, None), localdb.get_login(test_server.fake_url))

        client.run('user will')
        self.assertIn("Changed user of remote 'default' from 'john' to 'will'", client.out)
        self.assertEqual(('will', None, None), localdb.get_login(test_server.fake_url))

        client.run('user None')
        self.assertIn("Changed user of remote 'default' from 'will' to 'None' (anonymous)",
                      client.out)
        self.assertEqual((None, None, None), localdb.get_login(test_server.fake_url))

        client.run('user')
        self.assertIn("Current user of remote 'default' set to: 'None' (anonymous)", client.out)
예제 #10
0
파일: cache.py 프로젝트: geekSlony/conan
 def localdb(self):
     localdb_filename = os.path.join(self.cache_folder, LOCALDB)
     return LocalDB.create(localdb_filename)
예제 #11
0
파일: cache.py 프로젝트: angeek/conan
 def localdb(self):
     localdb_filename = os.path.join(self.cache_folder, LOCALDB)
     encryption_key = os.getenv('CONAN_LOGIN_ENCRYPTION_KEY', None)
     return LocalDB.create(localdb_filename, encryption_key=encryption_key)
예제 #12
0
파일: user.py 프로젝트: yfxu1990/conan
def users_clean(localdb_file):
    LocalDB.create(localdb_file, clean=True)
예제 #13
0
파일: user.py 프로젝트: yfxu1990/conan
def token_present(localdb_file, remote, user):
    localdb = LocalDB.create(localdb_file)
    current_user, token = localdb.get_login(remote.url)
    return token is not None and (user is None or user == current_user)