@@ -3,7 +3,10 @@ package provider
33import (
44 "fmt"
55 "github.com/hashicorp/terraform-plugin-testing/helper/resource"
6+ "github.com/hashicorp/terraform-plugin-testing/knownvalue"
7+ "github.com/hashicorp/terraform-plugin-testing/statecheck"
68 "github.com/hashicorp/terraform-plugin-testing/terraform"
9+ "github.com/hashicorp/terraform-plugin-testing/tfjsonpath"
710 "github.com/jarcoal/httpmock"
811 "net/http"
912 "os"
@@ -44,7 +47,14 @@ resource "terracurl_request" "test" {
4447 skip_destroy = true
4548 skip_read = true
4649
47- }`
50+ }
51+
52+ provider "echo" {
53+ data = ephemeral.terracurl_request.ephems
54+ }
55+
56+ resource "echo" "test" {}
57+ `
4858
4959func TestAccEphemeralResource (t * testing.T ) {
5060 t .Setenv ("TF_ACC" , "true" )
@@ -59,12 +69,12 @@ func TestAccEphemeralResource(t *testing.T) {
5969 httpmock .RegisterResponder (
6070 "POST" ,
6171 "https://example.com/open" ,
62- httpmock .NewStringResponder (201 , `{"name": "devopsrob"} ` ),
72+ httpmock .NewStringResponder (201 , `token-123 ` ),
6373 )
6474 httpmock .RegisterResponder (
6575 "GET" ,
6676 "https://example.com/renew" ,
67- httpmock .NewStringResponder (200 , `{"name": "devopsrob"} ` ),
77+ httpmock .NewStringResponder (200 , `token-123 ` ),
6878 )
6979 httpmock .RegisterResponder (
7080 "DELETE" ,
@@ -86,7 +96,7 @@ func TestAccEphemeralResource(t *testing.T) {
8696
8797 resource .Test (t , resource.TestCase {
8898 PreCheck : func () { testAccPreCheck (t ) },
89- ProtoV6ProviderFactories : testAccProtoV6ProviderFactories ,
99+ ProtoV6ProviderFactories : testAccProtoV6ProviderFactoriesWithEcho ,
90100 CheckDestroy : nil ,
91101 Steps : []resource.TestStep {
92102 {
@@ -108,6 +118,13 @@ func TestAccEphemeralResource(t *testing.T) {
108118 return nil
109119 },
110120 ),
121+ ConfigStateChecks : []statecheck.StateCheck {
122+ statecheck .ExpectKnownValue (
123+ "echo.test" ,
124+ tfjsonpath .New ("data" ).AtMapKey ("response" ),
125+ knownvalue .StringExact ("token-123" ),
126+ ),
127+ },
111128 },
112129 {
113130 RefreshState : true ,
@@ -170,6 +187,11 @@ resource "terracurl_request" "test" {
170187
171188}
172189
190+ provider "echo" {
191+ data = ephemeral.terracurl_request.ephems
192+ }
193+
194+ resource "echo" "test" {}
173195
174196`
175197
@@ -195,7 +217,7 @@ func TestAccEphemeralResourceWithHeaders(t *testing.T) {
195217 httpmock .RegisterResponder ("POST" , "https://example.com/open" ,
196218 func (req * http.Request ) (* http.Response , error ) {
197219 if req .Header .Get ("Authorization" ) == "Bearer root" {
198- return httpmock .NewStringResponse (201 , `{"message": "success"} ` ), nil
220+ return httpmock .NewStringResponse (201 , `token-123 ` ), nil
199221 }
200222 return httpmock .NewStringResponse (400 , `{"error": "missing or invalid header"}` ), nil
201223 })
@@ -218,7 +240,7 @@ func TestAccEphemeralResourceWithHeaders(t *testing.T) {
218240
219241 resource .Test (t , resource.TestCase {
220242 PreCheck : func () { testAccPreCheck (t ) },
221- ProtoV6ProviderFactories : testAccProtoV6ProviderFactories ,
243+ ProtoV6ProviderFactories : testAccProtoV6ProviderFactoriesWithEcho ,
222244 CheckDestroy : nil ,
223245 Steps : []resource.TestStep {
224246 {
@@ -228,6 +250,13 @@ func TestAccEphemeralResourceWithHeaders(t *testing.T) {
228250 testMockEndpointRegister ("GET https://example.com/renew" ),
229251 testMockEndpointRegister ("DELETE https://example.com/close" ),
230252 ),
253+ ConfigStateChecks : []statecheck.StateCheck {
254+ statecheck .ExpectKnownValue (
255+ "echo.test" ,
256+ tfjsonpath .New ("data" ).AtMapKey ("response" ),
257+ knownvalue .StringExact ("token-123" ),
258+ ),
259+ },
231260 },
232261 },
233262 })
@@ -279,7 +308,14 @@ resource "terracurl_request" "test" {
279308 skip_destroy = true
280309 skip_read = true
281310
282- }`
311+ }
312+
313+ provider "echo" {
314+ data = ephemeral.terracurl_request.ephems
315+ }
316+
317+ resource "echo" "test" {}
318+ `
283319
284320func TestAccEphemeralResourceWithParameters (t * testing.T ) {
285321 t .Setenv ("TF_ACC" , "true" )
@@ -292,12 +328,12 @@ func TestAccEphemeralResourceWithParameters(t *testing.T) {
292328 httpmock .RegisterResponder (
293329 "POST" ,
294330 "https://example.com/open?params=true" ,
295- httpmock .NewStringResponder (201 , `{"message": "success"} ` ),
331+ httpmock .NewStringResponder (201 , `token-123 ` ),
296332 )
297333 httpmock .RegisterResponder (
298334 "GET" ,
299335 "https://example.com/renew?params=true" ,
300- httpmock .NewStringResponder (200 , `{"message": "success"} ` ),
336+ httpmock .NewStringResponder (200 , `token-123 ` ),
301337 )
302338 httpmock .RegisterResponder (
303339 "DELETE" ,
@@ -318,7 +354,7 @@ func TestAccEphemeralResourceWithParameters(t *testing.T) {
318354
319355 resource .Test (t , resource.TestCase {
320356 PreCheck : func () { testAccPreCheck (t ) },
321- ProtoV6ProviderFactories : testAccProtoV6ProviderFactories ,
357+ ProtoV6ProviderFactories : testAccProtoV6ProviderFactoriesWithEcho ,
322358 CheckDestroy : nil ,
323359 Steps : []resource.TestStep {
324360 {
@@ -328,6 +364,13 @@ func TestAccEphemeralResourceWithParameters(t *testing.T) {
328364 testMockEndpointRegister ("GET https://example.com/renew?params=true" ),
329365 testMockEndpointRegister ("DELETE https://example.com/close?params=true" ),
330366 ),
367+ ConfigStateChecks : []statecheck.StateCheck {
368+ statecheck .ExpectKnownValue (
369+ "echo.test" ,
370+ tfjsonpath .New ("data" ).AtMapKey ("response" ),
371+ knownvalue .StringExact ("token-123" ),
372+ ),
373+ },
331374 },
332375 },
333376 })
@@ -368,7 +411,14 @@ resource "terracurl_request" "test" {
368411 skip_destroy = true
369412 skip_read = true
370413
371- }`
414+ }
415+
416+ provider "echo" {
417+ data = ephemeral.terracurl_request.ephems
418+ }
419+
420+ resource "echo" "test" {}
421+ `
372422
373423func TestAccEphemeralResourceSkipRenew (t * testing.T ) {
374424 t .Setenv ("TF_ACC" , "true" )
@@ -381,12 +431,12 @@ func TestAccEphemeralResourceSkipRenew(t *testing.T) {
381431 httpmock .RegisterResponder (
382432 "POST" ,
383433 "https://example.com/open" ,
384- httpmock .NewStringResponder (201 , `{"message": "success"} ` ),
434+ httpmock .NewStringResponder (201 , `token-123 ` ),
385435 )
386436 httpmock .RegisterResponder (
387437 "GET" ,
388438 "https://example.com/renew" ,
389- httpmock .NewStringResponder (200 , `{"message": "success"} ` ),
439+ httpmock .NewStringResponder (200 , `token-123 ` ),
390440 )
391441 httpmock .RegisterResponder (
392442 "DELETE" ,
@@ -407,14 +457,21 @@ func TestAccEphemeralResourceSkipRenew(t *testing.T) {
407457
408458 resource .Test (t , resource.TestCase {
409459 PreCheck : func () { testAccPreCheck (t ) },
410- ProtoV6ProviderFactories : testAccProtoV6ProviderFactories ,
460+ ProtoV6ProviderFactories : testAccProtoV6ProviderFactoriesWithEcho ,
411461 CheckDestroy : nil ,
412462 Steps : []resource.TestStep {
413463 {
414464 Config : testAccEphemeralResourceSkipRenew ,
415465 Check : resource .ComposeTestCheckFunc (
416466 testMockEndpointCount ("GET https://example.com/renew" , 0 ),
417467 ),
468+ ConfigStateChecks : []statecheck.StateCheck {
469+ statecheck .ExpectKnownValue (
470+ "echo.test" ,
471+ tfjsonpath .New ("data" ).AtMapKey ("response" ),
472+ knownvalue .StringExact ("token-123" ),
473+ ),
474+ },
418475 },
419476 },
420477 })
@@ -451,7 +508,14 @@ resource "terracurl_request" "test" {
451508 skip_destroy = true
452509 skip_read = true
453510
454- }`
511+ }
512+
513+ provider "echo" {
514+ data = ephemeral.terracurl_request.ephems
515+ }
516+
517+ resource "echo" "test" {}
518+ `
455519
456520func TestAccEphemeralResourceSkipClose (t * testing.T ) {
457521 t .Setenv ("TF_ACC" , "true" )
@@ -464,12 +528,12 @@ func TestAccEphemeralResourceSkipClose(t *testing.T) {
464528 httpmock .RegisterResponder (
465529 "POST" ,
466530 "https://example.com/open" ,
467- httpmock .NewStringResponder (201 , `{"message": "success"} ` ),
531+ httpmock .NewStringResponder (201 , `token-123 ` ),
468532 )
469533 httpmock .RegisterResponder (
470534 "GET" ,
471535 "https://example.com/renew" ,
472- httpmock .NewStringResponder (200 , `{"message": "success"} ` ),
536+ httpmock .NewStringResponder (200 , `token-123 ` ),
473537 )
474538 httpmock .RegisterResponder (
475539 "DELETE" ,
@@ -490,14 +554,21 @@ func TestAccEphemeralResourceSkipClose(t *testing.T) {
490554
491555 resource .Test (t , resource.TestCase {
492556 PreCheck : func () { testAccPreCheck (t ) },
493- ProtoV6ProviderFactories : testAccProtoV6ProviderFactories ,
557+ ProtoV6ProviderFactories : testAccProtoV6ProviderFactoriesWithEcho ,
494558 CheckDestroy : nil ,
495559 Steps : []resource.TestStep {
496560 {
497561 Config : testAccEphemeralResourceSkipClose ,
498562 Check : resource .ComposeTestCheckFunc (
499563 testMockEndpointCount ("GET https://example.com/close" , 0 ),
500564 ),
565+ ConfigStateChecks : []statecheck.StateCheck {
566+ statecheck .ExpectKnownValue (
567+ "echo.test" ,
568+ tfjsonpath .New ("data" ).AtMapKey ("response" ),
569+ knownvalue .StringExact ("token-123" ),
570+ ),
571+ },
501572 },
502573 },
503574 })
@@ -554,6 +625,7 @@ resource "terracurl_request" "test" {
554625
555626}
556627
628+
557629` , url , certFile , certFile , keyFile , renewUrl , renewCertFile , renewCertFile , renewKeyFile , closeUrl , closeCertFile , closeCertFile , closeKeyFile )
558630}
559631
0 commit comments