github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/externals/services_test.go (about)

     1  package externals
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	libkb "github.com/keybase/client/go/libkb"
     8  	"github.com/keybase/client/go/protocol/keybase1"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestLoadParamServices(t *testing.T) {
    13  	tc := setupTest(t, "TestLoadParamServices", 1)
    14  	defer tc.Cleanup()
    15  
    16  	m := libkb.NewMetaContextForTest(tc)
    17  
    18  	proofServices := newProofServices(tc.G)
    19  	entry, err := tc.G.GetParamProofStore().GetLatestEntry(m)
    20  	require.NoError(t, err)
    21  
    22  	config, err := proofServices.parseServerConfig(m, entry)
    23  	require.NoError(t, err)
    24  	require.NotNil(t, config.ProofConfigs)
    25  	require.NotNil(t, config.DisplayConfigs)
    26  	require.NotZero(t, len(config.ProofConfigs))
    27  	require.NotZero(t, len(config.DisplayConfigs))
    28  
    29  	// assert that we parse the dev gubble configuration correctly
    30  	var gubbleConf *GenericSocialProofConfig
    31  	for _, config := range config.ProofConfigs {
    32  		if config.Domain == "gubble.social" {
    33  			gubbleConf = config
    34  			break
    35  		}
    36  	}
    37  	t.Logf("Found config %+v", gubbleConf)
    38  	require.NotNil(t, gubbleConf)
    39  	require.True(t, gubbleConf.Version >= 1)
    40  	require.Equal(t, "gubble.social", gubbleConf.Domain)
    41  	require.Equal(t, keybase1.ParamProofUsernameConfig{
    42  		Re:  "^([a-zA-Z0-9_])+$",
    43  		Min: 2,
    44  		Max: 20,
    45  	}, gubbleConf.UsernameConfig)
    46  	require.NotZero(t, len(gubbleConf.BrandColor))
    47  	require.NotZero(t, len(gubbleConf.DisplayName))
    48  	require.NotZero(t, len(gubbleConf.Description))
    49  
    50  	serverURI, err := tc.G.Env.GetServerURI()
    51  	require.NoError(t, err)
    52  
    53  	gubbleRoot := fmt.Sprintf("%s/_/gubble_universe/gubble_social", serverURI)
    54  	gubbleAPIRoot := fmt.Sprintf("%s/_/api/1.0/gubble_universe/gubble_social", serverURI)
    55  	require.Equal(t, fmt.Sprintf("%s%s", gubbleRoot, "/%{username}"), gubbleConf.ProfileUrl)
    56  	require.Equal(t, fmt.Sprintf("%s%s", gubbleRoot, "?kb_username=%{kb_username}&username=%{username}&sig_hash=%{sig_hash}&kb_ua=%{kb_ua}"), gubbleConf.PrefillUrl)
    57  	require.Equal(t, fmt.Sprintf("%s%s", gubbleAPIRoot, "/%{username}/proofs.json"), gubbleConf.CheckUrl)
    58  
    59  	require.Equal(t, []keybase1.SelectorEntry{
    60  		{
    61  			IsKey: true,
    62  			Key:   "res",
    63  		},
    64  		{
    65  			IsKey: true,
    66  			Key:   "keybase_proofs",
    67  		},
    68  	}, gubbleConf.CheckPath)
    69  
    70  	require.Equal(t, []keybase1.SelectorEntry{
    71  		{
    72  			IsKey: true,
    73  			Key:   "res",
    74  		},
    75  		{
    76  			IsKey: true,
    77  			Key:   "avatar",
    78  		},
    79  	}, gubbleConf.AvatarPath)
    80  
    81  	foundGubble := false
    82  	foundFacebook := false
    83  	for _, config := range config.DisplayConfigs {
    84  		if config.Key == "gubble.social" {
    85  			group := "Gubble instance"
    86  			require.NotNil(t, config.Group)
    87  			require.EqualValues(t, group, *config.Group)
    88  			require.False(t, config.CreationDisabled)
    89  			foundGubble = true
    90  			if foundFacebook {
    91  				break
    92  			}
    93  		}
    94  		if config.Key == "facebook" {
    95  			require.True(t, config.CreationDisabled)
    96  			foundFacebook = true
    97  			if foundGubble {
    98  				break
    99  			}
   100  		}
   101  	}
   102  	require.True(t, foundGubble && foundFacebook)
   103  }