gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taldir] branch master updated: mockup merchant API


From: gnunet
Subject: [taler-taldir] branch master updated: mockup merchant API
Date: Tue, 12 Jul 2022 00:10:06 +0200

This is an automated email from the git hooks/post-receive script.

martin-schanzenbach pushed a commit to branch master
in repository taldir.

The following commit(s) were added to refs/heads/master by this push:
     new 04281a1  mockup merchant API
04281a1 is described below

commit 04281a18fe4b49e4188bf516d6e40b28497c705f
Author: Martin Schanzenbach <schanzen@gnunet.org>
AuthorDate: Tue Jul 12 00:10:03 2022 +0200

    mockup merchant API
---
 cmd/taldir-server/main_test.go | 24 ++++++++++++++++++++++--
 go.mod                         |  8 +-------
 pkg/rest/taldir.go             | 12 ++++++------
 pkg/taler/merchant.go          |  9 +++++++--
 4 files changed, 36 insertions(+), 17 deletions(-)

diff --git a/cmd/taldir-server/main_test.go b/cmd/taldir-server/main_test.go
index 13c68c0..ef59687 100644
--- a/cmd/taldir-server/main_test.go
+++ b/cmd/taldir-server/main_test.go
@@ -31,6 +31,7 @@ import (
   "log"
   "taler.net/taldir/pkg/rest"
   _ "taler.net/taldir/cmd/taldir-server"
+  "github.com/jarcoal/httpmock"
   "taler.net/taldir/pkg/util"
 )
 
@@ -54,6 +55,22 @@ var validRegisterRequestShort = []byte(`
   }
 `)
 
+var newOrderMockResponse = `
+  {
+    "order_id": "testOrder1234",
+    "taler_pay_uri": "payto://ladida"
+  }
+`
+
+var newOrderStatusUnpaidMockResponse = `
+  {
+    "order_status": "unpaid",
+    "taler_pay_uri": "payto://somedude"
+  }
+`
+
+
+
 
 func TestMain(m *testing.M) {
   t.Initialize("testdata/taldir-test.conf")
@@ -293,10 +310,13 @@ func TestUnsupportedMethod(s *testing.T) {
 
 func TestPaymentRequiredMethod(s *testing.T) {
   t.ClearDatabase()
-
+  httpmock.Activate()
+  defer httpmock.DeactivateAndReset()
   req, _ := http.NewRequest("POST", "/register/test-cost", 
bytes.NewBuffer(validRegisterRequest))
-  response := executeRequest(req)
+  httpmock.RegisterResponder("POST", 
"http://merchant.taldir/instances/myInstance/private/orders";, 
httpmock.NewStringResponder(200, newOrderMockResponse))
+  httpmock.RegisterResponder("GET", 
"http://merchant.taldir/instances/myInstance/private/orders/testOrder1234";, 
httpmock.NewStringResponder(200, newOrderStatusUnpaidMockResponse))
 
+  response := executeRequest(req)
   if http.StatusPaymentRequired != response.Code {
     s.Errorf("Expected response code %d. Got %d\n", 
http.StatusPaymentRequired, response.Code)
   }
diff --git a/go.mod b/go.mod
index b5dfeef..8479075 100644
--- a/go.mod
+++ b/go.mod
@@ -3,19 +3,13 @@ module taler.net/taldir
 go 1.16
 
 require (
-       github.com/alexbrainman/sspi v0.0.0-20180613141037-e580b900e9f5 // 
indirect
        github.com/gorilla/mux v1.8.0
-       github.com/jcmturner/gokrb5/v8 v8.2.0 // indirect
+       github.com/jarcoal/httpmock v1.2.0
        github.com/jinzhu/now v1.1.5 // indirect
        github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
        golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
        golang.org/x/text v0.3.7
        gopkg.in/ini.v1 v1.66.4
-       gopkg.in/jcmturner/aescts.v1 v1.0.1 // indirect
-       gopkg.in/jcmturner/dnsutils.v1 v1.0.1 // indirect
-       gopkg.in/jcmturner/goidentity.v3 v3.0.0 // indirect
-       gopkg.in/jcmturner/gokrb5.v7 v7.5.0 // indirect
-       gopkg.in/jcmturner/rpc.v1 v1.1.0 // indirect
        gorm.io/driver/postgres v1.3.4
        gorm.io/gorm v1.23.4
 )
diff --git a/pkg/rest/taldir.go b/pkg/rest/taldir.go
index 0d8d18a..b8734b3 100644
--- a/pkg/rest/taldir.go
+++ b/pkg/rest/taldir.go
@@ -433,15 +433,15 @@ func (t *Taldir) registerRequest(w http.ResponseWriter, r 
*http.Request){
     // Check if order paid
     payto, paytoErr := t.Merchant.IsOrderPaid(validation.OrderId)
     if paytoErr != nil {
-      if len(payto) != 0 {
-        w.WriteHeader(http.StatusPaymentRequired)
-        w.Header().Set("Location", payto) // FIXME no idea what to do with 
this.
-        return
-      }
       w.WriteHeader(http.StatusInternalServerError)
       log.Println(paytoErr)
       return
     }
+    if len(payto) != 0 {
+      w.WriteHeader(http.StatusPaymentRequired)
+      w.Header().Set("Location", payto) // FIXME no idea what to do with this.
+      return
+    }
     // In this case, this order was paid
   }
 
@@ -758,7 +758,7 @@ func (t *Taldir) Initialize(cfgfile string) {
   if "" == t.Salt {
     t.Salt = t.Cfg.Section("taldir").Key("salt").MustString("ChangeMe")
   }
-  t.Merchant = taler.NewMerchant("http://localhost:8880";, "myInstance")
+  t.Merchant = taler.NewMerchant("http://merchant.taldir";, "myInstance")
   t.setupHandlers()
 }
 
diff --git a/pkg/taler/merchant.go b/pkg/taler/merchant.go
index 3c039e4..8c9705e 100644
--- a/pkg/taler/merchant.go
+++ b/pkg/taler/merchant.go
@@ -6,6 +6,7 @@ import (
   "bytes"
   "fmt"
   "errors"
+  "io/ioutil"
 )
 
 type PostOrderRequest struct {
@@ -119,12 +120,16 @@ func (m *Merchant) IsOrderPaid(orderId string) (string, 
error) {
     message := fmt.Sprintf("Expected response code %d. Got %d", http.StatusOK, 
resp.StatusCode)
     return "", errors.New(message)
   }
-  err = json.NewDecoder(resp.Body).Decode(&orderPaidResponse)
+  respData, err := ioutil.ReadAll(resp.Body)
+  if err != nil {
+    return "", err
+  }
+  err = json.NewDecoder(bytes.NewReader(respData)).Decode(&orderPaidResponse)
   if err != nil {
     return "", err
   }
   if orderPaidResponse.OrderStatus != "paid" {
-    err = json.NewDecoder(resp.Body).Decode(&paytoResponse)
+    err = json.NewDecoder(bytes.NewReader(respData)).Decode(&paytoResponse)
     return paytoResponse.TalerPayUri, err
   }
   return "", nil

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]