1// Copyright (C) 2020 Storj Labs, Inc.
2// See LICENSE for copying information.
3
4package testsuite_test
5
6import (
7	"testing"
8
9	"github.com/stretchr/testify/require"
10
11	"storj.io/common/testcontext"
12	"storj.io/storj/private/testplanet"
13	"storj.io/uplink"
14)
15
16func TestProject_OpenProjectDialFail(t *testing.T) {
17	testplanet.Run(t, testplanet.Config{
18		SatelliteCount:   1,
19		StorageNodeCount: 0,
20		UplinkCount:      1,
21	}, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) {
22		projectInfo := planet.Uplinks[0].Projects[0]
23		access, err := uplink.RequestAccessWithPassphrase(ctx, projectInfo.Satellite.URL(), projectInfo.APIKey, "mypassphrase")
24		require.NoError(t, err)
25
26		err = planet.StopPeer(planet.Satellites[0])
27		require.NoError(t, err)
28
29		project, err := uplink.OpenProject(ctx, access)
30		require.NoError(t, err)
31		defer ctx.Check(project.Close)
32
33		_, err = project.EnsureBucket(ctx, "bucket")
34		require.Error(t, err)
35	})
36}
37
38func TestProject_OpenProjectMalformedUserAgent(t *testing.T) {
39	config := uplink.Config{
40		UserAgent: "Invalid (darwin; amd64) invalid/v7.0.6 version/2020-11-17T00:39:14Z",
41	}
42
43	ctx := testcontext.New(t)
44	defer ctx.Cleanup()
45	_, err := config.OpenProject(ctx, &uplink.Access{})
46	require.Error(t, err)
47	require.Contains(t, err.Error(), "user agent")
48}
49