Closes https://github.com/ooni/probe/issues/2334. While there, reinstate integration tests, which were also lost in a previous refactoring. However, only run those tests for linux/amd64 because we can be confident that the Go compiler is WAI for all archs we support. While there, always use bash for running end-to-end tests. H/T @ainghazal for discovering and reporting this bug.
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package probeservices_test
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"errors"
 | |
| 	"net/http"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/apex/log"
 | |
| 	"github.com/ooni/probe-cli/v3/internal/atomicx"
 | |
| 	"github.com/ooni/probe-cli/v3/internal/engine/probeservices"
 | |
| 	"github.com/ooni/probe-cli/v3/internal/httpx"
 | |
| 	"github.com/ooni/probe-cli/v3/internal/kvstore"
 | |
| )
 | |
| 
 | |
| func TestCheckReportIDWorkingAsIntended(t *testing.T) {
 | |
| 	if testing.Short() {
 | |
| 		t.Skip("skip test in short mode")
 | |
| 	}
 | |
| 	client := probeservices.Client{
 | |
| 		APIClientTemplate: httpx.APIClientTemplate{
 | |
| 			BaseURL:    "https://api.ooni.io/",
 | |
| 			HTTPClient: http.DefaultClient,
 | |
| 			Logger:     log.Log,
 | |
| 			UserAgent:  "miniooni/0.1.0-dev",
 | |
| 		},
 | |
| 		LoginCalls:    &atomicx.Int64{},
 | |
| 		RegisterCalls: &atomicx.Int64{},
 | |
| 		StateFile:     probeservices.NewStateFile(&kvstore.Memory{}),
 | |
| 	}
 | |
| 	reportID := `20201209T052225Z_urlgetter_IT_30722_n1_E1VUhMz08SEkgYFU`
 | |
| 	ctx := context.Background()
 | |
| 	found, err := client.CheckReportID(ctx, reportID)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	if found != true {
 | |
| 		t.Fatal("unexpected found value")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCheckReportIDWorkingWithCancelledContext(t *testing.T) {
 | |
| 	client := probeservices.Client{
 | |
| 		APIClientTemplate: httpx.APIClientTemplate{
 | |
| 			BaseURL:    "https://api.ooni.io/",
 | |
| 			HTTPClient: http.DefaultClient,
 | |
| 			Logger:     log.Log,
 | |
| 			UserAgent:  "miniooni/0.1.0-dev",
 | |
| 		},
 | |
| 		LoginCalls:    &atomicx.Int64{},
 | |
| 		RegisterCalls: &atomicx.Int64{},
 | |
| 		StateFile:     probeservices.NewStateFile(&kvstore.Memory{}),
 | |
| 	}
 | |
| 	reportID := `20201209T052225Z_urlgetter_IT_30722_n1_E1VUhMz08SEkgYFU`
 | |
| 	ctx, cancel := context.WithCancel(context.Background())
 | |
| 	cancel() // fail immediately
 | |
| 	found, err := client.CheckReportID(ctx, reportID)
 | |
| 	if !errors.Is(err, context.Canceled) {
 | |
| 		t.Fatalf("not the error we expected: %+v", err)
 | |
| 	}
 | |
| 	if found != false {
 | |
| 		t.Fatal("unexpected found value")
 | |
| 	}
 | |
| }
 |