func TestAcsWsUrl(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() taskEngine := engine.NewMockTaskEngine(ctrl) taskEngine.EXPECT().Version().Return("Docker version result", nil) wsurl := handler.AcsWsUrl("http://endpoint.tld", "myCluster", "myContainerInstance", taskEngine) parsed, err := url.Parse(wsurl) if err != nil { t.Fatal("Should be able to parse url") } if parsed.Path != "/ws" { t.Fatal("Wrong path") } if parsed.Query().Get("clusterArn") != "myCluster" { t.Fatal("Wrong cluster") } if parsed.Query().Get("containerInstanceArn") != "myContainerInstance" { t.Fatal("Wrong cluster") } if parsed.Query().Get("agentVersion") != version.Version { t.Fatal("Wrong cluster") } if parsed.Query().Get("agentHash") != version.GitHashString() { t.Fatal("Wrong cluster") } if parsed.Query().Get("dockerVersion") != "Docker version result" { t.Fatal("Wrong docker version") } }
// AcsWsUrl returns the websocket url for ACS given the endpoint. func AcsWsUrl(endpoint, cluster, containerInstanceArn string, taskEngine engine.TaskEngine) string { acsUrl := endpoint if endpoint[len(endpoint)-1] != '/' { acsUrl += "/" } acsUrl += "ws" query := url.Values{} query.Set("clusterArn", cluster) query.Set("containerInstanceArn", containerInstanceArn) query.Set("agentHash", version.GitHashString()) query.Set("agentVersion", version.Version) query.Set("seqNum", strconv.FormatInt(SequenceNumber.Get(), 10)) if dockerVersion, err := taskEngine.Version(); err == nil { query.Set("dockerVersion", dockerVersion) } return acsUrl + "?" + query.Encode() }
// acsWsURL returns the websocket url for ACS given the endpoint func acsWsURL(endpoint, cluster, containerInstanceArn string, taskEngine engine.TaskEngine, acsSessionState sessionState) string { acsUrl := endpoint if endpoint[len(endpoint)-1] != '/' { acsUrl += "/" } acsUrl += "ws" query := url.Values{} query.Set("clusterArn", cluster) query.Set("containerInstanceArn", containerInstanceArn) query.Set("agentHash", version.GitHashString()) query.Set("agentVersion", version.Version) query.Set("seqNum", "1") if dockerVersion, err := taskEngine.Version(); err == nil { query.Set("dockerVersion", dockerVersion) } query.Set(sendCredentialsURLParameterName, acsSessionState.getSendCredentialsURLParameter()) return acsUrl + "?" + query.Encode() }
func TestAcsWsUrl(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() taskEngine := engine.NewMockTaskEngine(ctrl) taskEngine.EXPECT().Version().Return("Docker version result", nil) wsurl := acsWsURL(acsURL, "myCluster", "myContainerInstance", taskEngine, &mockSession{}) parsed, err := url.Parse(wsurl) if err != nil { t.Fatal("Should be able to parse url") } if parsed.Path != "/ws" { t.Fatal("Wrong path") } if parsed.Query().Get("clusterArn") != "myCluster" { t.Fatal("Wrong cluster") } if parsed.Query().Get("containerInstanceArn") != "myContainerInstance" { t.Fatal("Wrong cluster") } if parsed.Query().Get("agentVersion") != version.Version { t.Fatal("Wrong cluster") } if parsed.Query().Get("agentHash") != version.GitHashString() { t.Fatal("Wrong cluster") } if parsed.Query().Get("dockerVersion") != "Docker version result" { t.Fatal("Wrong docker version") } if parsed.Query().Get(sendCredentialsURLParameterName) != "true" { t.Fatalf("Wrong value set for: %s", sendCredentialsURLParameterName) } if parsed.Query().Get("seqNum") != "1" { t.Fatal("Wrong seqNum") } }