Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save yatender-oktalk/c598c6ee1b31fc1e79504fe173f491ec to your computer and use it in GitHub Desktop.
Save yatender-oktalk/c598c6ee1b31fc1e79504fe173f491ec to your computer and use it in GitHub Desktop.
defmodule ExChain.BlockchainTest do
...
test "when we temper data in existing chain", %{
blockchain: blockchain
} do
blockchain =
blockchain
|> Blockchain.add_block("blockchain-data-block-1")
|> Blockchain.add_block("blockchain-data-block-2")
|> Blockchain.add_block("blockchain-data-block-3")
# validate if blockchain is valid
assert Blockchain.valid_chain?(blockchain)
# temper the blockchain, assume at location 2
index = 2
tempered_block = put_in(Enum.at(blockchain.chain, index).data, "tempered_data")
blockchain = %Blockchain{chain: List.replace_at(blockchain.chain, index, tempered_block)}
# should invalidate the blockchain
refute Blockchain.valid_chain?(blockchain)
end
test "when we temper hash in existing chain", %{
blockchain: blockchain
} do
blockchain =
blockchain
|> Blockchain.add_block("blockchain-data-block-1")
|> Blockchain.add_block("blockchain-data-block-2")
|> Blockchain.add_block("blockchain-data-block-3")
# validate if blockchain is valid
assert Blockchain.valid_chain?(blockchain)
# temper the blockchain, assume at location 2
index = 2
tempered_block = put_in(Enum.at(blockchain.chain, index).hash, "tempered_hash")
blockchain = %Blockchain{chain: List.replace_at(blockchain.chain, index, tempered_block)}
# should invalidate the blockchain
refute Blockchain.valid_chain?(blockchain)
end
....
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment