# Core

> The Google Cloud project the gcp-* packs talk to, set up the way the Google Cloud client libraries are set up for the real services.

Source: https://axx.nimbusxr.us/next/references/packs/gcp-core/

The Google Cloud project the gcp-* packs talk to, set up the way the Google Cloud client libraries are set up for the real services.

Register the project once; every gcp-* step of the scenario uses it:

```gherkin
Given the billing gcp project with the following properties:
  | project  | parcels-billing       |
  | endpoint | http://localhost:4588 |
```

Without `credentials`, the clients use Application Default Credentials, as they always do: `GOOGLE_APPLICATION_CREDENTIALS`, the gcloud login, or the workload's service account. Values expand `${env:..}` and `${sys:..}`, so the same features run against Google Cloud and against an emulator.

Add it to a project with `axx pack add gcp-core`.

## Steps

### `gcp-core.project`

```gherkin
Given the {word} gcp project with the following properties:
  | property | value |
```

The table may start with the row naming its columns, as above, or go straight to its rows.

Register the Google Cloud project the gcp-* steps talk to.

- The first project registered is the default.
- Without `credentials`, the clients use Application Default Credentials: `GOOGLE_APPLICATION_CREDENTIALS`, the gcloud login, or the workload's service account.
- Values expand `${env:..}` and `${sys:..}`, so the same features run against Google Cloud and against an emulator.

| Parameter | Takes | For example |
|---|---|---|
| `{word}` | one word, with no spaces | `parcels`, `PX-4101` |

| Property | Takes | Default |
|---|---|---|
| `project` | the project ID, like `parcels-billing` | _required_ |
| `endpoint` | where every service of the project is, instead of Google Cloud: a local emulator, like `http://localhost:4588`; the clients then connect without credentials, and without TLS to an `http://` endpoint | |
| `credentials` | a service account key file, resolved against `resources`, like `keys/billing-tests.json` | |
| `asyncapi` | an AsyncAPI document, a file of the project or a URL, that the Pub/Sub topics follow: every message a scenario sends there, and every message a check finds, is checked against it (with the asyncapi pack) | |

**Example:**

```gherkin
Given the billing gcp project with the following properties:
  | project  | parcels-billing       |
  | endpoint | http://localhost:4588 |
Given the billing gcp project with the following properties:
  | project     | parcels-billing         |
  | credentials | keys/billing-tests.json |
```

_Since 0.1.0._
