package com.indieweb.indigenous;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;

import com.indieweb.indigenous.model.User;
import com.indieweb.indigenous.util.Accounts;

import static android.content.Context.MODE_PRIVATE;
import static com.indieweb.indigenous.indieauth.IndieAuthActivity.ACCOUNT_TYPE;
import static com.indieweb.indigenous.indieauth.IndieAuthActivity.TOKEN_TYPE;

class TestUtils {

    static void createAccount(Context context, boolean microsub) {
        String domain = "http://example.com";
        String accessToken = "awesome";

        AccountManager am = AccountManager.get(context);
        Account account = new Account(domain, ACCOUNT_TYPE);
        am.addAccountExplicitly(account, null, null);
        am.setAuthToken(account, TOKEN_TYPE, accessToken);
        am.setUserData(account, "micropub_endpoint", domain + "/micropub");
        am.setUserData(account, "authorization_endpoint", domain + "/auth");
        am.setUserData(account, "micropub_media_endpoint", domain + "/media");
        am.setUserData(account, "token_endpoint", domain + "/token");
        am.setUserData(account, "author_name", "Indigenous");

        // Set first account.
        SharedPreferences.Editor editor = context.getSharedPreferences("indigenous", MODE_PRIVATE).edit();
        editor.putString("account", domain);
        editor.apply();
        editor.commit();
    }

    static void removeAccount(Context context, Activity activity) {
        User user = new Accounts(context).getDefaultUser();
        AccountManager am = AccountManager.get(context);
        am.removeAccount(user.getAccount(), activity, null, null);

        SharedPreferences.Editor editor = context.getSharedPreferences("indigenous", MODE_PRIVATE).edit();
        editor.putString("account", "");
        editor.apply();
        editor.commit();
    }

}