github.com/upyun/upx@v0.4.7-0.20240419023638-b184a7cb7c10/basic_test.go (about)

     1  package upx
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strings"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestLoginAndLogout(t *testing.T) {
    13  
    14  	b, err := Upx("login", BUCKET_1, USERNAME, PASSWORD)
    15  	assert.NoError(t, err)
    16  	assert.Equal(t, string(b), fmt.Sprintf("Welcome to %s, %s!\n", BUCKET_1, USERNAME))
    17  
    18  	b, err = Upx("login", BUCKET_2, USERNAME, PASSWORD)
    19  	assert.NoError(t, err)
    20  	assert.Equal(t, string(b), fmt.Sprintf("Welcome to %s, %s!\n", BUCKET_2, USERNAME))
    21  
    22  	b, err = Upx("logout")
    23  	assert.NoError(t, err)
    24  	assert.Equal(t, string(b), fmt.Sprintf("Goodbye %s/%s ~~\n", USERNAME, BUCKET_2))
    25  
    26  	b, err = Upx("logout")
    27  	assert.NoError(t, err)
    28  	assert.Equal(t, string(b), fmt.Sprintf("Goodbye %s/%s ~~\n", USERNAME, BUCKET_1))
    29  }
    30  
    31  func TestGetInfo(t *testing.T) {
    32  	SetUp()
    33  	defer TearDown()
    34  	pwd, _ := Upx("pwd")
    35  	b, err := Upx("info")
    36  	assert.NoError(t, err)
    37  	s := []string{
    38  		"ServiceName:   " + BUCKET_1,
    39  		"Operator:      " + USERNAME,
    40  		"CurrentDir:    " + strings.TrimRight(string(pwd), "\n"),
    41  		"Usage:         ",
    42  	}
    43  	assert.Equal(t, strings.HasPrefix(string(b), strings.Join(s, "\n")), true)
    44  }
    45  
    46  func TestSessionsAndSwitch(t *testing.T) {
    47  	SetUp()
    48  	defer TearDown()
    49  	b, err := Upx("sessions")
    50  	assert.NoError(t, err)
    51  	assert.Equal(t, string(b), fmt.Sprintf("> %s\n", BUCKET_1))
    52  
    53  	Upx("login", BUCKET_2, USERNAME, PASSWORD)
    54  	b, err = Upx("sessions")
    55  	assert.NoError(t, err)
    56  	assert.Equal(t, string(b), fmt.Sprintf("  %s\n> %s\n", BUCKET_1, BUCKET_2))
    57  
    58  	Upx("switch", BUCKET_1)
    59  	b, err = Upx("sessions")
    60  	assert.NoError(t, err)
    61  	assert.Equal(t, string(b), fmt.Sprintf("> %s\n  %s\n", BUCKET_1, BUCKET_2))
    62  
    63  	pwd, _ := Upx("pwd")
    64  	b, err = Upx("info")
    65  	assert.NoError(t, err)
    66  	s := []string{
    67  		"ServiceName:   " + BUCKET_1,
    68  		"Operator:      " + USERNAME,
    69  		"CurrentDir:    " + strings.TrimRight(string(pwd), "\n"),
    70  		"Usage:         ",
    71  	}
    72  	assert.Equal(t, strings.HasPrefix(string(b), strings.Join(s, "\n")), true)
    73  }
    74  
    75  // TODO
    76  func TestAuth(t *testing.T) {
    77  }
    78  
    79  func TestPurge(t *testing.T) {
    80  	SetUp()
    81  	defer TearDown()
    82  	b, err := Upx("purge", fmt.Sprintf("http://%s.b0.upaiyun.com/test.jpg", BUCKET_1))
    83  	assert.NoError(t, err)
    84  	assert.Equal(t, len(b), 0)
    85  
    86  	_, err = Upx("purge", "http://www.baidu.com")
    87  	if !assert.Error(t, err) {
    88  		assert.Fail(t, "purge not has return error")
    89  	}
    90  	assert.Equal(t, err.Error(), "Purge failed urls:\nhttp://www.baidu.com\ntoo many fails\n")
    91  
    92  	fd, _ := os.Create("list")
    93  	fd.WriteString(fmt.Sprintf("http://%s.b0.upaiyun.com/test.jpg\n", BUCKET_1))
    94  	fd.WriteString(fmt.Sprintf("http://%s.b0.upaiyun.com/测试.jpg\n", BUCKET_1))
    95  	fd.WriteString(fmt.Sprintf("http://%s.b0.upaiyun.com/%%E5%%8F%%88%%E6%%8B%%8D%%E4%%BA%%91.jpg\n", BUCKET_1))
    96  	fd.Close()
    97  
    98  	b, err = Upx("purge", "--list", "list")
    99  	assert.NoError(t, err)
   100  	assert.Equal(t, len(b), 0)
   101  }