Skip to content

Commit da4b9b6

Browse files
authored
Merge pull request #111 from Kit/update-github-actions
Tests: Exchange API Key and Secret for OAuth Tokens
2 parents a0dde7d + 4d1efd3 commit da4b9b6

File tree

4 files changed

+36
-34
lines changed

4 files changed

+36
-34
lines changed

.env.example

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ CONVERTKIT_OAUTH_ACCESS_TOKEN=
22
CONVERTKIT_OAUTH_REFRESH_TOKEN=
33
CONVERTKIT_OAUTH_ACCESS_TOKEN_NO_DATA=
44
CONVERTKIT_OAUTH_REFRESH_TOKEN_NO_DATA=
5+
CONVERTKIT_V4_API_KEY=
6+
CONVERTKIT_V3_API_KEY=
7+
CONVERTKIT_V3_API_SECRET=
8+
CONVERTKIT_V3_API_KEY_NO_DATA=
9+
CONVERTKIT_V3_API_SECRET_NO_DATA=
510
CONVERTKIT_OAUTH_CLIENT_ID=
611
CONVERTKIT_OAUTH_CLIENT_SECRET=
712
CONVERTKIT_OAUTH_REDIRECT_URI="https://convertkit-github.local/wp-admin/options-general.php?page=_wp_convertkit_settings"

.github/workflows/tests.yml

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,21 @@ jobs:
3838
php-version: ${{ matrix.php-versions }}
3939
coverage: none
4040

41+
# Exchange API Keys and Secrets for OAuth Tokens.
42+
- name: Exchange API Key and Secret for OAuth Tokens
43+
id: get-oauth-tokens
44+
run: |
45+
response=$(curl -s -X POST "${{ secrets.CONVERTKIT_EXCHANGE_API_KEYS_ENDPOINT }}?api_key=${{ secrets.CONVERTKIT_V3_API_KEY }}&api_secret=${{ secrets.CONVERTKIT_V3_API_SECRET }}&client_id=${{ secrets.CONVERTKIT_OAUTH_CLIENT_ID }}&redirect_uri=${{ secrets.CONVERTKIT_OAUTH_REDIRECT_URI }}&tenant_name=github-actions-${{ steps.test-group.outputs.value }}-${{ matrix.php-versions }}")
46+
access_token=$(echo "$response" | jq -r '.oauth.access_token')
47+
refresh_token=$(echo "$response" | jq -r '.oauth.refresh_token')
48+
echo "KIT_OAUTH_ACCESS_TOKEN=$access_token" >> $GITHUB_ENV
49+
echo "KIT_OAUTH_REFRESH_TOKEN=$refresh_token" >> $GITHUB_ENV
50+
response=$(curl -s -X POST "${{ secrets.CONVERTKIT_EXCHANGE_API_KEYS_ENDPOINT }}?api_key=${{ secrets.CONVERTKIT_V3_API_KEY_NO_DATA }}&api_secret=${{ secrets.CONVERTKIT_V3_API_SECRET_NO_DATA }}&client_id=${{ secrets.CONVERTKIT_OAUTH_CLIENT_ID }}&redirect_uri=${{ secrets.CONVERTKIT_OAUTH_REDIRECT_URI }}&tenant_name=github-actions-${{ steps.test-group.outputs.value }}-${{ matrix.php-versions }}")
51+
access_token=$(echo "$response" | jq -r '.oauth.access_token')
52+
refresh_token=$(echo "$response" | jq -r '.oauth.refresh_token')
53+
echo "KIT_OAUTH_ACCESS_TOKEN_NO_DATA=$access_token" >> $GITHUB_ENV
54+
echo "KIT_OAUTH_REFRESH_TOKEN_NO_DATA=$refresh_token" >> $GITHUB_ENV
55+
4156
# Write any secrets, such as API keys, to the .env.dist.testing file now.
4257
# Make sure your committed .env.dist.testing file ends with a newline.
4358
# The formatting of the contents to include a blank newline is deliberate.
@@ -47,11 +62,11 @@ jobs:
4762
path: .env.dist.testing
4863
contents: |
4964
50-
CONVERTKIT_OAUTH_ACCESS_TOKEN=${{ secrets.CONVERTKIT_OAUTH_ACCESS_TOKEN }}
51-
CONVERTKIT_OAUTH_REFRESH_TOKEN=${{ secrets.CONVERTKIT_OAUTH_REFRESH_TOKEN }}
52-
CONVERTKIT_OAUTH_ACCESS_TOKEN_NO_DATA=${{ secrets.CONVERTKIT_OAUTH_ACCESS_TOKEN_NO_DATA }}
53-
CONVERTKIT_OAUTH_REFRESH_TOKEN_NO_DATA=${{ secrets.CONVERTKIT_OAUTH_REFRESH_TOKEN_NO_DATA }}
54-
CONVERTKIT_API_KEY=${{ secrets.CONVERTKIT_API_KEY }}
65+
CONVERTKIT_OAUTH_ACCESS_TOKEN=${{ env.KIT_OAUTH_ACCESS_TOKEN }}
66+
CONVERTKIT_OAUTH_REFRESH_TOKEN=${{ env.KIT_OAUTH_REFRESH_TOKEN }}
67+
CONVERTKIT_OAUTH_ACCESS_TOKEN_NO_DATA=${{ env.KIT_OAUTH_ACCESS_TOKEN_NO_DATA }}
68+
CONVERTKIT_OAUTH_REFRESH_TOKEN_NO_DATA=${{ env.KIT_OAUTH_REFRESH_TOKEN_NO_DATA }}
69+
CONVERTKIT_V4_API_KEY=${{ secrets.CONVERTKIT_V4_API_KEY }}
5570
CONVERTKIT_OAUTH_CLIENT_ID=${{ secrets.CONVERTKIT_OAUTH_CLIENT_ID }}
5671
CONVERTKIT_OAUTH_CLIENT_SECRET=${{ secrets.CONVERTKIT_OAUTH_CLIENT_SECRET }}
5772
CONVERTKIT_OAUTH_REDIRECT_URI=${{ secrets.CONVERTKIT_OAUTH_REDIRECT_URI }}
@@ -71,7 +86,6 @@ jobs:
7186

7287
# Run PHPStan for static analysis.
7388
- name: Run PHPStan Static Analysis
74-
working-directory: ${{ env.PLUGIN_DIR }}
7589
run: php vendor/bin/phpstan analyse --memory-limit=1250M
7690

7791
# Run Coding Standards.

SETUP.md

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -38,24 +38,7 @@ If you're new to this, use [GitHub Desktop](https://desktop.github.com/) or [Tow
3838

3939
### Configure Testing Environment
4040

41-
Copy the `.env.example` file to `.env` in the root of this repository, adding your ConvertKit API keys.
42-
43-
```
44-
CONVERTKIT_API_KEY_NO_DATA=
45-
CONVERTKIT_API_SECRET_NO_DATA=
46-
CONVERTKIT_API_KEY=
47-
CONVERTKIT_API_SECRET=
48-
CONVERTKIT_API_BROADCAST_ID="8697158"
49-
CONVERTKIT_API_FORM_ID="2765139"
50-
CONVERTKIT_API_LEGACY_FORM_URL="https://app.convertkit.com/landing_pages/470099"
51-
CONVERTKIT_API_LANDING_PAGE_URL="https://cheerful-architect-3237.ck.page/cc5eb21744"
52-
CONVERTKIT_API_LEGACY_LANDING_PAGE_URL="https://app.convertkit.com/landing_pages/470103"
53-
CONVERTKIT_API_SEQUENCE_ID="1030824"
54-
CONVERTKIT_API_TAG_NAME="wordpress"
55-
CONVERTKIT_API_TAG_ID="2744672"
56-
CONVERTKIT_API_SUBSCRIBER_EMAIL="optin@n7studios.com"
57-
CONVERTKIT_API_SUBSCRIBER_ID="1579118532"
58-
```
41+
Copy the `.env.example` file to `.env` in the root of this repository, adding your Kit API keys.
5942

6043
#### PHPStan
6144

tests/ConvertKitAPIKeyTest.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ protected function setUp(): void
3131

3232
// Setup API instances.
3333
$this->api = new ConvertKit_API(
34-
apiKey: $_ENV['CONVERTKIT_API_KEY']
34+
apiKey: $_ENV['CONVERTKIT_V4_API_KEY']
3535
);
3636

3737
// Wait a second to avoid hitting a 429 rate limit.
@@ -49,7 +49,7 @@ public function testDebugEnabled()
4949
{
5050
// Setup API with debugging enabled.
5151
$api = new ConvertKit_API(
52-
apiKey: $_ENV['CONVERTKIT_API_KEY'],
52+
apiKey: $_ENV['CONVERTKIT_V4_API_KEY'],
5353
debug: true
5454
);
5555

@@ -75,7 +75,7 @@ public function testDebugEnabledWithCustomLogFile()
7575

7676
// Setup API with debugging enabled.
7777
$api = new ConvertKit_API(
78-
apiKey: $_ENV['CONVERTKIT_API_KEY'],
78+
apiKey: $_ENV['CONVERTKIT_V4_API_KEY'],
7979
debug: true,
8080
debugLogFileLocation: $this->logFile
8181
);
@@ -101,21 +101,21 @@ public function testDebugCredentialsAndEmailsAreMasked()
101101
{
102102
// Setup API with debugging enabled.
103103
$api = new ConvertKit_API(
104-
apiKey: $_ENV['CONVERTKIT_API_KEY'],
104+
apiKey: $_ENV['CONVERTKIT_V4_API_KEY'],
105105
debug: true
106106
);
107107

108108
// Create log entries with API Key and Email Address, as if an API method
109109
// were to log this sensitive data.
110-
$this->callPrivateMethod($api, 'create_log', ['API Key: ' . $_ENV['CONVERTKIT_API_KEY']]);
110+
$this->callPrivateMethod($api, 'create_log', ['API Key: ' . $_ENV['CONVERTKIT_V4_API_KEY']]);
111111
$this->callPrivateMethod($api, 'create_log', ['Email: ' . $_ENV['CONVERTKIT_API_SUBSCRIBER_EMAIL']]);
112112

113113
// Confirm that the log includes the masked API Key and Email Address.
114114
$this->assertStringContainsString(
115115
str_repeat(
116116
'*',
117-
(strlen($_ENV['CONVERTKIT_API_KEY']) - 4)
118-
) . substr($_ENV['CONVERTKIT_API_KEY'], -4),
117+
(strlen($_ENV['CONVERTKIT_V4_API_KEY']) - 4)
118+
) . substr($_ENV['CONVERTKIT_V4_API_KEY'], -4),
119119
$this->getLogFileContents()
120120
);
121121
$this->assertStringContainsString(
@@ -124,7 +124,7 @@ public function testDebugCredentialsAndEmailsAreMasked()
124124
);
125125

126126
// Confirm that the log does not include the unmasked API Key or Email Address.
127-
$this->assertStringNotContainsString($_ENV['CONVERTKIT_API_KEY'], $this->getLogFileContents());
127+
$this->assertStringNotContainsString($_ENV['CONVERTKIT_V4_API_KEY'], $this->getLogFileContents());
128128
$this->assertStringNotContainsString($_ENV['CONVERTKIT_API_SUBSCRIBER_EMAIL'], $this->getLogFileContents());
129129
}
130130

@@ -158,7 +158,7 @@ public function testRequestHeadersMethod()
158158
$this->assertEquals($headers['Accept'], 'application/json');
159159
$this->assertEquals($headers['Content-Type'], 'application/json; charset=utf-8');
160160
$this->assertEquals($headers['User-Agent'], 'ConvertKitPHPSDK/' . $this->api::VERSION . ';PHP/' . phpversion());
161-
$this->assertEquals($headers['X-Kit-Api-Key'], $_ENV['CONVERTKIT_API_KEY']);
161+
$this->assertEquals($headers['X-Kit-Api-Key'], $_ENV['CONVERTKIT_V4_API_KEY']);
162162
}
163163

164164
/**
@@ -181,7 +181,7 @@ public function testRequestHeadersMethodWithType()
181181
$this->assertEquals($headers['Accept'], 'text/html');
182182
$this->assertEquals($headers['Content-Type'], 'text/html; charset=utf-8');
183183
$this->assertEquals($headers['User-Agent'], 'ConvertKitPHPSDK/' . $this->api::VERSION . ';PHP/' . phpversion());
184-
$this->assertEquals($headers['X-Kit-Api-Key'], $_ENV['CONVERTKIT_API_KEY']);
184+
$this->assertEquals($headers['X-Kit-Api-Key'], $_ENV['CONVERTKIT_V4_API_KEY']);
185185
}
186186

187187
/**

0 commit comments

Comments
 (0)