Skip to content

Commit 7489fb0

Browse files
authored
Merge pull request #356 from urnetwork/create-network-thread-balance-code
Create network thread balance code
2 parents 00b9e1f + 70cc9a1 commit 7489fb0

14 files changed

Lines changed: 724 additions & 459 deletions

api/handlers/subscription_handlers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func SubscriptionCheckBalanceCode(w http.ResponseWriter, r *http.Request) {
5353
}
5454

5555
func SubscriptionRedeemBalanceCode(w http.ResponseWriter, r *http.Request) {
56-
router.WrapWithInputRequireAuth(model.RedeemBalanceCode, w, r)
56+
router.WrapWithInputRequireAuth(controller.RedeemBalanceCode, w, r)
5757
}
5858

5959
func SubscriptionCreatePaymentId(w http.ResponseWriter, r *http.Request) {

connect/connect_proxy_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import (
66
"context"
77
"net/http"
88
"net/url"
9+
910
// "net"
1011
"encoding/json"
1112
"fmt"
1213
"io"
1314
"time"
15+
1416
// "strings"
1517
"crypto/tls"
1618
mathrand "math/rand"
@@ -192,9 +194,10 @@ func testConnectProxy(t *testing.T) {
192194

193195
result, err := model.RedeemBalanceCode(
194196
&model.RedeemBalanceCodeArgs{
195-
Secret: balanceCode.Secret,
197+
Secret: balanceCode.Secret,
198+
NetworkId: session.ByJwt.NetworkId,
196199
},
197-
session,
200+
session.Ctx,
198201
)
199202
assert.Equal(t, nil, err)
200203
assert.Equal(t, nil, result.Error)
@@ -312,9 +315,10 @@ func testConnectProxy(t *testing.T) {
312315

313316
result, err := model.RedeemBalanceCode(
314317
&model.RedeemBalanceCodeArgs{
315-
Secret: balanceCode.Secret,
318+
Secret: balanceCode.Secret,
319+
NetworkId: session.ByJwt.NetworkId,
316320
},
317-
session,
321+
session.Ctx,
318322
)
319323
assert.Equal(t, nil, err)
320324
assert.Equal(t, nil, result.Error)

connect/connect_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"github.com/urnetwork/server/jwt"
2626
"github.com/urnetwork/server/model"
2727
"github.com/urnetwork/server/router"
28-
"github.com/urnetwork/server/session"
2928
)
3029

3130
func TestConnectNoNack(t *testing.T) {
@@ -785,9 +784,10 @@ func testConnect(
785784

786785
result, err := model.RedeemBalanceCode(
787786
&model.RedeemBalanceCodeArgs{
788-
Secret: balanceCodeA.Secret,
787+
Secret: balanceCodeA.Secret,
788+
NetworkId: networkIdA,
789789
},
790-
session.NewLocalClientSession(ctx, "0.0.0.0", byJwtA),
790+
ctx,
791791
)
792792
assert.Equal(t, nil, err)
793793
assert.Equal(t, nil, result.Error)
@@ -805,9 +805,10 @@ func testConnect(
805805

806806
result, err = model.RedeemBalanceCode(
807807
&model.RedeemBalanceCodeArgs{
808-
Secret: balanceCodeB.Secret,
808+
Secret: balanceCodeB.Secret,
809+
NetworkId: networkIdB,
809810
},
810-
session.NewLocalClientSession(ctx, "0.0.0.0", byJwtB),
811+
ctx,
811812
)
812813
assert.Equal(t, nil, err)
813814
assert.Equal(t, nil, result.Error)

controller/account_payment_controller_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@ func TestSubscriptionSendPayment(t *testing.T) {
7272
)
7373
assert.Equal(t, err, nil)
7474
model.RedeemBalanceCode(&model.RedeemBalanceCodeArgs{
75-
Secret: balanceCode.Secret,
76-
}, sourceSession)
75+
Secret: balanceCode.Secret,
76+
NetworkId: sourceSession.ByJwt.NetworkId,
77+
}, ctx)
7778

7879
transferEscrow, err := model.CreateTransferEscrow(ctx, sourceNetworkId, sourceId, destinationNetworkId, destinationId, 1024*1024)
7980
assert.Equal(t, err, nil)

controller/network_controller.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,15 @@ func NetworkCreate(
2222
return result, nil
2323
}
2424

25-
// model.CreateNetworkReferralCode(session.Ctx, result.Network.NetworkId)
26-
27-
AddRefreshTransferBalance(session.Ctx, result.Network.NetworkId)
25+
/**
26+
* we only add transfer balance if the user is not pro (no balance code redeemed)
27+
*
28+
* redeeming a balance code successfully automatically adds paid transfer balance for the network
29+
*/
30+
if !result.IsPro {
31+
// add regular balance
32+
AddRefreshTransferBalance(session.Ctx, result.Network.NetworkId)
33+
}
2834

2935
if networkCreate.ReferralCode != nil {
3036
model.CreateNetworkReferral(

controller/network_controller_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,47 @@ func TestNetworkNameUpdate(t *testing.T) {
180180
assert.Equal(t, networkResult.NetworkName, updatedNetworkName)
181181
})
182182
}
183+
184+
func TestNetworkCreateWithBalanceCodeSuccess(t *testing.T) {
185+
server.DefaultTestEnv().Run(func() {
186+
187+
ctx := context.Background()
188+
session := session.Testing_CreateClientSession(ctx, nil)
189+
190+
userAuth := "foo@ur.io"
191+
password := "bar123456789Foo!"
192+
193+
netTransferByteCount := model.ByteCount(1024 * 1024)
194+
netRevenue := model.UsdToNanoCents(10.00)
195+
subscriptionYearDuration := 365 * 24 * time.Hour
196+
197+
balanceCode, err := model.CreateBalanceCode(
198+
ctx,
199+
netTransferByteCount,
200+
subscriptionYearDuration,
201+
netRevenue,
202+
"",
203+
"",
204+
"",
205+
)
206+
assert.Equal(t, err, nil)
207+
208+
networkCreate := model.NetworkCreateArgs{
209+
UserName: "",
210+
UserAuth: &userAuth,
211+
Password: &password,
212+
NetworkName: "foobar",
213+
Terms: true,
214+
GuestMode: false,
215+
BalanceCode: &balanceCode.Secret,
216+
}
217+
218+
result, err := NetworkCreate(networkCreate, session)
219+
assert.Equal(t, err, nil)
220+
assert.Equal(t, result.Error, nil)
221+
222+
isPro := model.IsPro(ctx, &result.Network.NetworkId)
223+
assert.Equal(t, isPro, true)
224+
225+
})
226+
}

controller/subscription_controller.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,6 +1054,24 @@ func CreateBalanceCode(
10541054
}
10551055
}
10561056

1057+
type RedeemBalanceCodeArgs struct {
1058+
Secret string `json:"secret"`
1059+
}
1060+
1061+
func RedeemBalanceCode(
1062+
redeemBalanceCode RedeemBalanceCodeArgs,
1063+
session *session.ClientSession,
1064+
) (*model.RedeemBalanceCodeResult, error) {
1065+
1066+
return model.RedeemBalanceCode(
1067+
&model.RedeemBalanceCodeArgs{
1068+
Secret: redeemBalanceCode.Secret,
1069+
NetworkId: session.ByJwt.NetworkId,
1070+
},
1071+
session.Ctx,
1072+
)
1073+
}
1074+
10571075
// https://developers.google.com/android-publisher/authorization
10581076
func playAuth(ctx context.Context) (string, error) {
10591077
form := url.Values{}

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ require (
2929
github.com/stripe/stripe-go/v82 v82.5.1
3030
github.com/things-go/go-socks5 v0.0.6
3131
github.com/tyler-smith/go-bip39 v1.1.0
32-
github.com/urnetwork/connect v0.0.0
33-
github.com/urnetwork/glog v0.0.0
32+
github.com/urnetwork/connect v0.2.0
33+
github.com/urnetwork/glog v1.2.9
3434
github.com/urnetwork/proxy v0.0.0
3535
github.com/urnetwork/sdk v0.0.0
3636
golang.org/x/crypto v0.46.0

model/account_payment_model_test.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ func TestCancelAccountPayment(t *testing.T) {
5050

5151
assert.Equal(t, err, nil)
5252
RedeemBalanceCode(&RedeemBalanceCodeArgs{
53-
Secret: balanceCode.Secret,
54-
}, sourceSession)
53+
Secret: balanceCode.Secret,
54+
NetworkId: sourceNetworkId,
55+
}, sourceSession.Ctx)
5556

5657
transferEscrow, err := CreateTransferEscrow(ctx, sourceNetworkId, sourceId, destinationNetworkId, destinationId, 1024*1024)
5758
assert.Equal(t, err, nil)
@@ -163,8 +164,9 @@ func TestGetNetworkProvideStats(t *testing.T) {
163164
)
164165
assert.Equal(t, err, nil)
165166
RedeemBalanceCode(&RedeemBalanceCodeArgs{
166-
Secret: balanceCode.Secret,
167-
}, sourceSession)
167+
Secret: balanceCode.Secret,
168+
NetworkId: sourceSession.ByJwt.NetworkId,
169+
}, sourceSession.Ctx)
168170

169171
// create a wallet to receive the payout
170172
args := &CreateAccountWalletExternalArgs{
@@ -298,8 +300,9 @@ func TestPaymentPlanSubsidy(t *testing.T) {
298300
)
299301
assert.Equal(t, err, nil)
300302
RedeemBalanceCode(&RedeemBalanceCodeArgs{
301-
Secret: balanceCode.Secret,
302-
}, sourceSession)
303+
Secret: balanceCode.Secret,
304+
NetworkId: sourceSession.ByJwt.NetworkId,
305+
}, sourceSession.Ctx)
303306

304307
contractIds := GetOpenContractIds(ctx, sourceId, destinationId)
305308
assert.Equal(t, len(contractIds), 0)

model/account_point_model_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,9 @@ func TestAccountPointsPerPayout(t *testing.T) {
205205

206206
assert.Equal(t, err, nil)
207207
RedeemBalanceCode(&RedeemBalanceCodeArgs{
208-
Secret: balanceCode.Secret,
209-
}, clientSessionC)
208+
Secret: balanceCode.Secret,
209+
NetworkId: clientSessionC.ByJwt.NetworkId,
210+
}, clientSessionC.Ctx)
210211

211212
usedTransferByteCount := ByteCount(1024 * 1024 * 1024)
212213

0 commit comments

Comments
 (0)