anchor init 
use anchor_lang::prelude::*;

declare_id!("7x9uj3Q8hAaH1CWaAPzykZPbLKiszNjLdzVPot1gtup6");

#[program]
pub mod storage_contract_anchor {
    use super::*;

    pub fn initialize(ctx: Context<Initialize>, name: String) -> Result<()> {
        msg!("Greetings from: {:?}", ctx.program_id);
        ctx.accounts.data_account.name = name;
        Ok(())
    }

    pub fn update(ctx: Context<Update>, name: String) -> Result<()> {
        ctx.accounts.data_account.name = name;
        Ok(())
    }
}

#[account]
pub struct NameAccount {
    pub name: String,
}

#[derive(Accounts)]
pub struct Initialize<'info> {
    #[account(init, payer = payer, space = 8 + 32)]
    pub data_account: Account<'info, NameAccount>,
    #[account(mut)]
    pub payer: Signer<'info>,
    pub system_program: Program<'info, System>,
}

#[derive(Accounts)]
pub struct Update<'info> {
    #[account(mut)]
    pub data_account: Account<'info, NameAccount>,
    #[account(mut)]
    pub payer: Signer<'info>,
}

import * as anchor from "@coral-xyz/anchor";
import { Program } from "@coral-xyz/anchor";
import { StorageContractAnchor } from "../target/types/storage_contract_anchor";
import { assert } from "chai";

describe("storage_contract_anchor", () => {
  // Configure the client to use the local cluster.
  anchor.setProvider(anchor.AnchorProvider.env());

  const program = anchor.workspace.storageContractAnchor as Program<StorageContractAnchor>;

  it("Is initialized!", async () => {
    const dataAccount = anchor.web3.Keypair.generate();
    const payer = anchor.web3.Keypair.generate();
    //airdrop
    const airdrop_txn = await anchor.getProvider().connection.requestAirdrop(payer.publicKey, 1000000000000000);
    await anchor.getProvider().connection.confirmTransaction(airdrop_txn);

    // Add your test here.
    const tx_init = await program.methods.initialize("Harkirat").accounts({
      dataAccount: dataAccount.publicKey,
      payer: payer.publicKey,
    }).signers([payer, dataAccount]).rpc();

    let dataAccountInfo = await program.account.nameAccount.fetch(dataAccount.publicKey);
    assert(dataAccountInfo.name, "Harkirat");

    await program.methods.update("Harkirat Singh").accounts({
      dataAccount: dataAccount.publicKey,
      payer: payer.publicKey,
    }).signers([payer]).rpc();

    dataAccountInfo = await program.account.nameAccount.fetch(dataAccount.publicKey);
    assert(dataAccountInfo.name, "Harkirat Singh");
  });
});