mirror of
https://github.com/halejohn/Cloudreve.git
synced 2026-01-26 09:34:57 +08:00
Test: new modifications in filesystem pkg
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/conf"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
@@ -573,7 +574,7 @@ func sysError(err error) *RespError {
|
||||
|
||||
func (client *Client) request(ctx context.Context, method string, url string, body io.Reader, option ...request.Option) (string, *RespError) {
|
||||
// 获取凭证
|
||||
err := client.UpdateCredential(ctx)
|
||||
err := client.UpdateCredential(ctx, conf.SystemConfig.Mode == "slave")
|
||||
if err != nil {
|
||||
return "", sysError(err)
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package onedrive
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/cluster"
|
||||
|
||||
model "github.com/cloudreve/Cloudreve/v3/models"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/request"
|
||||
@@ -28,7 +29,8 @@ type Client struct {
|
||||
ClientSecret string
|
||||
Redirect string
|
||||
|
||||
Request request.Client
|
||||
Request request.Client
|
||||
ClusterController cluster.Controller
|
||||
}
|
||||
|
||||
// Endpoints OneDrive客户端相关设置
|
||||
@@ -51,11 +53,12 @@ func NewClient(policy *model.Policy) (*Client, error) {
|
||||
Credential: &Credential{
|
||||
RefreshToken: policy.AccessKey,
|
||||
},
|
||||
Policy: policy,
|
||||
ClientID: policy.BucketName,
|
||||
ClientSecret: policy.SecretKey,
|
||||
Redirect: policy.OptionsSerialized.OdRedirect,
|
||||
Request: request.NewClient(),
|
||||
Policy: policy,
|
||||
ClientID: policy.BucketName,
|
||||
ClientSecret: policy.SecretKey,
|
||||
Redirect: policy.OptionsSerialized.OdRedirect,
|
||||
Request: request.NewClient(),
|
||||
ClusterController: cluster.DefaultController,
|
||||
}
|
||||
|
||||
if client.Endpoints.DriverResource == "" {
|
||||
|
||||
@@ -3,7 +3,6 @@ package onedrive
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/cluster"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"net/url"
|
||||
@@ -11,7 +10,6 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/cache"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/conf"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/request"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/util"
|
||||
)
|
||||
@@ -125,8 +123,8 @@ func (client *Client) ObtainToken(ctx context.Context, opts ...Option) (*Credent
|
||||
}
|
||||
|
||||
// UpdateCredential 更新凭证,并检查有效期
|
||||
func (client *Client) UpdateCredential(ctx context.Context) error {
|
||||
if conf.SystemConfig.Mode == "slave" {
|
||||
func (client *Client) UpdateCredential(ctx context.Context, isSlave bool) error {
|
||||
if isSlave {
|
||||
return client.fetchCredentialFromMaster(ctx)
|
||||
}
|
||||
|
||||
@@ -179,7 +177,7 @@ func (client *Client) UpdateCredential(ctx context.Context) error {
|
||||
|
||||
// UpdateCredential 更新凭证,并检查有效期
|
||||
func (client *Client) fetchCredentialFromMaster(ctx context.Context) error {
|
||||
res, err := cluster.DefaultController.GetOneDriveToken(client.Policy.MasterID, client.Policy.ID)
|
||||
res, err := client.ClusterController.GetOneDriveToken(client.Policy.MasterID, client.Policy.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"errors"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/mocks/controllermock"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
@@ -269,10 +270,10 @@ func TestClient_UpdateCredential(t *testing.T) {
|
||||
|
||||
// 无有效的RefreshToken
|
||||
{
|
||||
err := client.UpdateCredential(context.Background())
|
||||
err := client.UpdateCredential(context.Background(), false)
|
||||
asserts.Equal(ErrInvalidRefreshToken, err)
|
||||
client.Credential = nil
|
||||
err = client.UpdateCredential(context.Background())
|
||||
err = client.UpdateCredential(context.Background(), false)
|
||||
asserts.Equal(ErrInvalidRefreshToken, err)
|
||||
}
|
||||
|
||||
@@ -299,7 +300,7 @@ func TestClient_UpdateCredential(t *testing.T) {
|
||||
mock.ExpectBegin()
|
||||
mock.ExpectExec("UPDATE(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectCommit()
|
||||
err := client.UpdateCredential(context.Background())
|
||||
err := client.UpdateCredential(context.Background(), false)
|
||||
clientMock.AssertExpectations(t)
|
||||
asserts.NoError(mock.ExpectationsWereMet())
|
||||
asserts.NoError(err)
|
||||
@@ -331,7 +332,7 @@ func TestClient_UpdateCredential(t *testing.T) {
|
||||
client.Credential = &Credential{
|
||||
RefreshToken: "old_refresh_token",
|
||||
}
|
||||
err := client.UpdateCredential(context.Background())
|
||||
err := client.UpdateCredential(context.Background(), false)
|
||||
clientMock.AssertExpectations(t)
|
||||
asserts.Error(err)
|
||||
}
|
||||
@@ -346,7 +347,7 @@ func TestClient_UpdateCredential(t *testing.T) {
|
||||
client.Credential = &Credential{
|
||||
RefreshToken: "old_refresh_token",
|
||||
}
|
||||
err := client.UpdateCredential(context.Background())
|
||||
err := client.UpdateCredential(context.Background(), false)
|
||||
asserts.NoError(err)
|
||||
asserts.Equal("AccessToken", client.Credential.AccessToken)
|
||||
asserts.Equal("RefreshToken", client.Credential.RefreshToken)
|
||||
@@ -359,8 +360,27 @@ func TestClient_UpdateCredential(t *testing.T) {
|
||||
AccessToken: "AccessToken2",
|
||||
ExpiresIn: time.Now().Add(time.Duration(10) * time.Second).Unix(),
|
||||
}
|
||||
err := client.UpdateCredential(context.Background())
|
||||
err := client.UpdateCredential(context.Background(), false)
|
||||
asserts.NoError(err)
|
||||
asserts.Equal("AccessToken2", client.Credential.AccessToken)
|
||||
}
|
||||
|
||||
// slave failed
|
||||
{
|
||||
mockController := &controllermock.SlaveControllerMock{}
|
||||
mockController.On("GetOneDriveToken", testMock.Anything, testMock.Anything).Return("", errors.New("error"))
|
||||
client.ClusterController = mockController
|
||||
err := client.UpdateCredential(context.Background(), true)
|
||||
asserts.Error(err)
|
||||
}
|
||||
|
||||
// slave success
|
||||
{
|
||||
mockController := &controllermock.SlaveControllerMock{}
|
||||
mockController.On("GetOneDriveToken", testMock.Anything, testMock.Anything).Return("AccessToken3", nil)
|
||||
client.ClusterController = mockController
|
||||
err := client.UpdateCredential(context.Background(), true)
|
||||
asserts.NoError(err)
|
||||
asserts.Equal("AccessToken3", client.Credential.AccessToken)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ func TestHandler_Source(t *testing.T) {
|
||||
// 解析失败 自定义CDN
|
||||
{
|
||||
handler := Driver{
|
||||
Policy: &model.Policy{Server: "/", BaseURL: string(0x7f)},
|
||||
Policy: &model.Policy{Server: "/", BaseURL: string([]byte{0x7f})},
|
||||
AuthInstance: auth.HMACAuth{},
|
||||
}
|
||||
file := model.File{
|
||||
|
||||
Reference in New Issue
Block a user