---
title: "Writing Policies for Testing Pulumi Programs"
description: "An example that applies PaC-based integration testing to provisioning an AWS EKS cluster."
url: "https://www.pulumi.com/dev/examples/testing-pac-ts/"
image: "https://www.pulumi.com/assets/og/dev/examples/testing-pac-ts.png"
---

# Writing Policies for Testing Pulumi Programs

An example that applies PaC-based integration testing to provisioning an AWS EKS cluster.

- Source on GitHub: https://github.com/pulumi/examples/tree/master/testing-pac-ts

## Get started with this example

This example lives in the [pulumi/examples](https://github.com/pulumi/examples/tree/master/testing-pac-ts) repo. Pull down just this directory to follow along:

```bash
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set testing-pac-ts
cd pulumi-examples/testing-pac-ts
```

An example of writing tests based on [Policy as Code ("CrossGuard")](https://www.pulumi.com/docs/guides/crossguard/) with both infrastructure definition and tests written in TypeScript.

## Prerequisites

1. [Ensure you have the latest Node.js and NPM](https://nodejs.org/en/download/).
2. [Install Pulumi](https://www.pulumi.com/docs/get-started/install/).
3. [Configure Pulumi to Use AWS](https://www.pulumi.com/docs/intro/cloud-providers/aws/setup/) (if your AWS CLI is configured, no further changes are required).


## Running the tests

The tests will run while Pulumi deploys the code, right before the deployment of each resource.

1.  Restore NPM dependencies:

    ```
    $ npm install
    ```

2. Create a new stack, which is an isolated deployment target for this example:

    ```bash
    $ pulumi stack init
    ```

3. Set the AWS region for this program:

    ```bash
    $ pulumi config set aws:region us-west-2
    ```

4.  Run `pulumi up` with `tests` folder as policy:

    ```
    $ pulumi up --policy-pack tests
    ```

    The preview displays that Policy Pack will run:

    ```
    Policy Packs run:
    Name                Version
    tests-pack (tests)  (local)
    ```

    Confirm the preview with `yes` and watch the deployment happen with tests running in parallel. If a test fails, the deployment will stop.

5. Tear down your stack's resources by destroying and removing it:

    ```bash
    $ pulumi destroy --yes
    $ pulumi stack rm --yes
    ```

## Further steps

Learn more about testing Pulumi programs:

- [Testing Guide](https://www.pulumi.com/docs/guides/testing/)
- [Property Testing Guide](https://www.pulumi.com/docs/guides/testing/property-testing/)
