add unit and e2e tests