[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-taldir] branch master updated: mockup merchant API,
gnunet <=