93 lines
2.6 KiB
Go
93 lines
2.6 KiB
Go
|
// Copyright (C) 2020 Storj Labs, Inc.
|
||
|
// See LICENSE for copying information.
|
||
|
|
||
|
package consoleapi_test
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"encoding/json"
|
||
|
"io/ioutil"
|
||
|
"net/http"
|
||
|
"strconv"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
"go.uber.org/zap"
|
||
|
|
||
|
"storj.io/common/testcontext"
|
||
|
"storj.io/common/uuid"
|
||
|
"storj.io/storj/private/testplanet"
|
||
|
"storj.io/storj/satellite"
|
||
|
)
|
||
|
|
||
|
func TestAuth_Register(t *testing.T) {
|
||
|
testplanet.Run(t, testplanet.Config{
|
||
|
SatelliteCount: 1, StorageNodeCount: 0, UplinkCount: 0,
|
||
|
Reconfigure: testplanet.Reconfigure{
|
||
|
Satellite: func(log *zap.Logger, index int, config *satellite.Config) {
|
||
|
config.Console.OpenRegistrationEnabled = true
|
||
|
config.Console.RateLimit.Burst = 10
|
||
|
},
|
||
|
},
|
||
|
}, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) {
|
||
|
|
||
|
for i, test := range []struct {
|
||
|
Partner string
|
||
|
ValidPartner bool
|
||
|
}{
|
||
|
{Partner: "minio", ValidPartner: true},
|
||
|
{Partner: "Minio", ValidPartner: true},
|
||
|
{Partner: "Raiden Network", ValidPartner: true},
|
||
|
{Partner: "Raiden nEtwork", ValidPartner: true},
|
||
|
{Partner: "invalid-name", ValidPartner: false},
|
||
|
} {
|
||
|
registerData := struct {
|
||
|
FullName string `json:"fullName"`
|
||
|
ShortName string `json:"shortName"`
|
||
|
Email string `json:"email"`
|
||
|
Partner string `json:"partner"`
|
||
|
PartnerID string `json:"partnerId"`
|
||
|
Password string `json:"password"`
|
||
|
SecretInput string `json:"secret"`
|
||
|
ReferrerUserID string `json:"referrerUserId"`
|
||
|
}{
|
||
|
FullName: "testuser" + strconv.Itoa(i),
|
||
|
ShortName: "test",
|
||
|
Email: "user@test" + strconv.Itoa(i),
|
||
|
Partner: test.Partner,
|
||
|
Password: "abc123",
|
||
|
}
|
||
|
|
||
|
jsonBody, err := json.Marshal(registerData)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
result, err := http.Post("http://"+planet.Satellites[0].API.Console.Listener.Addr().String()+"/api/v0/auth/register", "application/json", bytes.NewBuffer(jsonBody))
|
||
|
require.NoError(t, err)
|
||
|
require.Equal(t, http.StatusOK, result.StatusCode)
|
||
|
|
||
|
defer func() {
|
||
|
err = result.Body.Close()
|
||
|
require.NoError(t, err)
|
||
|
}()
|
||
|
|
||
|
body, err := ioutil.ReadAll(result.Body)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
var userID uuid.UUID
|
||
|
err = json.Unmarshal(body, &userID)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
user, err := planet.Satellites[0].API.Console.Service.GetUser(ctx, userID)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
if test.ValidPartner {
|
||
|
info, err := planet.Satellites[0].API.Marketing.PartnersService.ByName(ctx, test.Partner)
|
||
|
require.NoError(t, err)
|
||
|
require.Equal(t, info.UUID, user.PartnerID)
|
||
|
} else {
|
||
|
require.Equal(t, uuid.UUID{}, user.PartnerID)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|