@@ -102,6 +102,61 @@ func TestPathConfig(t *testing.T) {
102102 })
103103 })
104104
105+ t .Run ("write, read, delete and read config with show config token" , func (t * testing.T ) {
106+ httpClient , url := getClient (t , "unit" )
107+ ctx := gitlab .HttpClientNewContext (context .Background (), httpClient )
108+
109+ b , l , events , err := getBackendWithFlagsWithEvents (ctx , gitlab.Flags {ShowConfigToken : true })
110+ require .NoError (t , err )
111+
112+ resp , err := b .HandleRequest (ctx , & logical.Request {
113+ Operation : logical .UpdateOperation ,
114+ Path : fmt .Sprintf ("%s/%s" , gitlab .PathConfigStorage , gitlab .DefaultConfigName ), Storage : l ,
115+ Data : map [string ]any {
116+ "token" : "glpat-secret-random-token" ,
117+ "base_url" : url ,
118+ "type" : gitlab .TypeSelfManaged .String (),
119+ },
120+ })
121+
122+ require .NoError (t , err )
123+ require .NotNil (t , resp )
124+ require .NoError (t , resp .Error ())
125+
126+ resp , err = b .HandleRequest (ctx , & logical.Request {
127+ Operation : logical .ReadOperation ,
128+ Path : fmt .Sprintf ("%s/%s" , gitlab .PathConfigStorage , gitlab .DefaultConfigName ), Storage : l ,
129+ })
130+
131+ require .NoError (t , err )
132+ require .NotNil (t , resp )
133+ require .NoError (t , resp .Error ())
134+ assert .NotEmpty (t , resp .Data ["token_sha1_hash" ])
135+ assert .NotEmpty (t , resp .Data ["base_url" ])
136+ require .Len (t , events .eventsProcessed , 1 )
137+ require .NotEmpty (t , resp .Data ["token" ])
138+
139+ resp , err = b .HandleRequest (ctx , & logical.Request {
140+ Operation : logical .DeleteOperation ,
141+ Path : fmt .Sprintf ("%s/%s" , gitlab .PathConfigStorage , gitlab .DefaultConfigName ), Storage : l ,
142+ })
143+ require .NoError (t , err )
144+ require .Nil (t , resp )
145+ require .Len (t , events .eventsProcessed , 2 )
146+
147+ resp , err = b .HandleRequest (ctx , & logical.Request {
148+ Operation : logical .ReadOperation ,
149+ Path : fmt .Sprintf ("%s/%s" , gitlab .PathConfigStorage , gitlab .DefaultConfigName ), Storage : l ,
150+ })
151+ require .NoError (t , err )
152+ require .NotNil (t , resp )
153+ require .Error (t , resp .Error ())
154+
155+ events .expectEvents (t , []expectedEvent {
156+ {eventType : "gitlab/config-write" },
157+ {eventType : "gitlab/config-delete" },
158+ })
159+ })
105160 t .Run ("invalid token" , func (t * testing.T ) {
106161 httpClient , url := getClient (t , "unit" )
107162 ctx := gitlab .HttpClientNewContext (context .Background (), httpClient )
0 commit comments